高二微机专业《C语言程序设计》考试试卷
总分:100分
一、选择题(每小题3分,共36分)
1. 在C 语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A.整型常量 B.整型表达式
C.整型常量或整型表达式 D.任何类型的表达式
2. C语言中,数组名代表( )。
A.数组全部元素的值 B.数组首地址
C.数组第一个元素的值 D.数组元素的个数
3. 以下对一维整型数组a 的正确说明是( )。
A.int a(10); B.int n=10,a[n];
C.int n; D.#define SIZE 10
scanf(“%d”,&n); int a[SIZE];
int a[n];
4. 合法的数组定义是( )。
A.int a[ ]=”string”; B.int a[5]={0,1,2,3,4,5};
C.char a=”string”; D.char a[ ]={0,1,2,3,4,5};
5. 若有定义和语句:char s[10]; s=”abcd”; printf(“%s\n”,s); 则结果是( )。( _ 代表空格)
A.输出abcd B.输出a
C.输出abcd _ _ _ _ _ _ D.编译不通过
6. 有以下语句,则下面是正确的描述( )。
char x[ ]=“12345”;
char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’};
A.x数组和y数组的长度相同
B.x数组长度大于y数组长度
C.x数组长度小于y数组长度
D.x数组等价于y数组
7. 若有说明:int a[10];则对a 数组元素的正确引用是( )。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]
8. 在C 语言中,一维数组的定义方式为:类型说明符 数组名( )。
A.[整型常量表达式] B.[整型表达式]
C.[整型常量] 或[整型表达式] D.[常量]
9. 以下能对一维数组a 进行正确初始化的语句是( )。
A.int a[10]=(0,0,0,0,0); B.int a[10]={};
C.int a[]={0}; D.int a[10]=”10*1”;
10. 对以下说明语句的正确理解是( )。
int a[10]={6,7,8,9,10};
A.将5 个初值依次赋给a[1]至a[5]
B.将5 个初值依次赋给a[0]至a[4]
C.将5 个初值依次赋给a[6]至a[10]
D.因为数组长度与初值的个数不相同,所以此语句不正确
11. 若已定义数组:float a[8];则下列对数组元素引用正确的是( )。
A. a[0] =1; B. a[8] = a[0];
C. a=1; D. a[3.5]=1;
12.下列程序执行后输出结果是( )。
int main( )
{
int i,j,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<=i;j++)a[i][j]=i*j;
printf(“%d,%d\n”,a[1][2],a[2][1]);
return 0;
}
A.2,2 B. 不定值,2 C. 2,1 D. 2,0
注:将选择题答案填入下面表格中,否则不得分!
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
答案 | ||||||||||||
二、阅读程序,写出运行结果。(每小题6分,共24分)
第13题结果:
13.#include<stdio.h>
int main()
{
int i,x[3][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)printf("%5d",x[1][i]);
return 0;
}
14.
#include<stdio.h>
第14题结果:
void main(){
int i,j,a[][3]={10,12,13,14,15,16,17,18,19},s;
s=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(i==j)
{
s=s+a[i][j];
}
}
}
printf("s=%d\n",s);
}
15.
第15题结果:
#include<stdio.h>void main()
{
int i,a[10]={1,1};
for(i=2;i<10;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<10;i++)
{
printf("%4d",a[i]);
if((i+1)%5==0)printf("\n");
}
}
16.
#include<stdio.h>
main()
{
int i,j,m,p,a[4][4]={0,6,9,3,11,8,3,7,1,5,2,0,13,9,15,3};
for(i=0;i<4;i++)
第16题结果:
{ m=a[i][0];
p=0;
for(j=1;j<4;j++)
{
if(m<a[i][j])
{
m=a[i][j];
p=j;
}
}
printf("%d\t%d\n",m,p);
}
}
三、程序填空。(每小题20printf是不是c语句分,共40分)
17.对数组进行降序排列,将下列程序补充完整。
(要求:2,3处需用含有N的表达式填充,算法应尽量优化。)
#include<stdio.h>
#define N 8
void main()
{
int a[N];
第17题:
1.
2.
3.
4.
int i,j,t; printf("排序前:\n");
for(i=0;i<N;i++)
scanf("%d",【1】);
printf("排序前:\n");
for(i=0;i<N;i++)
printf("%d\t",a[i]);
printf("\n");
for(i=0;【2】;i++)
{
for(j=0;【3】;j++)
if(【4】)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=a[j];
}
}
printf("排序后:\n");
for(i=0;i<N;i++)
printf("%d\t",a[i]);
}
18.求三个整数的最大公约数,将下列程序补充完整。(算法是先求两个数的最大公约数,再用前两个数的最大公约数和第三个数求最大公约数,结果即为三个数的最大公约数。)
第18题:
1.
2.
3.
4.
#include<stdio.h>void main()
{
int x,y,z,m;
printf("输入三个数:");
scanf("%d%d%d",&x,&y,&z);
while((m=x%y)!=0)
{
【1】;
【2】;
}
while((m=【3】)!=0)
{
y=z;
z=m;
}
printf("这三个数的最大公约数为:%d\n",【4】);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论