tceic.com
学霸学习网 这下你爽了
相关标签
当前位置:首页 >> 工学 >>

C语言程序设计习题集及答案


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

1

17 假设在程序中 a,b,c 均被定义成整型,并且已赋大于 1 的值,则下列能正确表示代数式
1 的表达式是____。 abc

18

19

20 21 22

A 1/a*b*c B 1/(a*b*c) C 1/a/b/(float)c D 1.0/a/b/c 若有定义: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 类型不一致,无法计算,编译出错 在有以下程序: main() { int i=10,j=1; i=i+j++; printf("%d,%d,%d\n",i++,++j,i); } 执行后输出结果是___。 A 12,3,11 B 12,2,11 C 11,3,11 D 12,3,12 已知 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 已知 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 有以下程序: 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='\';语句不正确 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 的值是___。 4 以下程序的输出结果是___。 main() { int a=-10,b=-3; printf("%d\n",-a++); printf("%d\n",-a+b); } 5 以下程序的输出结果是___。 main() { char c;

2

c=0362; printf("%d\n",c); 6 7 8 } 以下程序段(n 所赋的是八进制数)执行后输出结果是___。 int m=32767,n=032767; printf("%d,%o\n",m,n); 字符串"\\name\\\101ddress\b\xaf"的长度为:___。 有以下程序段: int m=0,n=0; char c='a'; scanf("%d%c%d",&m,&c,&n); printf("%d,%c,%d\n",m,c,n); 若从键盘上输入:10A10<回车>,则输出结果是___。 以下程序的输出结果是___。 main() { printf("%d,%o,%x\n",10,10,10); printf("%d,%d,%d\n",10,010,0x10); printf("%d,%x\n",012,012); } 设 a、b、c 为整形变量,且 a=2、b=3、c=4,则执行完语句 a*=16+(b++)-(++c);之后, 变量 a 的值为___。 以下程序的输出结果为___。 main() { int x=023; printf("%x\n",--x); } 以下程序的结果为___。 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); } 以下程序 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】 。 若有定义:float x;,以下程序段的输出结果是___。 x=5.16894; printf("%f\n",(int)(x*1000+0.5)/(float)1000); 以下程序的功能是:输入一个小写字母,输出对应的大写字母,将程序补充完整。 main()

9

10 11

12

13

14

15

3

{

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 以下程序运行后的输出结果是___。 main() { int a=0,b=0; a=10; b=20; printf("a+b=%d\n",a+b); }

4

A a+b=10

B a+b=30

C 30

D 出错

2 以下程序运行后的输出结果是___。 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 3 以下程序运行后的输出结果是___。

C 0

D 3.07

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 4 以下程序运行后的输出结果是___。 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 5 以下程序运行后的输出结果是___。 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 2 4 1 4 2 4 2 2 2 4 1 2 6 以下程序运行后的输出结果是___。 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 7 以下程序运行后的输出结果是___。 main() { int x=4,y=7; x-=y; y+=x;
5

D 6 6 6.7 6.0

D 2,1

D 2 1 3 2 1 3 1 2

D 2,2,1

printf("%d } A 4 7

%d\n",x,y); B -3 -3 C -3 11 D -3 4

8 以下程序运行后的输出结果是___。 main() { unsigned short a=65536; int b; printf("%d\n",b=a); } A 65536 B 0 C 1 D -1 9 以下程序: #include <stdio.h> 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<回车> 则输出结果是___。 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 以下程序运行后的输出结果是___。 main() { int a=2,b=-1,c=2; if(a<b) if(b<0) c=0; else c++; printf("%d\n",c); } A 0 B 1 C 2 14 若 k 是 int 型变量,下面的程序段的输出结果是 k=-3; if(k<=0) printf("####")
6

D 3 。

15

16

17

18

19

20

else printf("&&&&"); A #### B &&&& C ####&&&& D 有语法错误,无输出 以下程序运行后的输出结果是___。 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 编译有错 以下程序运行后的输出结果是___。 main() { int x1=1,x2=0,x3=0; if(x1=x2+x3) printf("****"); else printf("####"); } A **** B 有语法错误 C #### D 无输出结果 当 a=1,b=3,c=5,d=4 时,执行下面一行程序后,x 的值是___。 if(a<b)if(c<d)x=1;else if(a<c)if(b<d)x=2;else x=3;else x=6;else x=7; A 1 B 2 C 3 D 6 下列叙述中正确的是___。 A break 语句只能用于 switch 语句 B 在 switch 语句中必须使用 default C break 语句必须与 switch 语句中的 case 配对使用 D 在 switch 语句中不一定使用 break 语句 若有定义: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"); } 以下程序运行后的输出结果是___。 #include<stdio.h> 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;

7

} 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 <stdio.h> main() { int i=010 , j=10; printf("%d,%d\n",++i,j--); } 2 以下程序运行后的输出结果是___。 #include <stdio.h> 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()
8

{

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 能否组成三角形,计算三角形面积。 a?b?c (公式为: s ? p(p ? a )( p ? b)( p ? c) 其中 p ? )。 2 #include <stdio.h> 【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 分) 1 以下程序中,while 循环的循环次数是___。 main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break;
9

i++; } ?? } A 1 B 10 C 6 D 死循环 以下程序的执行结果是___。 main() { int n=9; while(n>6) { n--; printf("%d",n); } } 该程序的输出结果是 A 987 B 876 C 8765 D 9876 以下程序段,while 循环执行的次数是___。 int k=0; while(k=1) k++; A 无限次 B 有语法错 C 一次也不执行 D 执行 1 次 以下叙述正确的是___。 A do-while 语句构成的循环不能用其它语句构成的循环来代替 B do-while 语句构成的循环只能用 break 语句退出 C 用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环 D 用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环 以下程序的执行结果是___。 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 以下程序的执行结果是___。 main() { int x=23; do{ printf("%d",x--); }while(!x); } A 321 B 23 C 不输出任何内容 D 陷入死循环 有以下程序段,输出结果是___。 int x=3; do { printf("%d ",x-=2); }while(!(- -x));
10

2

3

4

5

6

7

A 1 B 3 0 C 1 -2 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 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 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 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 12 下列程序的输出结果是___。 main() { int i,sum; for(i=1;i<=3;sum++) sum+=i; printf("%d\n",sum);
11

D 死循环

D 20

D 11

D 0

D 0

} 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);
12

} 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()
13

{

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 程序的功能是根据以下近似公式求π 值: ?2 1 1 1 ? 1? ? ??? 6 2 ? 2 3? 3 n?n 请填空完成求π 的功能。 #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 1 1 1 下列程序是求 1 ? ? ? ? ? 的值。 2 4 50 #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() { float x,max,min; scanf("%f",&x); max=min= 【1】 ; do{ if(x>max) max=x; if(x<min) 【2】 ; scanf("%f",&x); } while( 【3】 );
14

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]
15

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<MAX;i++) sum-=a[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
16

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[]="abcdef"; 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<stdio.h> #include<string.h> 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 在内存中所占的字节数是___。

17

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)

18

{

sum+= 【1】 ; x[n]= n++; scanf("%f",&a);

【2】 ;

} ave= 【3】 ; print("Output:\n"); printf("ave=%f\n",ave); for(i=0;i<n;i++) if( 【4】 ) printf("%f\n",x[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<n;j++) scanf("%d",&x[i][j]); for(i=0;i<n;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++) if(x<a[i]) { p=i; 【2】 ; } for(i=9;i>=p;i--) a[i+1]=a[i]; 【3】 ; for(i=0;i<=10;i++) printf("%5d\n",a[i]); printf("\n"); } 4 以下程序的功能是:将 t 数组的内容连接到 s 数组内容的后面,使 s 数组保存连接后的 新字符串。 main() { static char s[30]="abcdefg",t[]="abcd"; int i=0,j=0; while(s[i]!='\0') 【1】 ; while(t[j]!='\0') { s[i+j]=t[j]; j++; } 【2】 ; printf("%s\n",s); }

19

函数
一 单项选择题(每题 2 分,共 40 分) 1 以下正确的函数定义是___。 A double fun(int x,int y) B double fun(int x,y) { z=x+y; return z; } { int z; return z; } C fun (x,y) D double fun(int x,int y) { int x,y; double z ; { double z; z=x+y; return z; } return z; } 2 以下正确的说法是___。 A 实参和与其对应的形参各占用独立的存储单元 B 实参和与其对应的形参共占用一个存储单元 C 有当实参和与其对应的形参同名时才共占用相同的存储单元 D 形参是虚拟的,不占用存储单元 3 若调用一个函数,且此函数中没有 return 语句,则正确的说法是___。 A 该函数没有返回值 B 该函数返回若干个系统默认值 C 能返回一个用户所希望的函数值 D 返回一个不确定的值 4 以下正确的描述是___。 A 函数的定义可以嵌套,但函数的调用不可以嵌套 B 函数的定义不可以嵌套,但函数的调用可以嵌套 C 函数的定义和函数的调用均不可以嵌套 D 函数的定义和函数的调用均可以嵌套 5 若用数组名作为函数调用的实参,传递给形参的是___。 A 数组的首地址 B 数组中第一个元素的值 C 数组中的全部元素的值 D 数组元素的个数 6 以下不正确的说法是___。 A 在不同函数中可以使用相同名字的变量 B 形式参数是局部变量 C 在函数内定义的变量只在本函数范围内有定义 D 在函数内的复合语句中定义的变量在本函数范围内有定义 7 已知一个函数的定义如下: double fun(int x, double y) { ?? } 则该函数正确的函数原型声明为___。 A double fun(int x,double y) B fun(int x,double y) C double fun(int,double); D fun(x,y); 8 关于函数声明,以下不正确的说法是___。 A 如果函数定义出现在函数调用之前,可以不必加函数原型声明 B 如果在所有函数定义之前, 在函数外部已做了声明, 则各个主调函数不必再做函数原 型声明 C 函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查 D 标准库不需要函数原型声明 9 调用函数的实参与被调用函数的形参应有如下关系___。 A 只要求实参与形参个数相等 B 只要求实参与形参顺序相同 C 只要求实参与形参数据类型相同 D 上述三点均需具备

20

10 凡在函数中未指定存储类别的变量,其隐含的存储类别是___。 A 自动 B 静态 C 外部 D 寄存器 11 在源程序的一个文件中定义的全局变量的作用域是___。 A 在本文件的全部范围 B 该程序的全部范围 C 一个函数的范围 D 从定义该变量的位置开始至该文件的结束 12 下列程序运行后的输出的数据是___。 int sum(int n) { int p=1,s=0,i; for(i=1;i<=n;i++) s+=(p*=i); return s; } main() { printf("sum(5)=%d\n",sum(5)); } A sum(5)=151 B sum(5)=152 C sum(5)=153 D sum(5)=155 13 下列程序运行后的输出结果是___。 int c=1; main() { static int a=5;int b=6; printf("a=%d,b=%d,c=%d\n",a,b,c); func(); printf("a=%d,b=%d,c=%d\n",a,b,c); func(); } func() { static int a=4;int b=10; a+=2;c+=10;b+=c; printf("a=%d,b=%d,c=%d\n",a,b,c); } A a=5,b=6,c=1 B a=5,b=6,c=11 C a=5,b=6,c=1 D a=5,b=6,c=1 a=6,b=21,c=11 a=5,b=21,c=11 a=5,b=21,c=11 a=6,b=21,c=11 a=5,b=6,c=11 a=5,b=6,c=11 a=5,b=6,c=11 a=5,b=6,c=11 a=8,b=31,c=21 a=8,b=31,c=21 a=8,b=31,c=21 a=5,b=31,c=21 14 运行下面的程序后,其输出结果是___。 main() { int a=6,b=2,c; c=f(a)/f(b); printf("%d\n",c); } int f(int x) { int y; y=x++*x++; return y; } A 9 B 6 C 36 D 18

21

15 下列程序输出结果是___。 #include<stdio.h> my() { static int x=3; x++; return(x); } main() { int i,x; for(i=0;i<=2;i++) x=my(); printf("%d\n",x); } A 3 B 4 C 5 D 6 16 下列程序的输出结果是___。 #include<stdio.h> int abc(int u,int v) { int w; while(v) { w=u%v; u=v; v=w; } return u; } main() { int a=24,b=16,c; c=abc(a,b); printf("%d\n",c); } A 8 B 6 C 5 D 4 17 下列程序运行后的输出结果是___。 main() { static char s[]="abcdefgca"; p(s); printf("s[]=%s\n",s); } p(char s[]) { int i,j; for(i=j=0;s[i]!= '\0';i++) if(s[i]!='a'+2) s[j++]=s[i]; s[j]= '\0'; } A s[]=abcdefgca B s[]=abdefga C s[]=bcdefgc D 程序有错 18 下列程序运行后的输出结果是___。 void main() { int m=4,n=2,k; k=fun(m,n); printf("%d\n",k); k=fun(m,n); printf("%d\n",k); } int fun(int x,int y)

22

{

static int n=3,i=2; i+=n+1; n=i+x+y; return(n);

} A 12 B 12 C 12 D 12 12 23 25 16 19 下列程序运行后的输出结果是___。 int x=1; main() { int i=5; fun(i); printf("%d,%d\n",i,x); } fun(m) int m; { m+=x; x+=m; { char x='A'; printf("%d\n",x); } printf("%d,%d\n",m,x); } A 65 B A C A D 65 6,1 6,1 6,7 6,7 6,1 6,1 6,7 5,7 20 下列程序运行后,若从键盘输入 ABC!四个字符后,程序输出是___。 #include<stdio.h> main() { void receiv(); receiv(); } void receiv() { char c; c=getchar(); putchar(c); if(c!='!') receiv(); putchar(c); } A ABC!! B ABC!ABC! C ABC!!CBA D ABCABC 二 1 2 3 填空题(每空 3 分,共 30 分) 函数调用语句:fun((a,b),(c,d,e));,实参个数为___。 凡在函数中未指定存储类别的局部变量,其默认的存储类别为___。 在一个 C 程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该 变量需要定义的存储类别为___。 4 C 语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是___。

23

5 运行下面程序,其输出结果是___。 #include <stdio.h> int x,y; one() { int a,b; a=25,b=10; x=a-b;y=a+b; } main() { int a,b; a=9,b=5; x=a+b;y=a-b; one(); printf("%d,%d\n",x,y): } 6 运行下面程序,其输出结果是___。 #include <stdio.h> main() { void printd() int n=123; printd(n); } void printd(int n) { int i; if(n<0) { n=-n; putchar('-'); } putchar(n%10+'0'); if((i=n/10)!=0) printd(i); } 7 运行下面程序,从键盘输入四个字符 xyz#,其输出是___。 #include <stdio.h> main() { void recursion(); recursion(); } void recursion() { char c; c=getchar(); putchar(c); if(c!='#') recursion(); putchar(c); } 8 以下程序的输出结果是___。 #include<stdio.h> void fun(int x)

24

{ if(x/2>0) fun(x/2); printf("%d ",x); } main() { fun(3); printf("\n"); } 9 以下程序运行结果是___。 int a=1; int f(int c) { static int a=2; c=c+1; return (a++)+c; } main() { int i,k=0; for(i=0;i<2;i++){ int a=3; k+=f(a); } k+=a; printf("%d\n",k); } 10.以下程序的运行结果是___。 int k=0; void fun(int m) { m+=k; k+=m; printf("m=%d\n k=%d ",m,k++); } main() { int i=4; fun(i++); printf("i=%d k=%d\n",i,k); } 三 程序填空题(每空 3 分,共 30 分) 1 一个整数称为完全平方数,是指它的值是另一个整数的平方。例如 81 是个完全平方数, 因为它是 9 的平方。下列程序是在三位的正整数中寻找符合下列条件的整数:它既是完 全平方数,且三位数字中又有两位数字相同:例如 144(12*12) 、676(26*26)等,程 序找出并输出所有满足上述条件的三全数。 程序如下: main() { int n,k,a,b,c; for(k=1;;k++) { 【1】 if(n<100) 【2】 ; if(n>999) 【3】 ; a=n/100; b= 【4】 ; c=n%10; if(flag(a,b,c)) printf("n=%d=%d*%d\n",n,k,k); } } flag 【5】

25

{ return(!((x-y)*(x-z)*(y-z))); } x 2 以下程序的功能是应用近似公式计算 e 的值。其中,函数 f1 计算每项分子的值,函数 f2 计算每项分母的值。共取 nmax 项之和作为 e 的近似值。

ex ? 1 ? x ?

x 2 x3 xn x max?1 ? ??? ?? 2! 3! n! (max? 1)2!

float f2(int n) { if(n= =1) return 1; else return 【6】 ; } float f1(float x, int n) { int i; float j= 【7】 ; for(i=1; 【8】 ;i++) j=j*x; return j; } #define nmax 20 main() { float x,exp=1.0; int n; printf("Input x value:"); scanf("%f",&x); for(n=1;n<nmax;n++) exp= 【9】 ; printf("x=%f,exp(x)=%f\n",x, 【10】 _); }

指针
一 单项选择题(每题 2 分,共 40 分) 1 以下叙述中错误的是___。 A 在程序中凡是以“#”开始的语句行都是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX 是合法的宏定义命令行 D C 程序对预处理命令行的处理是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是___。 A 宏定义行中定义了标识符 N 的值为整数 100 B 在编译程序对 C 源程序进行预处理时用 100 替换标识符 N C 对 C 源程序进行编译时用 100 替换标识符 N D 在运行时用 100 替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果是___。 A 语句有错误 B z 值为 68 C z 值为 60 D z 值为 180 4 以下程序运行后的输出结果是___。

26

5

6 7

8 9 10

11 12

13

14

#define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 以下程序运行后的输出结果是___。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 若已定义 a 为 int 型变量,则___是对指针变量 p 的正确说明和初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值是___。 A 6 B 2 C 4 D 8 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该___。 A *px B a C px D &a 若指针 px 为空指针,则___。 。 A px 指向不定 B px 的值为零 C px 的目标为零 D px 的地址为零 对下语句 int *px[10];,下面正确的说法是___。 A px 是一个指针,指向一个数组,数组的元素是整数型。 B px 是一个数组,其数组的每一个元素是指向整数的指针。 C A 和 B 均错,但它是 C 语言的正确语句。 D C 语言不允许这样的语句。 具有相同基类型的指针变量 p 和数组 y,下列写法中不合法的是___。 A p=y B *p=y[i] C p=&y[i] D p=&y 已知 static int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p; , 则表达式 *(p[0]+1)+**(q+2) 的值是___。 A 5 B 4 C 6 D 7 说明语句 int *(*p)();的含义为___。 A p 是一个指向 int 型数组的指针 B p 是指针变量,它构成了指针数组 C p 是一个指向函数的指针,该函数的返回值是一个整型 D p 是一个指向函数的指针,该函数的返回值是一个指向整型的指针 设有如下程序段 char s[20]="Beijing",*p; p=s; 则执行 p=s;语句后,以下叙述正确的是___。

27

15

16

17

18

19

A 可以用*p 表示 s[0] B s 数组中元素个数和 p 所指字符串长度相等 C s 和 p 都是指针变量 D 数组 s 中的内容和指针变量 p 中的内容相同 设 int 型变量 i、 n 均已定义, 指针变量 s1、 s2 各指向一个字符串。 在 for(i=0;i<n;i++) 循环中,下列语句用以实现将 s2 所指字符串中前 n 个字符复制到 s1 所指字符串中,其 中代码正确的是___。 A *s1++=*s2++; B s1[n-1]=s2[n-1]; C *(s1+n-1)=*(s2+n-1); D *(++s1)=*(++s2); 给出下列程序的运行结果___。 #include <stdio.h> void main() { static char a[]="language",b[]="program"; char *ptr1=a,*ptr2=b; int k; for(k=0;k<7;k++) if(*(ptr1+k)==*(ptr2+k)) printf("%c",*(ptr1+k)); } A gae B ga C language D 有语法错误 以下程序执行后的输出结果是___。 void fun1(char *p) { char *q; q=p; while(*q!='\0'){ (*q)++; q++; } } main() { char a[]={"Program"},*p; p=&a[3]; fun1(p); printf("%s\n",a); } A Prohsbn B Prphsbn C Progsbn D Program 以下程序执行后的输出结果是___。 void swap(char *x,char *y) { char t; t=*x; *x=*y; *y=t; } main() { char *s1="abc",*s2="123"; swap(s1,s2); printf("%s,%s\n",s1,s2); } A 123,abc B abc,123 C 1bc,a23 D 321,cba 以下程序执行后的输出结果是___。 main() { char *p[]={"3697","2584"}; int i,j; long num=0; for(i=0;i<2;i++) { j=0; while(p[i][j]!='\0') { if((p[i][j]-'0')%2) num=10*num+p[i][j]-'0';
28

j+=2; } } printf("%d\n",num); } A 35 B 37 C 39 20 下列程序运行后的输出结果是___。 void main() { char str[]="The_Microsoft"; int n=4; sub(str,0,n-1); sub(str,0,strlen(str)-1); printf("%s\n",str); } sub(str,n1,n2) char *str; int n1,n2; { char c,*p; p=str+n2; str=str+n1; while(str<p) { c=*str; *str=*p; *p=c; str++; p--; } } A tfosorciMThe_ B. ehT_Microsoft C tfosorciM_ehT D 3975

D. Microsoft_The

二 填空题(每空 3 分,共 30 分) 1 以下程序的定义语句中,x[1]的初值是 ① ,程序运行后输出的内容是 ② 。 main() { int x[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i; for(i=0; i<4; i++) { p[i]=&x[2*i+1]; printf("%d", p[i][0]); } printf("\n"); } 2 以下程序的输出结果是 ③ 。 void swap(int *a, int *b) { int *t; t=a; a=b; b=t; } main() { int i=2,j=5,*p=&i,*q=&j; swap(p,q); printf("%d %d\n",*p,*q) } 3 以下程序的输出结果是 ④ 。 main() { int a[5]={2,4,6,8,10}, *p; p=a; p++; printf("%d", *p);
29

4

5 6 7

} 以下程序的输出结果是__⑤__。 #define M 5 #define N M+M main() { int k; k=N*N*5; printf("%d\n",k); } 若有定义语句:int a[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是 ⑥ 。 若有定义:int a[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是 ⑦ , *(a[1]+2)的值是 ⑧ 。 若有程序段: int *p[3],a[6],i; for(i=0;i<3;i++) p[i]=&a[2*i] ; 则*p[0]引用的是 a 数组元素 ⑨ ,*(p[1]+1)引用的是 a 数组元素 ⑩ 。

三 程序填空题(每空 3 分,共 30 分) 1 下面函数的功能是从输入的十个字符串中找出最长的那个串,请填空使程序完整。 void fun(char str[10][81],char **sp) { int i; *sp = 【1】 ; for(i=1;i<10; i++) if(strlen(*sp)<strlen(str[i])) 【2】 ; } 2 下面函数的功能是将一个整数字符串转换为一个整数,例如:"1234"转换为 1234,请填 空使程序完整。 int chnum(char *p) { int num=0,k,len,j; len=strlen(p); for( ; 【3】 ; p++) { k= 【4】 ; j=(--len); while( 【5】 ) k=k*10; num=num+k; } return (num); } 3 下面函数的功能使统计子串 substr 在母串 str 中出现的次数,请填空使程序完整。 int count(char *str, char *substr) { int i,j,k,num=0; for(i=0; 【6】 ;i++) for( 【7】 ,k=0;substr[k]==str[j];k++,j++) if(substr [ 【8】 ]==’\0’) { num++ ; break ; } return (num); } 4 下面函数的功能是用递归法将一个整数存放到一个字符数组中,存放时按逆序存放,如 483 存放成“384” ,请填空使程序完整。

30

void convert(char *a, int n) { int i; if((i=n/10)!=0) convert( 【9】 ,i); else *(a+1)=0; *a= 【10】 ; }

结构体 文件
单项选择题(1~8 题每题 5 分,9~18 题每题 6 分,共 100 分) 1 有以下说明语句,对结构变量中成员 age 的正确引用是___。 struct student { int age; int sex; }stud1,*p; A p->age B student.age C *p.age D stud1.student.age 2 说明语句如下,则正确的叙述是___。 union data { int x; char y; float z; }a; A data 和 a 均是共用体类型变量 B a 所占内存长度等于其成员 x、y、z 各在内存所占长度之和 C 任何情况下,均不能对 a 作整体赋值 D a 的地址和它的各成员地址都是同一地址 3 共用体成员的数据类型___。 A 相同 B 可以不同也可以相同 C 长度一样 D 是结构体变量 4 由系统分配和控制的标准输出文件为___。 A 键盘 B 磁盘 C 打印机 D 显示器 5 下列关于 C 语言数据文件的叙述中正确的是 。 A C 语言只能读写文本文件 B C 语言只能读写二进制文件 C 文件由字符序列组成,可按数据的存放形式分为二进制文件和文本文件 D 文件由二进制数据序列组成 6 若要用 fopen 函数建一个新的二进制文件,该文件要既能读也能写,则文件方式字符串 应该为___。 A "ab+" B "wb+" C "rb+" D "ab" 7 下列程序运行后的输出结果是___。 struct s { int n; char *c; }*p; char d[]={'a','b','c','d','e'}; struct s a[]={10,&d[0],20,&d[1],30,&d[2],40,&d[3],50,&d[4]}; #include <stdio.h> main() { p=a; printf("%d\n",++p->n); printf("%d\n",(++p)->n); printf("%c\n",++(*p->c));

31

} A 11 B 11 C 10 20 20 20 c b c 8 已知 struct student { char *name; int student_no; char grade; }; struct student temp,*p=&temp; temp.name="chou"; 则下面不正确的是___。 表达式 值 A p->name chou B (*p)->name+2 h C *p->name+2 e D *(p->name+2) o 9 下面程序运行后,其输出结果是___。 #include<stdio.h> struct tree { int x; char *s; }t; func(struct tree t) { t.x=10; t.s="computer"; return 0; } main() { t.x=1; t.s="minicomputer"; func(t); printf("%d,%s\n",t.x,t.s); } A 10,computer B 1,minicomputer C 1,computer 10 下列程序的输出结果是___。 #include<stdio.h> main() { union { int i[2]; long k; char c[4]; }t,*s=&t; s->i[0]=0x39; s->i[1]=0x38; printf("%lx ",s->k); printf("%c\n",s->c[0]);

D 10 20 b

D 10,minicomputer

} A 390038 39 B 380039 9 C 3938 38 D 3839 8 11 若已定义了如下的共用体类型变量 x,则 x 所占用的内存字节数为___。 union data { int i; char cha; double f; }x; A 7 B 11 C 8 D 10 12 如下说明语句: enum A {A0=1,A1=3,A2,A3,A4,A5};
32

enum A B; 执行 B=A3; printf("%d\n",B); 输出是___。 A 5 B 3 C 2 D 编译时出错 13 有以下说明语句,则结构变量 s 的成员 num 的不正确引用是___。 struct student { int num; int age; }s,*p; A s.num B *p.num C p->num D (*p).num 14 以下各选项试图说明一种新的类型名,其中正确的是 。 A typedef integer int; B typedef integer=int; C typedef int integer; D typedef int=integer; 15 运行下面程序,其输出结果是___。 #include <stdio.h> struct sample { int a,b; char *ch; }; main() { struct sample arg; arg.a=1000;arg.b=100;arg.ch="abcd"; f1(arg); } f1(struct sample param) { param.a+=param.b; param.ch[2]='x'; printf("%d\n",param.a); printf("%s\n",param.ch); } 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

33

基础知识作业答题纸
班级学号 一 单项选择题(每题 2 分,共 44 分) 1-5 11-15 6-10 16-22 姓名 成绩

二 填空题(第 1 题 2 分,其余每题 3 分,共 56 分) 1 2 12 3 4 5 13 14 【 1】 【 2】 【 3】 【 1】 【 2】 11

6

15

7

16

8

17

9

18

10

19

34

顺序、选择结构程序设计作业答题纸
班级学号 一 单项选择题(每题 2 分,共 40 分) 1-5 姓名 成绩

6-10

11-15

16-20

二 填空题(每空 3 分,共 30 分) 1 2 3 4 5 三 程序填空题(每空 5 分,共 30 分) 1 2 【1】 【2】 【3】 【4】 【5】 【6】 6 7 8 9 10

35

循环结构程序设计作业答题纸
班级学号 一 单项选择题(每题 2 分,共 40 分) 1-5 11-15 二 填空题(每空 3 分,共 33 分) 1 2 3 4 【1】 【2】 5 6 7 8 【 1】 【2】 【 1】 【2】 6-10 16-20 姓名 成绩

三 程序填空题(每空 3 分,共 27 分) 1 2 3 【1】 【1】 【1】 【2】 【2】 【2】 【3】 【3】 【3】

36

数组作业答题纸
班级学号 一 单项选择题(每题 2 分,共 40 分) 1-5 11-15 二 填空题(每空 3 分,共 24 分) 1 2 3 4 三 程序填空题(每空 3 分,共 36 分) 1 2 3 4 【1】 【1】 【1】 【1】 【2】 【2】 【2】 【2】 【3】 【3】 【3】 【4】 5 6 7 8 6-10 16-20 姓名 成绩

37

函数作业答题纸
班级学号 一 单项选择题(每题 2 分,共 40 分) 1-5 11-15 二 填空题(每空 3 分,共 30 分) 1 2 3 4 5 三 程序填空题(每空 3 分,共 30 分) 1 【1】 【2】 【3】 【4】 【5】 2 【1】 【2】 【3】 【4】 【5】 6 7 8 9 10 6-10 16-20 姓名 成绩

38

指针作业答题纸
班级学号 一 单项选择题(每题 2 分,共 40 分) 1-5 11-15 二 填空题(每空 3 分,共 30 分) 1① 1② 2③ 3④ 4⑤ 三 程序填空题(每空 3 分,共 30 分) 【1】 【2】 【3】 【4】 【5】 【6】 【7】 【8】 【9】 【10】 5⑥ 6⑦ 6⑧ 7⑨ 7⑩ 6-10 16-20 姓名 成绩

结构体 文件作业答题纸
班级学号 姓名 成绩 单项选择题(1~8 题每题 5 分,9~18 题每题 6 分,共 100 分) 1-5 11-15 6-10 16-18

39

习题集答案
基础知识
一 单项选择题(每题 2 分,共 44 分) 1-5 11-15 C C B B B C B A C A 6-10 16-22 A A B D A A D C C A A D

二 填空题(第 1 题 2 分,其余每题 3 分,共 56 分) 1 2 3 4 5 x%2==0 a=2,b=3,c=4↙ 12 -12 10 13 14 11 12 a=5 c=6 b=5 d=18 【1】A#B#C 【2】A# #B 5.169000 【1】scanf("%c",&ch); 【2】ch-=32; 【3】printf("%c\n",ch); a=98,b=765.000000,c=4321.000000 123.12346 123.123457 00012345 abcdefgh abc

-14

6

32767,32767

15

7

15

16

8

10,A,10

17

9

10,12,a 10,8,16 10,a

18

10

28

19

a=3,b=5,x=35.000000,y=35.119999,c1=a,c2=b

顺序、选择结构程序设计
一 单项选择题(每题 2 分,共 40 分)
40

1-5 11-15

B C

C D

A C

D D

A D

6-10 16-20

C C

D B

B D

D C

C A

二 填空题(每空 3 分,共 30 分) 1 2 3 4 5 9,10 000 i= k= 11 33 j= 15 6 7 8 9 10 20 8,9 (x>=y)&&(y>=z) **3 14

a=98,b=76.0,c=54 67,D

三 程序填空题(每空 5 分,共 30 分) 1 2 【1】6.6 【2】#include<math.h> 【3】float s,p; 【4】&a,&b,&c 【5】a+b>c && b+c>a && c+a>b && a>0 && b>0 && c>0 【6】p=(a+b+c)/2.0;

循环结构程序设计
一 单项选择题(每题 2 分,共 40 分) 1-5 11-15 D C B C A C D D B C 6-10 16-20 B A C A A C B B C A

二 填空题(每空 3 分,共 33 分) 1 2 3 4 0 无限多次 3,2,-1 【1】b=i+1 【2】c-11 5 6 7 8 【1】i<10 5 18 或 19 【1】1.0/(i*i) 【2】sqrt(6*s) 【2】j%3

三 程序填空题(每空 3 分,共 27 分) 1 【1】i<=50 【2】i=i+2 2 【1】x 【2】min=x
41

【3】sum 【3】x>=0

3

【1】n<=999;n++

【2】n/10%10

【3】n==i*i*i+j*j*j+k*k*k

数组
一 单项选择题(每题 2 分,共 40 分) 1-5 11-15 D C D C A C B A D B 6-10 16-20 D C B C B A C D D A

二 填空题(每空 3 分,共 24 分) 1 2 3 4 20 10 852 6 5 6 7 8 s[i++] abc "BBB" abcbcc

三 程序填空题(每空 3 分,共 36 分) 1 【1】a 【2】a 【3】sum/n 【4】x[i]<ave 2 【1】i=0;i<n;i++ 【2】j=i;j<n;j++ 【3】s=s*x[i][j] 3 【1】11 或者大于 11 的任何整数 【2】 break 【3】a[p]=x 或者 a[i+1]=x 4 【1】i++ 【2】s[i+j]='\0'

函数
一 单项选择题(每题 2 分,共 40 分) 1-5 11-15 D D D C A A B A A D 6-10 16-20 D A C B C C D D A C

二 填空题(每空 3 分,共 30 分) 1 2 3 2 自动 静态外部变量 6 7 8 321 xyz##zyx 1 3

42

4 5

值传递 15,35

9 10

14 m=4 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%10 【9】 exp+f1(x,n)/f2(n) 【5】 int x,int y,iny z 【10】exp

指针
一 单项选择题(每题 2 分,共 40 分) 1-5 11-15 B D B A B D A A C A 6-10 16-20 D B A A C C B C B A

二 填空题(每空 3 分,共 30 分) 1① 1② 2③ 3④ 4⑤ 2 2468 2 4 55 5 5⑥ 6⑦ 6⑧ 7⑨ 7⑩ 2 12 12 a0] a[3]

三 程序填空题(每空 3 分,共 30 分) 【1】 str[0] 【2】 *sp=str[i] 【3】 *p 【4】 *p-'0' 【5】 j--

【6】 str[i] 【7】 j=i 【8】 k+1 【9】 a+1 【10】n%10+'0'

结构体 文件
单项选择题(1~8 题每题 5 分,9~18 题每题 6 分,共 100 分) 1-5 A D B D C 6-10 B
43

A

B

B

B

11-15

C

A

B

C

C

16-18

D

B

A

44


推荐相关:

桂林电子科技大学C语言程序设计习题集及答案

桂林电子科技大学C语言程序设计习题集及答案_工学_高等教育_教育专区。一 单项选择题(每题 2 分,共 44 分) 1 以下叙述正确的是__C_。 A C 程序基本组成...


谭浩强C语言程序设计习题集

谭浩强C语言程序设计习题集_IT认证_资格考试/认证_教育专区。目录重要 次重要 ...注释说明只能位于一条语句的后面 参考答案:D 参考分析:C 语言中,注释语句的...


C语言程序设计习题集及答案_V2014

C语言程序设计习题集及答案_V2014_IT认证_资格考试/认证_教育专区 暂无评价|0人阅读|0次下载|举报文档C语言程序设计习题集及答案_V2014_IT认证_资格考试/认证_...


C语言程序设计练习题(含程序及参考答案)

C语言程序设计练习题(含程序及参考答案)_IT认证_资格考试/认证_教育专区。C语言程序设计练习题 2010-2011 C 语言程序试题及答案 1、定义一个函数 int fun(int ...


C语言程序设计习题集及答案

C语言程序设计习题集及答案_IT认证_资格考试/认证_教育专区。C 语言程序设计习题集基础知识一 单项选择题(每题 2 分,共 44 分) 1 以下叙述正确的是___。 ...


C语言程序设计习题集及答案

C语言程序设计习题集及答案_IT认证_资格考试/认证_教育专区 暂无评价|0人阅读|0次下载|举报文档 C语言程序设计习题集及答案_IT认证_资格考试/认证_教育专区。...


C语言程序设计习题集答案

C语言程序设计习题集答案_理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档C语言程序设计习题集答案_理学_高等教育_教育专区。第 1~2 章 C 语言...


C语言程序设计_试题集及答案

C语言程序设计_试题集及答案_计算机软件及应用_IT/计算机_专业资料。单项选择题………第 002 页 阅读程序题………第 018 页 程序填空题………第 039 页 编写...


C语言程序设计习题集及解答

C 语言程序设计的初步知识 ...2 答案......


浙江农林大学C语言程序设计习题集答案

{ int c,f; c=26; f=9.0/5.0*c+32; printf("%d 的华氏温度是%d",c,f); } 第 5 章 选择结构程序设计 一,选择题 DBBCDADBBCDC 二,程序阅读 1...

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com