一 单项选择题(每题2分,共44分) 1 以下叙述正确的是__C _。
A C 程序基本组成单位是语句
B
C 程序每一行只能写一个语句 C 简单C 语句必须以分号作为结束符
D 注释语句可以嵌套 2 一个C 语言程序是从_B __开始执行的。
A 程序中第一个函数
B 名为main 的函数
C 包含文件(头文件)的第一个函数
D 程序中的第一个语句 3 请选出合法的C 语言赋值语句_B __。
A a=b=58
B i++;
C a=58,b=58
D k=int(a+b); 4 下面标识符中,合法的用户标识符是 _B __。
A 1abc
B include
C a-b-c123
D char 5 以下所列的C 语言整形常量中,正确的是_A __。
A 0x10
B 0976
C 076L
D 01ff 6 C 语言中下列运算符的操作数必须为整型的是_A __。
A %
B ++
C /
D = 7 设a 和b 均为int 型变量,则执行以下语句后的输出为_B __。
int a=20; int b=3; printf("%d\n ",a+=(b%=2));
A 20
B 21
C 0
D 23 8 已知int i;,则执行语句 i=2.6;后,i 的值为_A __。
A 2
B 3
C 2.6
D 不确定 9 以下合法的字符常量为_D __。
A 'ab '
B '\482'
C '\'
D '\xaf ' 10 若y 为int 型变量,则执行以下语句后,y 的值是 _C __。
y=8; y+=y-=y*y;
A 64
B –56
C –112
D –48 11 以下合法的浮点型常量是_D __。
A e-3
B 1.5e+2.4
C 3.14e+2L
D 3.14 e +5
12 设int 数据占用两个字节,float 数据占用四个字节,double 数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为__A _。 printf("%d ",sizeof(a*b)+2/5);
A 4
B 8
C 6
D 7
13 设int 型占2个字节,且int i=-2;,则语句printf("%u ",i);的输出结果为_C __。
A 0
B -2
C 65534
D 65535 14 若x 、y 、z 均为整型常量,且a=100,则执行下列语句后的z 值为_A _。
x=a++; y=--a; z=x+y-a--;
A 100
B 400
C 200
D 300 15 若有以下定义和语句:int u=010,v=0x10,w=10,printf("%d,%d,%d\n ",u,v,w);,则输出结果是_A __。
A 8,16,10
B 10,10,10
C 8,8,10
D 8,10,10 16 设x 、y 为int 型变量,则执行下列语句后,y 的值是__A _。
x=5; y=x++*x++; y=--y*--y;
A 529
B 2401
C 1209
D 625
17 假设在程序中a,b,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式
abc
1
的表达式是__D __。
A 1/a*b*c
B 1/(a*b*c)
C 1/a/b/(float)c
D 1.0/a/b/c
18 若有定义:int a=8,b=5,c;char d='A';,则执行语句c=a/b+d%a+0.5;后c的值为_A__。
A 2
B 2.5
C 3
D 类型不一致,无法计算,编译出错
19 在有以下程序:
main()
{ int i=10,j=1;
i=i+j++;
printf("%d,%d,%d\n",i++,++j,i);
}
执行后输出结果是_C_。
A 12,3,11
B 12,2,11
C 11,3,11
D 12,3,12
20 已知int i=65;,则putchar(i);printf("%d",i);printf("%c",i);的输出结果为_A__。
A A,65,A
B 65,65,A
C A,A,65
D A,A,A
21 已知int y,a,i=1;则语句printf("%d,%d",-i++,(y=a=3.6*3));的输出结果为_A__。
A -1,10
B -2,1.8
C 0,3
D 1,18
22 有以下程序:
main()
{ char a,b,c,d;
a='\'; b='\xbc';
c='\0xab'; d='\023';
printf("%c%c%c%c\n",a,b,c,d);
}
编译时出现错误,以下叙述中正确的是_A__。
A 程序中只有a='\';语句不正确
B b='\xbc';语句不正确
C d='\023';语句不正确
D a='\';和c='\0xab';语句都不正确
二填空题(第1题2分,其余每题3分,共56分)
1 设x为int型变量,请写出描述“x是偶数”的表达式是_x%2==0__。
2 已知scanf("a=%d,b=%d,c=%d",&a,&b,&c);,若从键盘输入2、3、4三个数分别作为变
量a、b、c的值则正确的输入形式是_a=2,b=3,c=4__。
3 设有语句int a=3;,则执行了语句 a+=a-=a*a后,变量a的值是_-12__。
4 以下程序的输出结果是_10 6__。
main()
{ int a=-10,b=-3;
printf("%d\n",-a++);
printf("%d\n",-a+b);
}
5 以下程序的输出结果是_242__。
main()
{ char c;
c=0362;
printf("%d\n",c);
}
6 以下程序段(n所赋的是八进制数)执行后输出结果是32767_32767__。
int m=32767,n=032767; printf("%d,%o\n",m,n);
7 字符串"\\name\\\101ddress\b\xaf"的长度为:_15__。
8有以下程序段:
int m=0,n=0; char c='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:10A10<回车>,则输出结果是_10,A,10__。
9 以下程序的输出结果是___。
main()
{ printf("%d,%o,%x\n",10,10,10);
printf("%d,%d,%d\n",10,010,0x10);
printf("%d,%x\n",012,012);
}
10 设a、b、c为整形变量,且a=2、b=3、c=4,则执行完语句 a*=16+(b++)-(++c);之后,
变量a的值为_28_。
11 以下程序的输出结果为__12_。
main()
{ int x=023;
printf("%x\n",--x);
}
12 以下程序的结果为___。
main()
{ int a=2,b=3,c,d;
c=(a++)+(a++)+(a++);
d=(++b)+(++b)+(++b);
printf("a=%d c=%d\n",a,c);
printf("b=%d d=%d\n",a,d);
}
13 以下程序
main()
{ char ch1,ch2,ch3;
scanf("%c%c%c",&ch1,&ch2,&ch3);
printf("%c%c%c%c%c",ch1,'#',ch2,'#',ch3);
}
当输入ABC时运行结果为【1】,当输入A BC时运行结果为【2】。
14 若有定义:float x;,以下程序段的输出结果是___。
x=5.16894;
printf("%f\n",(int)(x*1000+0.5)/(float)1000);
15 以下程序的功能是:输入一个小写字母,输出对应的大写字母,将程序补充完整。
main()
{ char ch;
【1】 /* 从键盘输入一个小写字母 */
【2】 /* 将该字母转换为大写字母 */
【3】 /* 输出转换后的结果 */
}
16 当运行以下程序时,在键盘上从第一列开始输入9876543210↙(此处↙代表回车),则
程序的输出结果是___。
main()
{ int a; float b,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
}
17 以下程序的运行结果是___。
main()
{ printf("%12.5f\n",123.1234567);
printf("%12f\n",123.1234567);
printf("%12.8d\n",12345);
printf("%12.8s\n","abcdefghij");
}
18 运行以下程序时,如从键盘上输入abcdefg↙,则输出结果是___。
main()
{ char ch1,ch2,ch3;
ch1=getchar(); ch2=getchar(); ch3=getchar();
putchar(ch1); putchar(ch2); putchar(ch3);
putchar('\n');
}
19 运行以下程序时,如从键盘上输入:a=3,b=5↙35,35.12↙abc↙后,结果是___。
main()
{ int a,b; float x,y; char c1,c2;
scanf("a=%d,b=%d",&a,&b);
scanf("%f,%e",&x,&y);
scanf("%c%c%c",&c1,&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
}
顺序、选择结构程序设计
一单项选择题(每题2分,共40分)
1 以下程序运行后的输出结果是_B_。
main()
{ int a=0,b=0;
a=10; b=20; printf("a+b=%d\n",a+b);
}
A a+b=10
B a+b=30
C 30
D 出错
2 以下程序运行后的输出结果是_C__。
main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A 3
B 3.2
C 0
D 3.07
3 以下程序运行后的输出结果是__C_。
main()
{ double d; float f; long l; int i;
i=f=l=d=20/3;
printf("%d %ld %.1f %.1f\n",i,l,f,d);
}
A 6 6 6.0 6.0
B 6 6 6.7 6.7
C 6 6 6.0 6.7
D 6 6 6.7 6.0
4 以下程序运行后的输出结果是_D__。
main()
{ int a=1,b=2;
a=a+b; b=a-b; a=a-b;
printf("%d,%d\n",a,b);
}
A 1,2
B 1,1
C 2,2
D 2,1
5 以下程序运行后的输出结果是_A__。
main()
{ int x,y,z;
x=y=2; z=3;
y=x++-1; printf("%d %d ",x,y);
y=++x-1; printf("%d %d\n",x,y);
y=z---1; printf("%d %d ",z,x);
y=--z-1; printf("%d %d\n",z,x);
}
A 3 1 4 3
B 3 1 3 3
C 3 1 4 3
D 2 1 3 2
2 4 1 4 2 4 2 2 2 4 1 2 1
3 1 2
6 以下程序运行后的输出结果是_D__。
main()
{ int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
A 2,3,3
B 2,3,2
C 2,3,1
D 2,2,1
7 以下程序运行后的输出结果是_D__。
main()
{ int x=4,y=7;
x-=y; y+=x;
printf("%d %d\n",x,y);
}
A 4 7
B -3 -3
C -3 11
D -3 4
8 以下程序运行后的输出结果是__C_。
main()
{ unsigned short a=65536; int b;
printf("%d\n",b=a);
}
A 65536
B 0
C 1
D -1
9 以下程序:
#include
main()
{ char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是__B_。
A 1267
B 1256
C 1278
D 1245
10 设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是__C_。
A 'a'&&'b'
B a&&b||c
C a&&b&&c
D a||b&&c
11 在嵌套使用if语句时,C语言规定else总是_C__。
A 和之前与其具有相同缩进位置的if配对
B 和之前与其最近的if配对
C 和之前与其最近不带else的if配对
D 和之前的第一个if配对
12 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为
_D__。
A a<>0
B !a
C a=0
D a
13 以下程序运行后的输出结果是__C_。
main()
{ int a=2,b=-1,c=2;
if(a
if(b<0) c=0;
else c++;
printf("%d\n",c);
}
A 0
B 1
C 2
D 3
14 若k是int型变量,下面的程序段的输出结果是 C 。
k=-3;
if(k<=0) printf("####")
else printf("&&&&");
A ####
B &&&&
C ####&&&&
D 有语法错误,无输出
15 以下程序运行后的输出结果是_A__。
main()
{ int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
A 0,1,2,0
B 0,0,0,3
C 1,1,2,0
D 编译有错
16 以下程序运行后的输出结果是_A__。
main()
{ int x1=1,x2=0,x3=0;
if(x1=x2+x3) printf("****");
else printf("####");
}
A ****
B 有语法错误
C ####
D 无输出结果
17 当a=1,b=3,c=5,d=4时,执行下面一行程序后,x的值是_B__。
if(a
if(c else if(a if(b else x=3; else x=6; else x=7; A 1 B 2 C 3 D 6 18 下列叙述中正确的是_D__。 A break语句只能用于switch语句 B 在switch语句中必须使用default C break语句必须与switch语句中的case配对使用 D 在switch语句中不一定使用break语句 19 若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是___。 A switch(x) B switch((int)x); { case 1.0:printf("*\n"); { case 1:printf("*\n"); case 2.0:printf("**\n"); } case 2:printf("**\n"); } C switch(a+b) D switch(a+b) { case 1:printf("*\n"); { case 1:printf("*\n"); case 2+1:printf("**\n"); } case c:printf("**\n"); } 20 以下程序运行后的输出结果是___。 #include main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; } printf("a=%d,b=%d\n",a,b); } A a=2,b=1 B a=1,b=1 C a=1,b=0 D a=2,b=2 二填空题(每题3分,共30分) 1 以下程序运行后的输出结果是___。 #include main() { int i=010 , j=10; printf("%d,%d\n",++i,j--); } 2 以下程序运行后的输出结果是___。 #include main() { printf("%d%d%d\n",'\0','\0','\0'); } 3 以下程序运行后的输出结果是___。 main() { int i=5,j,k; j=i+++i+++i++; k=(++i)+(++i)+(++i); printf("i=%5d j=%5d\nk=%5d\n",i,j,k); } 4 下面的程序运行时从键盘上输入9876543210<回车>,程序的输出结果是___。 main() { int a; float b,c; scanf("%2d%2f%2f",&a,&b,&c); printf("a=%d,b=%.1f,c=%.0f",a,b,c); } 5 下面程序的输出结果是___。 main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } 6 执行下面的语句:printf("%d\n",(a=3*5,a*4,a+5));,输出是___。 7 以下程序运行后的输出结果是___。 main() { int x=10; printf("%d,%d\n",--x,--x); } 8 为表示关系x ≥y ≥z,应使用C 语言表达式___。 9 下面的程序段的输出结果是___。 int x=3; if((x%2)?printf("**%d ",x):printf("##%d\n ",x)); 10 以下程序运行后的输出结果是___。 main() { int m=5; switch(m/2) { case 1: m++; case 2: m+=3; case 5: m+=6;break; default: m-=7; } printf("%d\n ",m); } 三 程序填空(每空5分,共30分) 1 下列程序的输出结果是16.00,请填空。 main() { int a=9,b=2; float x= 【1】 ,y=1.1,z; z=a/2+b*x/y+1/2; printf("%5.2f\n ",z); } 2 完成以下程序,输入变量a,b,c 的值,判断a,b,c 能否组成三角形,计算三角形面积。 (公式为: )。 #include 【2】 ; main() { int a,b,c; 【3】 printf("please input the value of a,b,c ") scanf("%d %d %d ", 【4】 ); if( 【5】 ) { 【6】 s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("Yes,this is a triangle!\n the area is %.2f.\n ",s); } else printf("No,this is not a triangle!\n ") } 循环结构程序设计 一 单项选择题(每题2分,共40分) 2 c b a p ) c p )(b p )(a p (p s ++=---=其中 1 以下程序中,while循环的循环次数是___。 main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } …… } A 1 B 10 C 6 D 死循环 2 以下程序的执行结果是___。 main() { int n=9; while(n>6) { n--; printf("%d",n); } } 该程序的输出结果是 A 987 B 876 C 8765 D 9876 3 以下程序段,while循环执行的次数是___。 int k=0; while(k=1) k++; A 无限次 B 有语法错 C 一次也不执行 D 执行1次 4 以下叙述正确的是___。 A do-while语句构成的循环不能用其它语句构成的循环来代替 B do-while语句构成的循环只能用break语句退出 C 用do-while语句构成的循环,在while后的表达式为非零时结束循环 D 用do-while语句构成的循环,在while后的表达式为零时结束循环 5 以下程序的执行结果是___。 main() { int a,y; a=10; y=0; do{ a+=2; y+=a; printf("a=%d y=%d\n",a,y); if(y>20) break; }while(a=14); } A a=12 y=12 B a=12 y=12 a=14 y=16 a=16 y=28 a=16 y=20 a=18 y=24 C a=12 y=12 D a=12 y=12 a=14 y=26 a=14 y=44 6 以下程序的执行结果是___。 main() { int x=23; do{ printf("%d",x--); }while(!x); } A 321 B 23 C 不输出任何内容 D 陷入死循环 7 有以下程序段,输出结果是___。 int x=3; do { printf("%d ",x-=2); }while(!(--x)); A 1 B 3 0 C 1 -2 D 死循环 8 以下程序的输出结果是___。 main() { int a=0,i; for(i=1;i<5;i++) { switch(i) { case 0: case 3: a+=2; case 1: case 2: a+=3; default:a+=5; } } printf("%d\n",a); } A 31 B 13 C 10 D 20 9 以下程序的输出结果是___。 main() { int i=0,a=0; while(i<20) { for(; ;) if((i%10)==0) break; else i--; i+=11; a+=i; } printf("%d\n",a); } A 21 B 32 C 33 D 11 10 以下循环体的执行次数是___。 main() { int i,j; for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d \n",i); } A 3 B 2 C 1 D 0 11 下列程序的输出结果是___。 main() { int i,j,m=0,n=0; for(i=0; <2;i++) for(j=0;j<2;j++) if(j>=i) m=1;n++; printf("%d\n",n); } A 4 B 2 C 1 D 0 12 下列程序的输出结果是___。 main() { int i,sum; for(i=1;i<=3;sum++) sum+=i; printf("%d\n",sum); } A 6 B 3 C 死循环 D 0 13 以下程序执行后sum的值是___。 main() { int i,sum; for(i=1;i<6;i++) sum+=i; printf("%d\n",sum); } A 15 B 14 C 不确定 D 0 14以下程序执行后的输出结果是___。 main() { int i,n=0; for(i=2;i<5;i++) { do{ if(i%3) continue; n++; } while(!i); n++; } printf("n=%d\n",n); } A n=5 B n=2 C n=3 D n=4 15 下列语句中,能正确输出26个英文字母的是___。 A for(a='a';a<='z';printf("%c",++a)); B for(a='a';a<='z';) printf("%c",a); C for(a='a';a<='z';printf("%c",a++)); D for(a='a';a<='z';printf("%c",a)); 16 以下程序执行后的输出结果是___。 main() { int x=1,y=1; while(y<=5) { if(x>=10) break; if(x%2==0) { x+=5; continue; } x-=3; y++; } printf("%d,%d",x,y); } A 6,6 B 7,6 C 10,3 D 7,3 17 以下程序执行后的输出结果是___。 main() { int a=5; while(!(a-->5)) { switch(a) { case 1:a++; case 4:a+=4; case 5:a+=5;break; default:a-=5; } } printf("%d\n",a); } A 12 B 7 C 5 D 13 18 对于下面的for循环语句,可以断定它执行___次循环。 for(x=0,y=0;(y!=67)&&(x<5);x++) printf("----"); A无限 B 不定 C 5次 D 4次19 在执行以下程序时,如果从键盘上输入:ABCdef,则输出结果为___。 #include "stdio.h" main() { char ch; while((ch=getchar())!='\n') { if(ch>='A' && ch<='Z') ch=ch+32; else if(ch>='a' && ch<='z') ch=ch-32; printf("%c",ch); } printf("\n"); } A ABCdef B abcDEF C abc D DEF 20 当执行以下程序时,___。 int a=1; do{ a=a*a; }while(!a); A 循环体将执行1次 B 循环体将执行2次 C 循环体将执行无限次 D 系统将提示有语法错误 二填空题(每空3分,共33分) 1 若输入字符串:abcde<回车>,则以下while循环体将执行___次。 while((ch=getchar())=='e') printf("*"); 2 以下while循环执行的次数是___。 k=0; while(k=10) k=k+1; 3 下列程序的输出结果是___。 main() { int x=0,y=5,z=3; while(z-->0 && ++x<5) y=y-1; printf("%d,%d,%d\n",x,y,z); } 4 下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。 main() { int a,b,c,i; a=c=0; for(i=0;i<=10;i+=2) { a+=i; _ 【1】 ; c+=b; } printf("偶数之和=%d\n 奇数之和=%d\n ",a, 【2】 ); } 5 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。 main() { int i,j; for(i=0; _ 【1】 ; i++) { j=i*10+6; if(_ 【2】 )continue; printf("%d\n ",j); } } 6 以下程序的输出结果是___。 main() { int s,i; for(s=0,i=1;i<3;i++,s+=i); printf("%d\n ",s); } 7 要使以下程序段输出10个整数,请填入一个整数。 for(i=0;i<=___;printf("%d \n ",i+=2)) ; 8 程序的功能是根据以下近似公式求π值: 请填空完成求π的功能。 #include "math.h " main() { int n=30000; double s=0.0; long i; for(i=1;i<=n;i++) s=s+_ 【1】 ; printf("pi=%f\n ",_ 【2】 ); } 三 程序填空题(每空3分,共27分) 1 下列程序是求 的值。 #include "stdio.h " main() { int i=2; float sum=1;; while( 【1】 ) { sum=sum+1.0/i; 【2】 ; } printf("sum=%f\n ", 【3】 ); } 2 以下程序的功能是从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为负数时,结束输入。 main() 50 141211++++ n n ?++?+?+=1331221162 π { float x,max,min; scanf("%f",&x); max=min= 【1】 ; do{ if(x>max) max=x; if(x scanf("%f",&x); } while( 【3】 ); printf("%f,%f",max,min); } 3 下面的程序用来求出所有的水仙花数。所谓水仙花数是指一个3位数,它的各位数字的 立方和恰好等于它本身。 main() { int n,i,j,k; for(n=100; 【1】 ) /* 判断3位数n是否是水仙花数 */ { i=n/100; /* i是n的百位上的数字 */ j= 【2】 ; /* j是n的十位上的数字 */ k=n%10; /* k是n的个位上的数字 */ if( 【3】 ) printf("%d\n",n); } } 数组 一单项选择题(每题2分,共40分) 1 以下对一维整型数组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]; 2 若有定义(说明)int a[10];,则对数组a的元素正确引用的是___。 A a[10] B a[3.5] C a(5) D a[10-10] 3 执行下面程序段后,变量k 的值是___。 int k=3,s[2]; s[0]=k; k=s[1]*10; A 不定值 B 33 C 30 D 10 4 以下程序的输出结果是___。 main() { int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf("%d\n",k); } A 20 B 21 C 22 D 23 5 以下对一维整型数组a初始化的语句中正确的是___。 A int a[10]=(0,0,0,0,0); B int a[10]=(); C int x=2,a[10]={10*x}; D int a[10]={0}; 6 若有以下说明,则数值为4的表达式是___。 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; A a[g-c] B a[4] C a['d'-'c'] D a['d'-c] 7 下列程序运行后的输出结果是___。 #define MAX 10 void main() { int i,sum,a[]={1,2,3,4,5,6,7,8,9,10}; sum=1; for(i=0;i printf("sum=%d\n",sum); } A sum=55 B sum=-54 C sum=-55 D sum=54 8 以下程序的输出结果是___。 main() { int y=18,i=0,j,a[8]; do{ a[i]=y%2; i++; y=y/2; }while(y>=1); for(j=i-1;j>0;j--) printf("%d",a[j]); } A 1000 B 1001 C 1010 D 1100 9 以下对二维数组a的正确定义(说明)的是___。 A int a[3][]; B float a(3,4); Cdouble a[1][4]; D float a(3)(4); 10 若有定义(说明)int a[3][4];,则对数组a的元素的引用非法的是___。 A a[2][2*1] B a[1][3] C a[4-2][0] D a[0][4] 11 以下不能对二维数组a进行正确初始化的语句是___。 A int a[2][3]={0}; B int a[][3]={{1,2},{0}}; C int a[2][3]={{1,2},{3,4},{5,6}}; D int a[][3]={1,2,3,4,5,6}; 12 下列数组定义语句中,正确的是___。 A char a[][]={'a','b','c','d','e','f'}; B char a[2][3]='a','b'; C char a[][3]={'a','b','c','d','e','f'}; D char a[][]={{'a','b','c','d','e','f'}}; 13 下列程序运行后的输出结果是___。 main() { int a[4][4],i,j,k; for(i=0;i<4;i++) for(j=0;j<4;j++) a[i][j]=i-j; for(i=1;i<4;i++) for(j=i+1;j<4;j++) { k=a[i][j]; a[i][j]=a[j][i]; a[j][i]=k; } for(i=0;i<4;i++) { printf("\n"); for(j=0;j<4;j++) printf("%4d",a[i][j]); } } A 0 -1 -2 -3 B 0 1 2 3 1 0 -1 - 2 -1 0 1 2 2 1 0 -1 -2 -1 0 1 3 2 1 0 -3 -2 -1 0 C 0 -1 -2 -3 D 0 1 2 3 1 0 1 2 -1 0 -1 -2 2 -1 0 1 -2 1 0 -2 3 -2 -1 0 -3 2 1 0 14以下程序的输出结果是___。 main() { int i,a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); } A 0650 B 1470 C 5430 D 输出值不定 15有以下程序: main() { int x[3][2]={0},i; for(i=0;i<3;i++) scanf("%d",x[i]); printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]); } 若运行时输入:2 4 6<回车>,则输出结果是___。 A 2 0 0 B 2 0 4 C 2 4 0 D 2 4 6 16 下列描述不正确的是___。 A 字符型数组中可以存放字符串 B 可以对字符型数组进行整体输入和输出 C 可以对整型数组进行整体输入和输出 D 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 17 对于以下定义,叙述正确的是___。 char x[]="a bcdef"; char x[]={'a','b' 'c','d','e','f'}; A 数组x和数组y等价 B 数组x和数组y的长度相等 C 数组x的长度大于数组y的长度 D 数组x的长度小于数组y的长度 18 以下选项中,不能正确赋值的是___。 A char s1[10];s1="Ctest"; B char s2[]={'C','t','e','s','t'}; C char s3[20]="Ctest"; D char s4[30];strcpy(s4,"Ctest"); 19 若有定义和语句:char s=[10];s="abcd";printf("%s\n",s);,则输出结果是___。 (以下□表示空格) A abcd B a C abcd□□□□□ D 编译不通过 20 当执行下面程序时,如果输入ABC,则输出结果是___。 #include #include main() { char ss[10]="12345"; gets(ss); strcat(ss, "6789"); printf("%s\n",ss); } A ABC6789 B ABC67 C 12345ABC6 D ABC45678 二填空题(每空3分,共24分) 1 若int类型变量占两个字节,定义int x[10]={0,2,4};,则数组x在内存中所占的字节 数是___。 2 若有定义char a[]="\\141\141abc\t";,则数组a在内存中所占的字节数是___。 3 下列程序的输出结果是___。 main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d\n",a[2],a[5],a[8]); } 4 下列程序运行的结果是___。 main() { char ch[7]="65ab21"; int i,s=0; for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } 5 有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现 字符串复制。(注意:不得使用逗号表达式) while(s[i]) { d[j]=___; j++ ; } d[j]=0; 6 下面程序运行的结果是___。 main() { char s[]="abcdef"; s[3]='\0'; printf("%s\n",s); } 7 以下程序的输出结果是___。 main() { char ch[3][5]={"AAAA","BBB","CC"}; printf("\"%s\"\n",ch[1]); } 8 以下程序的输出结果是___。 main() { char ch[]="abc",x[3][4]; int i; for(i=0;i<3;i++) strcpy(x[i],ch); for(i=0;i<3;i++) printf("%s",&x[i][i]); printf("\n"); } 三程序填空题(每空3分,共36分) 1 以下程序的功能是:从键盘上输入若干个学生的成绩(用输入负数结束输入),统计出平均成绩,并输出低于平均分的学生成绩。请填空。 #include "stdio.h" main() { int n=0,i; float x[1000],sum=0.0,ave,a; printf("Enter mark:\n"); scanf("%f",&a); while(a>=0.0 && n<1000) { sum+= 【1】 ; x[n]= 【2】 ; n++; scanf("%f",&a); } ave= 【3】 ; print("Output:\n"); printf("ave=%f\n",ave); for(i=0;i } 2 以下程序的功能是求出矩阵x的上三角元素之积。其中矩阵x的行列数和元素的值均由键盘输入。请填空。 #define M 10 main() { int x[M][M]; int n,i,j; long s=1; printf("Enter a integer(<=10):\n"); scanf("%d",&n); printf("Enter %d data on each line for the array x\n",n); for( 【1】 ) for(j=0;j for(i=0;i for( 【2】 ) 【3】 ; printf("%ld",s); } 3 以下程序,数组a中存放一个递增数列。输入一个整数,并将它插入到数组a中,使之仍为一个递增数列。请填空。 main() { int a[ 【1】 ]={1,10,20,30,40,50,60,70,80,90},x,i,p; scanf("%d",&x); for(i=0,p=10;i<10;i++)