C语言程序设计等级考试习题汇编2
数组
一、 判断题
1. 数组a[5]表示a数组有5个元素,下标从1到5。F 2. 数组的大小不依赖于程序运行过程中变量的值。T 3. 在C中,变量和数组都必须先定义,然后使用。T 4. int new[8]={0,0,0,0,0,0,0,0}等价于int new[8]={0*8}。F
5. int a[3][2]={{1,1,1},{2,2,2},{3,3,3}}等价于int a[3][2]={{1},{2},{3}}。F
6. 用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。T 7. 数组的名称其实是数组在内存中的首地址。T
8. 如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,多余的数
组元素会被自动初始化为最后一个给定元素的值。F
9. 当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改。T 10. C语言不检查数组的下标是否越界。T
二、 单项填空题
1. 若数组名作实参而指针变量作形参,函数调用实参传给形参的是 (D)
A.数组的长度
B.数组第一个元素的值
C.数组所有元素的值 D.数组第一个元素的地址
2. 已有定义:char a[]=\以下叙述中正确的是 (C)
A.数组a和b的长度相同
B.a数组长度小于b数组长度 D.上述说法都不对
C.a数组长度大于b数组长度
3. 以下能正确定义一维数组的选项是(B)
A.int a[5]={0,1,2,3,4,5} C.char a={'A','B','C'}
B.char a[]={0,1,2,3,4,5} D.int a[5]=\
4. 有以下语句:int b;char c[10];,则正确的输入语句是 (B)
A.scanf(\C.scanf(\
B. scanf(\ D.scanf(\
5. 已有定义:char a[]=\以下叙述中正确的是 (C)
A.数组a和b的长度相同
B.a数组长度小于b数组长度 D.上述说法都不对
C.a数组长度大于b数组长度
6. 以下语句或语句组中,能正确进行字符串赋值的是 (C )
— 1 —
A.char *sp;*sp=\ C.char s[10];*s=\ 7. 有以下程序
main()
{char s[]=\ p=s;
B.char s[10];s=\ D.char *sp=\
printf(\ }
程序运行后的输出结果是(A) A.15
B.16
C.12
D.59
8. 有以下程序
main()
{int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j; for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf(\
for(j=_____;j<4;j++)printf(\ printf(\ } }
若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16
则在程序下划线处应填入的是 (B) A.i-1
B.i
C. i+1
D.4-i
9. 下面程序(C) (每行程序前面的数字表示行号)
1 main( ) 2 {
3 float a[10]={0,0}; 4 int I;
— 2 —
5 for (i=0;i<3;i++) scanf(“%d”,&a[i]); 6 for (i=1;i<10;i++) a[0]=a[0]+a{i}; 7 printf(“%f\\n”,a[0]); 8 }
A.没有错误
B.第3行有错误观点 C.第5行有错误 D.第7行有错误
10. 若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为(D)..(假设a[0][0]
位于数组的第一个位置上)。 A.i*m+j
B.j*m+I
C.i*m+j-1
D.i*m+j+1
11. 若有以下程序段:
······
int a[]={4,0,2,3,1},I,j,t; for (i=1;i<5;i++) {t=a[i];j=i-1;
while (j>=0 && t>a[j]) {a[j+1]=a[j];j--;} a[j+1]=t; ······ 则此程序的功能是( B) A.对数组a进行插入排序(升序) C.对数组a进行选择排序(升序)
B.对数组a进行插入排序(降序) D.对数组a进行选择排序(降序)
三、程序填空题
题1
以下是使用数组来处理并打印斐波那契数列的前二十项的程序。打印时,每行打印10个数字。斐波那契数列的格式为:当n=0时,f[0]=0,当n=1时,f[1]=1,当n>1时,f[n]=f[n-1]+f[n-2]。 【程序】 # include,stdio.h. main()
{ int___(1)____ ; int line=0,j; fbnq[0]=0; fbnq[1]=1;
CBBAD — 3 —
for (j=___(2)____;j<20;j++) ___(3)____; for (j=0.j<20;j++); { print (%d,”fbqn[j]); ___(4)____; if (line==10) | {___(5)____ printf(“\\n”); } } return (1); }
1.A. Fbnq
B. Fbnq[1 to 20]
C. Fbnq[20]
D. Fbnq D.-1
2.A.1 B.2 C.0 3.A.fbnq[j]=fbnq[j-1]+fbnq[j] C. fbnq[j]=fbnq[0]+fbnq[1] 4.A. line++ 5.A. line++ 题2.
B.line-- B.line--
B. fbnq[j]=fbnq[j-1]+fbnq[j-2] D. fbnq[j+1]=fbnq[j-1]+fbnq[j] C.line=line-1 C.line=line-1
D.line=0 D.line=0
有已排序好的字符串a,下面的程序是将字符串s中的每个字符升序的规律插入到a中,请BB 选择填空。 【程序】 # include
{char a [20 ]=”cehiknqtw”; char s [ ]= “fbla”; int i,k,j;
for (k = 0;s [k]>!=’\\0’);k++) { j=0;
while (k = 0;s [k]>=a [j]&&a[j]!=’\\0’) j++;
— 4 —
相关推荐: