C语言程序设计
习题集
基础知识
一 单项选择题(每题2分,共44分) 1 以下叙述正确的是___。
A C程序基本组成单位是语句 B C程序每一行只能写一个语句 C 简单C语句必须以分号作为结束符 D 注释语句可以嵌套 2 一个C语言程序是从___开始执行的。
A 程序中第一个函数 B 名为main的函数 C 包含文件(头文件)的第一个函数 D 程序中的第一个语句 3 请选出合法的C语言赋值语句___。
A a=b=58 B i++; C a=58,b=58 D k=int(a+b); 4 下面标识符中,合法的用户标识符是 ___。
A 1abc B include C a-b-c123 D char 5 以下所列的C语言整形常量中,正确的是___。
A 0x10 B 0976 C 076L D 01ff 6 C语言中下列运算符的操作数必须为整型的是___。
A % B ++ C / D = 7 设a和b均为int型变量,则执行以下语句后的输出为___。
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 2 B 3 C 2.6 D 不确定 9 以下合法的字符常量为___。
A 'ab' B '\\482' C '\\' D '\\xaf' 10 若y为int型变量,则执行以下语句后,y的值是___。
y=8; y+=y-=y*y;
A 64 B –56 C –112 D –48 11 以下合法的浮点型常量是___。
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;则执行下列语句输出为___。 printf(\%d\,sizeof(a*b)+2/5);
A 4 B 8 C 6 D 7
13 设int型占2个字节,且int i=-2;,则语句printf(\%u\,i);的输出结果为___。
A 0 B -2 C 65534 D 65535 14 若x、y、z均为整型常量,且a=100,则执行下列语句后的z值为___。
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 8,16,10 B 10,10,10 C 8,8,10 D 8,10,10 16 设x、y为int型变量,则执行下列语句后,y的值是___。
x=5; y=x++*x++; y=--y*--y;
A 529 B 2401 C 1209 D 625
17 假设在程序中a,b,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式
1的表达式是____。 abcA 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 2 B 2.5
C 3 D 类型不一致,无法计算,编译出错 19 在有以下程序:
int main()
{ int i=10,j=1; i=i+j++;
printf(\%d,%d,%d\\n\,i++,++j,i); int main()
执行后输出结果是___。
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,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 -1,10 B -2,1.8 C 0,3 D 1,18 22 有以下程序:
int main()
{ char a,b,c,d;
a='\\'; b='\\xbc'; c='\\0xab'; d='\\023';
printf(\%c%c%c%c\\n\,a,b,c,d); return 0; return 0; }
编译时出现错误,以下叙述中正确的是___。
A 程序中只有a='\\';语句不正确 B b='\\xbc';语句不正确
C d='\\023';语句不正确 D a='\\';和c='\\0xab';语句都不正确
二 填空题(第1题2分,其余每题3分,共56分)
1 设x为int型变量,请写出描述“x是偶数”的表达式是___。
2 已知scanf(\a=%d,b=%d,c=%d\,&a,&b,&c);,若从键盘输入2、3、4三个数分别作为变量a、b、c的值则正确的输入形式是___。
3 设有语句int a=3;,则执行了语句 a+=a-=a*a后,变量a的值是___。
1
4 以下程序的输出结果是___。
int main()
{ int a=-10,b=-3;
printf(\%d\\n\,-a++); printf(\%d\\n\,-a+b); return 0; }
5 以下程序的输出结果是___。
int main() { char c; c=0362;
printf(\%d\n\,c); return 0; }
6 以下程序段(n所赋的是八进制数)执行后输出结果是___。
int m=32767,n=032767; printf(\%d,%o\\n\,m,n); 7 字符串\\\\\name\\\\\\101ddress\\b\\xaf\的长度为:___。 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<回车>,则输出结果是___。 9 以下程序的输出结果是___。
int main()
{ printf(\%d,%o,%x\\n\,10,10,10); printf(\%d,%d,%d\\n\,10,010,0x10); printf(\%d,%x\\n\,012,012); return 0; }
10 设a、b、c为整形变量,且a=2、b=3、c=4,则执行完语句 a*=16+(b++)-(++c);之后,
变量a的值为___。
11 以下程序的输出结果为___。
int main() { int x=023;
printf(\%x\\n\,--x); return 0; }
12 以下程序的结果为___。
int 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);
2
return 0; } 13 以下程序
int main()
{ char ch1,ch2,ch3;
scanf(\%c%c%c\,&ch1,&ch2,&ch3);
printf(\%c%c%c%c%c\,ch1,'#',ch2,'#',ch3); return 0; }
当输入ABC时运行结果为 【1】 ,当输入A BC时运行结果为 【2】 。 14 若有定义:float x;,以下程序段的输出结果是___。
x=5.16894;
printf(\%f\\n\,(int)(x*1000+0.5)/(float)1000);
15 以下程序的功能是:输入一个小写字母,输出对应的大写字母,将程序补充完整。
int main() { char ch;
【1】 /* 从键盘输入一个小写字母 */ 【2】 /* 将该字母转换为大写字母 */ 【3】 /* 输出转换后的结果 */ return 0; }
16 当运行以下程序时,在键盘上从第一列开始输入9876543210↙(此处↙代表回车),则
程序的输出结果是___。 int main()
{ int a; float b,c;
scanf(\-?O\,&a,&b,&c);
printf(\\\na=%d,b=%f,c=%f\\n\,a,b,c); return 0; }
17 以下程序的运行结果是___。
int main()
{ printf(\.5f\\n\,123.1234567); printf(\f\\n\,123.1234567); printf(\.8d\\n\,12345);
printf(\.8s\\n\,\abcdefghij\); return 0; }
18 运行以下程序时,如从键盘上输入abcdefg↙,则输出结果是___。
int main()
{ char ch1,ch2,ch3;
ch1=getchar(); ch2=getchar(); ch3=getchar(); putchar(ch1); putchar(ch2); putchar(ch3);
putchar('\\n'); }
3
19 运行以下程序时,如从键盘上输入:a=3,b=5↙35,35.12↙abc↙后,结果是___。
int 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); return 0; }
顺序、选择结构程序设计
一 单项选择题(每题2分,共40分)
1 以下程序运行后的输出结果是___。
int main()
{ int a=0,b=0;
a=10; b=20; printf(\a+b=%d\\n\,a+b); return 0; }
A a+b=10 B a+b=30 C 30 D 出错 2 以下程序运行后的输出结果是___。
int main()
{ double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf(\%d\\n\,d*y); return 0; }
A 3 B 3.2 C 0 D 3.07 3 以下程序运行后的输出结果是___。
int 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); return 0; }
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 以下程序运行后的输出结果是___。
int main()
{ int a=1,b=2;
a=a+b; b=a-b; a=a-b; printf(\%d,%d\\n\,a,b); return 0; }
A 1,2 B 1,1 C 2,2 D 2,1 5 以下程序运行后的输出结果是___。
4
int 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); return 0; }
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 以下程序运行后的输出结果是___。
int main() { int x,y,z; x=y=1;
z=x++,y++,++y;
printf(\%d,%d,%d\\n\,x,y,z); return 0; }
A 2,3,3 B 2,3,2 C 2,3,1 D 2,2,1 7 以下程序运行后的输出结果是___。
int main()
{ int x=4,y=7; x-=y; y+=x;
printf(\%d %d\\n\,x,y); return 0; }
A 4 7 B -3 -3 C -3 11 D -3 4 8 以下程序运行后的输出结果是___。
int main()
{ unsigned short a=65536; int b; printf(\%d\\n\,b=a); return 0; }
A 65536 B 0 C 1 D -1 9 以下程序:
#include
{ 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); return 0; }
5
程序运行后,若从键盘输入(从第1列开始) 123<回车> 45678<回车>
则输出结果是___。
A 1267 B 1256 C 1278 D 1245
10 设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是___。
A 'a'&&'b' B a&&b||c C a&&b&&c D a||b&&c 11 在嵌套使用if语句时,C语言规定else总是___。
A 和之前与其具有相同缩进位置的if配对 B 和之前与其最近的if配对
C 和之前与其最近不带else的if配对 D 和之前的第一个if配对
12 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为
___。
A a<>0 B !a C a=0 D a 13 以下程序运行后的输出结果是___。
int main()
{ int a=2,b=-1,c=2; if(a
if(b<0) c=0; else c++;
printf(\%d\\n\,c); return 0; }
A 0 B 1 C 2 D 3 14 若k是int型变量,下面的程序段的输出结果是 。
k=-3;
if(k<=0) printf(\####\) else printf(\&&&&\);
A #### B &&&&
C ####&&&& D 有语法错误,无输出 15 以下程序运行后的输出结果是___。
int 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); return 0; }
A 0,1,2,0 B 0,0,0,3 C 1,1,2,0 D 编译有错 16 以下程序运行后的输出结果是___。
int main()
{ int x1=1,x2=0,x3=0;
if(x1=x2+x3) printf(\****\); else printf(\####\);
6
return 0; }
A **** B 有语法错误 C #### D 无输出结果 17 当a=1,b=3,c=5,d=4时,执行下面一行程序后,x的值是___。
if(a
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
{ 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); return 0; }
A a=2,b=1 B a=1,b=1 C a=1,b=0 D a=2,b=2
二 填空题(每题3分,共30分)
1 以下程序运行后的输出结果是___。
#include
{ int i=010 , j=10;
printf(\%d,%d\\n\,++i,j--); return 0; }
2 以下程序运行后的输出结果是___。
7
#include
{ printf(\%d%d%d\\n\,'\\0','\\0','\\0'); return 0; }
3 以下程序运行后的输出结果是___。
int main()
{ int i=5,j,k; j=i+++i+++i++;
k=(++i)+(++i)+(++i);
printf(\i=] j=]\\nk=]\\n\,i,j,k); return 0; }
4 下面的程序运行时从键盘上输入9876543210<回车>,程序的输出结果是___。
int main()
{ int a; float b,c;
scanf(\-//\,&a,&b,&c);
printf(\a=%d,b=%.1f,c=%.0f\,a,b,c); return 0; }
5 下面程序的输出结果是___。
int main()
{ char ch1,ch2;
ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf(\%d,%c\\n\,ch1,ch2); return 0; }
6 执行下面的语句:printf(\%d\\n\,(a=3*5,a*4,a+5));,输出是___。 7 以下程序运行后的输出结果是___。
int main()
{ int x=10; printf(\%d,%d\\n\,--x,--x); return 0; }
8 为表示关系x≥y≥z,应使用C语言表达式___。 9 下面的程序段的输出结果是___。
int x=3;
if((x%2)?printf(\**%d\,x):printf(\##%d\\n\,x)); 10 以下程序运行后的输出结果是___。
int 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);
8
return 0; }
三 程序填空(每空5分,共30分)
1 下列程序的输出结果是16.00,请填空。
int 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); return 0; }
2 完成以下程序,输入变量a,b,c的值,判断a,b,c能否组成三角形,计算三角形面积。
a?b?cs?p(p?a)(p?b)(p?c)其中p?(公式为: )。
2#include
【2】 ; int 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\) return 0; }
循环结构程序设计
一 单项选择题(每题2分,共40分)
1 以下程序中,while循环的循环次数是___。
int main() { int i=0; while(i<10)
{ if(i<1) continue; if(i==5) break; i++; } ?? return 0; }
9
A 1 B 10 C 6 D 死循环 2 以下程序的执行结果是___。
int main() { int n=9;
while(n>6) { n--; printf(\%d\,n); } return 0; }
该程序的输出结果是
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 以下程序的执行结果是___。
int 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); return 0; }
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 以下程序的执行结果是___。
int main() { int x=23;
do{ printf(\%d\,x--); }while(!x); return 0; }
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 死循环
10
8 以下程序的输出结果是___。
int 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); return 0; }
A 31 B 13 C 10 D 20 9 以下程序的输出结果是___。
int main()
{ int i=0,a=0; while(i<20) { for(; ;)
if((i)==0) break; else i--; i+=11; a+=i; }
printf(\%d\\n\,a); return 0; }
A 21 B 32 C 33 D 11 10 以下循环体的执行次数是___。
int main() { int i,j;
for(i=0,j=1;i<=j+1;i+=2,j--) printf(\%d \\n return 0; }
A 3 B 2 C 1 D 0 11 下列程序的输出结果是___。
int 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);
return 0; }
A 4 B 2 C 1 D 0 12 下列程序的输出结果是___。
int main()
11
\,i);
{ int i,sum;
for(i=1;i<=3;sum++) sum+=i; printf(\%d\\n\,sum); return 0; }
A 6 B 3 C 死循环 D 0 13 以下程序执行后sum的值是___。
int main() { int i,sum;
for(i=1;i<6;i++) sum+=i; printf(\%d\\n\,sum); return 0; }
A 15 B 14 C 不确定 D 0 14以下程序执行后的输出结果是___。
int 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); return 0; }
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 以下程序执行后的输出结果是___。
int 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); return 0; }
A 6,6 B 7,6 C 10,3 D 7,3 17 以下程序执行后的输出结果是___。
int main() { int a=5;
while(!(a-->5)) { switch(a)
12
{ case 1:a++; case 4:a+=4;
case 5:a+=5;break; default:a-=5; }
}
printf(\%d\\n\,a); return 0; return 0; }
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\ int 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\); return 0; return 0; }
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 下列程序的输出结果是___。
int main()
{ int x=0,y=5,z=3;
while(z-->0 && ++x<5) y=y-1; printf(\%d,%d,%d\\n\,x,y,z); return 0; }
13
4 下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。
int 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】 ); return 0; }
5 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。
int main() { int i,j;
for(i=0; _ 【1】 ; i++) { j=i*10+6;
if(_ 【2】 )continue; printf(\%d\\n\,j); }
return 0; }
6 以下程序的输出结果是___。
int main() { int s,i;
for(s=0,i=1;i<3;i++,s+=i); printf(\%d\\n\,s); return 0; }
7 要使以下程序段输出10个整数,请填入一个整数。
for(i=0;i<=___;printf(\%d \\n\,i+=2)) ; 8 程序的功能是根据以下近似公式求π值:
?2111
?1?????62?23?3n?n
请填空完成求π的功能。
#include \math.h\ int main()
{ int n=30000; double s=0.0; long i; for(i=1;i<=n;i++) s=s+_ 【1】 ; printf(\pi=%f\\n\,_ 【2】 ); return 0; }
三 程序填空题(每空3分,共27分)
1111?????1 下列程序是求 的值。
2450#include \stdio.h\
14
int main()
{ int i=2; float sum=1;; while( 【1】 )
{ sum=sum+1.0/i; 【2】 ; } printf(\sum=%f\\n\, 【3】 ); return 0; }
2 以下程序的功能是从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为负数时,结束输入。 int main()
{ float x,max,min; scanf(\%f\,&x);
max=min= 【1】 ; do{ if(x>max) max=x;
if(x 3 下面的程序用来求出所有的水仙花数。所谓水仙花数是指一个3位数,它的各位数字的立方和恰好等于它本身。 int main() { int n,i,j,k; for(n=100; 【1】 ) /* 判断3位数n是否是水仙花数 */ { i=n/100; /* i是n的百位上的数字 */ j= 【2】 ; /* j是n的十位上的数字 */ k=n; /* k是n的个位上的数字 */ if( 【3】 ) printf(\} return 0; } 数组 一 单项选择题(每题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 的值是___。 15 int k=3,s[2]; s[0]=k; k=s[1]*10; A 不定值 B 33 C 30 D 10 4 以下程序的输出结果是___。 int 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); return 0; } 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 int main() { int i,sum,a[]={1,2,3,4,5,6,7,8,9,10}; sum=1; for(i=0;i A sum=55 B sum=-54 C sum=-55 D sum=54 8 以下程序的输出结果是___。 int 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]); return 0; } 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}; 16 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 下列程序运行后的输出结果是___。 int 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(\M\,a[i][j]); } return 0; } 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 以下程序的输出结果是___。 int 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]); return 0; } A 0650 B 1470 C 5430 D 输出值不定 15 有以下程序: int main() { int x[3][2]={0},i; for(i=0;i<3;i++) scanf(\%d\,x[i]); printf(\===\\n\,x[0][0],x[0][1],x[1][0]); return 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 17 对于以下定义,叙述正确的是___。 char x[]=\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 { char ss[10]=\12345\; gets(ss); strcat(ss, \6789\; printf(\%s\\n\,ss); return 0; } 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 下列程序的输出结果是___。 int 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]); return 0; } 4 下列程序运行的结果是___。 int 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); return 0; } 5 有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现字符串复制。(注意:不得使用逗号表达式) while(s[i]) { d[j]=___; j++ ; } 18 d[j]=0; 6 下面程序运行的结果是___。 int main() { char s[]=\abcdef\; s[3]='\\0'; printf(\%s\\n\,s); return 0; } 7 以下程序的输出结果是___。 int main() { char ch[3][5]={\AAAA\,\BBB\,\CC\}; printf(\\\\%s\\\\\n\,ch[1]); return 0; } 8 以下程序的输出结果是___。 int 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\); return 0; } 三 程序填空题(每空3分,共36分) 1 以下程序的功能是:从键盘上输入若干个学生的成绩(用输入负数结束输入),统计出平均成绩,并输出低于平均分的学生成绩。请填空。 #include \stdio.h\ int 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 int main() 19 } A 1000 B 1100 C 1100 D 100 abcd abcd abxd abcd 16 fwrite函数的一般调用形式是___。 A fwrite(buffer,count,size,fp); B fwrite(fp,size,count,buffer); C fwrite(fp,count,size,buffer); D fwrite(buffer,size,count,fp); 17 C语言文件操作函数fread(buffer,size,n,fp)的功能是___。 A 从文件fp中读n个字节存入buffer B 从文件fp中读n个大小为size字节的数据项存入buffer中 C 从文件fp中读入n个字节放入大小为size字节的缓冲区buffer中 D 从文件fp中读入n个字符数据放入buffer中 18 若有如下定义: struct data { int i; char ch; float f; }b; 则结构体变量b占用内存的字节数是 。 A 7 B 4 C 1 D 2 习题集答案 基础知识 一 单项选择题(每题2分,共44分) A B A D C C B B B C 1-5 6-10 11-15 16-22 A D A C A A D C B C A A 二 填空题(第1题2分,其余每题3分,共56分) 1 x%2==0 2 a=2,b=3,c=4↙ 12 3 -12 4 10 13 11 12 a=5 c=6 b=5 d=18 【1】A#B#C 【2】A# #B 5 -14 14 5.169000 【1】scanf(\%c\,&ch); 15 【2】ch-=32; 【3】printf(\%c\\n\,ch); 6 32767,32767 35 7 15 16 a=98,b=765.000000,c=4321.000000 123.12346 123.123457 00012345 abcdefgh 8 10,A,10 17 10,12,a 9 10,8,16 10,a 10 28 18 abc 19 a=3,b=5,x=35.000000,y=35.119999,c1=a,c2=b 顺序、选择结构程序设计 一 单项选择题(每题2分,共40分) C D B D C B C A D A 1-5 6-10 11-15 16-20 C B D C A C D C D D 二 填空题(每空3分,共30分) 1 9,10 2 000 3 i= 11 j= 15 k= 33 6 20 7 8,9 8 (x>=y)&&(y>=z) 9 **3 10 14 4 a=98,b=76.0,c=54 5 67,D 三 程序填空题(每空5分,共30分) 1 【1】6.6 2 【2】#include 【5】a+b>c && b+c>a && c+a>b && a>0 && b>0 && c>0 【6】p=(a+b+c)/2.0; 36 循环结构程序设计 一 单项选择题(每题2分,共40分) D B A D B 1-5 6-10 B C A B C 11-15 16-20 A A C B A C C C D C 二 填空题(每空3分,共33分) 1 2 3 4 0 无限多次 3,2,-1 【1】b=i+1 【2】c-11 5 【1】i<10 【2】j%3 6 5 7 18或19 8 【1】1.0/(i*i) 【2】sqrt(6*s) 三 程序填空题(每空3分,共27分) 1 【1】i<=50 【2】i=i+2 【3】sum 2 【1】x 【2】min=x 【3】x>=0 3 【1】n<=999;n++ 【2】n/10 【3】n==i*i*i+j*j*j+k*k*k 数组 一 单项选择题(每题2分,共40分) D D A B D 1-5 6-10 D B B C D 11-15 16-20 C C A D A C C C A B 二 填空题(每空3分,共24分) 1 2 3 4 20 10 852 6 5 s[i++] 6 abc 7 \BBB\ 8 abcbcc 三 程序填空题(每空3分,共36分) 1 【1】a 【2】a 【3】sum/n 【4】x[i] 3 【1】11或者大于11的任何整数 【2】 break 【3】a[p]=x或者a[i+1]=x 37 4 【1】i++ 【2】s[i+j]='\\0' 函数 一 单项选择题(每题2分,共40分) D C C D A D D A B A 1-5 6-10 11-15 16-20 A B C D C D C A A D 二 填空题(每空3分,共30分) 1 2 2 自动 3 静态外部变量 4 值传递 5 15,35 6 321 7 xyz##zyx 8 1 3 9 14 m=4 10 k=4 i=5 k=5 三 程序填空题(每空3分,共30分) 【1】 n=k*k; 【6】 n*f2(n-1) 【2】 continue 【7】 1 【3】 break 【8】 i<=n 【4】 n/10 【9】 exp+f1(x,n)/f2(n) 【5】 int x,int y,iny z 【10】exp 指针 一 单项选择题(每题2分,共40分) D A C B B B B B A C 1-5 6-10 11-15 16-20 B A C C A D A D A A 二 填空题(每空3分,共30分) 1① 1② 2 2468 5⑥ 6⑦ 2 12 38 2③ 3④ 4⑤ 2 5 4 55 6⑧ 7⑨ 7⑩ 12 a0] a[3] 三 程序填空题(每空3分,共30分) 【1】 str[0] 【6】 str[i] 【2】 *sp=str[i] 【7】 j=i 【3】 *p 【8】 k+1 【4】 *p-'0' 【9】 a+1 【5】 j-- 【10】n+'0' 结构体 文件 单项选择题(1~8题每题5分,9~18题每题6分,共100分) B A B B B A D B D C 1-5 6-10 11-15 16-18 D B A C A B C C 39 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言程序设计习题集及答案在线全文阅读。
相关推荐: