9512.net
甜梦文库
当前位置:首页 >> IT认证 >>

大学C语言期末考试试题及答案汇总


1 A、int _int B、double int_ C、char For D、float US$ D

______。

2 以下不合法的用户标识符是______。 A、j2_KEY B、Double C、4d D、_8_ C 3 以下 4 A、_main enclude sin B、If -max turbo C、txt REAL 3COM D、int k_2 _001 ??? A 4 以下定义语句中正确的是______。 A、char a='A' b='B'; B、float a=b=10.0;(正解 a=10.0 b=10.0) C、int a=10,*b=&a; D、float *a,b=&a; C 量和标识符 5 以下不能定义为用户标识符的是______。 A、scanf B、Void C、_3com_ D、int D 6 以下有 4 A、For -sub Case B、4d DO Size C、f2_G3 IF abc D、WORD Void define C 7 C 语言中最简单的数据类型包括______。 A、整型、实型、逻辑型 B、整型、实型、字符型 C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型 B 8 C 语言关键字是______。 A、VAR B、cher C、integer D、default ______。 ______。

D 9 A、Main B、_0 C、_int D、sizeof D ______。

10 下列叙述中正确的是______。 A、C 语言中既有逻辑类型也有集合类型 B、C 语言中没有逻辑类型但有集合类型 C、C 语言中有逻辑类型但没有集合类型 D、C 语言中既没有逻辑类型也没有集合类型 D 11 当 c 的值不为 0 A、c=b=a; B、(a=c)‖(b=c); C、(a=c)&&(b=c); D、a=c=b; C c 的值赋给变量 a、b 的是______。

12 以下选项中非法的表达式是______。 A、0<=x<100 B、i=j==0 C、(char)(65+3) D、x+1=x+1 D 13 以下程序的输出结果是______。 #include <stdio.h> main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } A、6,1 B、2,1 C、6,0 D、2,0 B 14 以下循环体的执行次数是______。 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 C 15 有以下定义语句

double a,b; int w; long c; ______。 A、a=a+b=b++ B、w%((int)a+b) C、(c+w)%(int)a D、w=a=b; C 16 有如下程序 main() { int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf("%d %d %3.1f%3.1f\n",a,c,f,x); } 程序运行后输出结果是______。 A、1 65 1 6.5 B、1 65 1.5 6.5 C、1 65 1.0 6.5 D、2 65 1.5 6.5 B 17 若变量 a、i i A、a==1 B、++i; C、a=a++=5; D、a=int(i); B 18 A、a:=b+1 B、a=b=c+2 C、int 18.5%3 D、a=a+7=c+b B 20 设变量 x 为 float 将第三位四舍五入的是______。 A、x=x*100+0.5/100.0 B、x=(x*100+0.5)/100.0 C、x=(int)(x*100+0.5)/100.0 D、x=(x/100+0.5)*100.0 C 22 在一个 C 程序中______。 A、main 函数必须出现在所有函数之前 B、main 函数可以在任何地方出现 C、main 函数必须出现在所有函数之后 D、main 函数必须出现在固定位置

______。

C 语言语法的表达式是______。

x

B C 语言程序的构成和格式 23 以下说法中正确的是______。 A、#define 和 printf 都是 C 语句 B、#define 是 C printf 不是 C、printf 是 C #define 不是 D、#define 和 printf 都不是 C 语句 D C 语言程序的构成和格式 24 k 是 int k=-3 if(k<=0) printf("####") else printf("&&&&"); 上面程序片段的输出结果是______。 A、#### B、&&&& C、####&&&& D、有语法错误,无输出结果 D C 语言程序的构成和格式 25 以下 4 ______。 A、{;} B、a=0,b=0,c=0; C、if(a>0); D、if(b==0) m=1;n=2; D C 语言程序的构成和格式 26 有以下程序 main() { int a=0,b=0; a=10; /* 给 a 赋值 */ b=20; /* 给 b 赋值 */ printf("a+b=%d\n",a+b); } 程序运行后的输出结果是______。 A、a+b=10 B、a+b=30 C、30 D、出错 B C 语言程序的构成和格式 27 A、1.234e04 B、1.234e0.4 C、1.234e+4 D、1.234e0 B

______。

28 以下符合 C 语言语法的实型常量是______。 A、1.2E0.5 B、3.14159E C、.5E-3 D、E15 C 30 表达式 3.6-5/2+1.2+5%2 的值是______。 A、4.3 B、4.8 C、3.3 D、3.8

31

D int a=12

a+=a-=a*a

a 的值是______。

A、552 B、264 C、144 D、-264 D

32 以下变量 x、y、z 均为 double 语言表达式是______。 A、x/y*z B、x*(1/(y*z)) C、x/y*1/z D、x/y/z A x/(y*z)的 C

33 int a=8,b=5,c;,执行语句 c=a/b+0.4; A、1.4 B、1 C、2.0 D、2 B c 的值是______。

34 float a=2,b=4,h=3;,以下 C 语言表达式与代数式 1/2((a+b)h) 计算结果不 相符的是______。 A、(a+b)*h/2 B、(1/2)*(a+b)*h C、(a+b)*h*1/2 D、h/2*(a+b) B

35 假定 x 和 y 为 double A、3.500000 B、3 C、2.000000 D、3.000000 D x=2,y=x+3/2 的值是______。

36 若已定义 x 和 y 为 double A、1 B、2 C、2.000000 D、2.500000 C x=1,y=x+3/2 的值是______。

37 若有以下程序段 int c1=1,c2=2,c3; c3=1.0/c2*c1; c3 中的值是______。 A、0 B、0.5 C、1 D、2 A

38 设有 int x=11; A、3 B、4 C、11 D、12 x++ * 1/3 ______

A

39 下列程序的输出结果是______。 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 C

40

int i=65536; printf("%d\n",i); 上面程序片段的输出结果是______。 A、65536 B、0 C B D、-1

41

若有以下定义和语句: 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 A 42 在C int 类型的常数是______。

A、32768 B、0 C、037 D、0xAF A

43 以下程序的输出结果是______。 main( ) { int k=17; printf("%d,%o,%x \n",k,k,k); } A、17,021,0x11 B、17,17,17 C、17,0x11,021 D、17,21,11 D

44 下面程序的输出是______。 main() { unsigned a=32768; printf("a=%d\n",a); } A、a=32768 B、a=32767 C、a=-32768 D、a=-1 C

45 在C A、0L B、4962710 C、324562& D、216D A ______。

46 C 语言中运算对象必须是整型的运算符是______。 A、%= B、/ C、= D、<= A

47 以下选项中不属于 C 语言的类型名称是______。 A、signed short int B、unsigned long int C、unsigned int D、long short D

48 有以下程序 main() { int m=0256,n=256; printf("%o %o\n",m,n); } 程序运行后的输出结果是______。 A、0256 0400 B、0256 256 C、256 400 D、400 400 C

49 若执下面程序时从键盘上输入 5 main()

{ int x; scanf("%d",&x); if(x++>5) printf("%d\n",x); else printf("%d\n",x--); } 则输出是______。 A、7 B、6 C、5 D、4 B

50 有以下程序 main () { char a1='M', a2='m'; printf("%c\n", (a1,a2)); } 以下叙述中正确的是______。 A、程序输出大写字母 M B、程序输出小写字母 m C D、程序运行时产生出错信息 B

51 以下程序的输出结果是 ______。 main() { int a; printf("%d\n",(a=3*5,a*4,a+5)); } A、65 B、20 C、15 D、10 B

53 设有如下程序段 int x=2002,y=2003; printf("%d\n",(x,y)); 则以下叙述中正确的是______。 A B、运行时产生错误信息 C、输出值为 2002 D、输出值为 2003 D

54

有以下程序 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 C

55 设有以下定义 int a=0; double b=1.25; char c='A'; #define d 2 则下面语句中错误的是______。 A、a++; B、b++; C、c++; D、d++; D 56

以下程序的输出结果是______。 main() { int x=10,y=10; printf("%d %d\n",x--,--y); } A、10 10 B、99 C、9 10 D、10 9 D

57 若 x 和 y 都是 int printf("%d",(x,y)); 上面程序片段的输出结果是______。 A、200 B、100 C、100 200 D、输则格式符不够, 输出不确定的值 A x=100、y=200

58 设有如下定义: int x=10,y=3,z; 则语句 printf("%d\n",z=(x%y,x/y));

的输出结果是______。 A、1 B、0 C、4 D、3 D 59 两次运行下面的程序,如果从键盘上分别输入 6 和 4,则输出结果是______。 main( ) { int x; scanf("%d",&x); if(x++ > 5) printf("%d",x); else printf("%d\n",x--); } A、7 和 5 B、6 和 3 C、7 和 4 D、6 和 4 A

60 若 t 为 double A、1 B、6.0 C、2.0 D、1.0 D t=1,t+5,t++的值是______。

61 以下程序的输出结果是______。 #include<stdio.h> main() { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、010,9 D、10,9 A

62 有以下程序 main() { int y=10; while(y--); printf("y=%d\n",y); } 程序执行后的输出结果是______。 A、y=0 B、y=-1 C、y=1 D、while 构成无限循环 B

63 以下叙述中正确的是______。 A、全局变量的作用域一定比局部变量的作用域范围大 B、静态(static)类别变量的生存期贯穿于整个程序的运行期间 C、函数的形参都属于全局变量 D、未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值 B 64 下面程序的输出是______。 fun3(int x) { static int a=3; a+=x; return(a); } main() { int k=2, m=1, n; n=fun3(k); n=fun3(m); printf("%d\n",n);

} A、3 B、4 C、6 D、9 C

65 A、局部变量说明为 static B、全局变量说明为 static C

______。

D、形参可以使用的存储类说明符与局部变量完全相同 A

66

有以下程序

int fun(int x[],int n) { static int sum=0,i; for(i=0;i<n;i++) sum+=x[i]; return sum; } main() { int a[]={1,2,3,4,5},b[]={6,7,8,9,},s=0; s=fun(a,5)+fun(b,4);

printf("%d\n",s); } 程序执行后的输出结果是______。 A、45 B、50 C、60 D、55 C 部变量及其作用域和生存期 67 以下程序执行后 sum 的值是______。 main() { int i,sum; for(i=1;i<6;i++) sum+=i; printf("%d\n",sum); } A、15 B、14 C、不确定 D、0 C

68 以下程序的输出结果是______。 main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p);

p=func(k,m); printf("%d\n",p); } func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } A、8,17 B、8,16 C、8,20 D、8,8 A

69

f(int a) { int b=0; static int c=3; b++; c++; return (a+b+c); } ______。 main()

{ int a=2,i; for(i=0;i<3;i++) printf("%d\n",f(a)); D 、7 7 7 C

、13 B、11 } A、7 8 9 A

70 有以下程序 fun(int x, int y) { static int m=0,i=2; i+=m+1; m=i+x+y; return m; } main() {

int j=1,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d\n",k); } 执行后的输出结果是______。 A、5,5 B、5,11 C、11,11 D、11,5 B

71 以下程序的输出结果是______。 int a,b; void fun() { a=100; b=200; } main() { int a=5,b=7; fun(); printf("%d%d\n",a,b); } A、100200

B、57 C、200100 D、75 B

72 有如下程序 int func(int a,int b) { return(a+b); } main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%d\n",r); } 该程序的输出结果是______。 A、12 B、13 C、14 D、15 D

73 有以下程序 void f(int v,int w) {

int t; t=v;v=w;w=t; } main() { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d\n",x,y,z); } 执行后输出结果是______。 A、1,2,3 B、3,1,2 C、1,3,2 D、2,3,1 C

74 有以下程序 void f(int x,int y) { int t; if(x<y) {t=x; x=y; y=t;} }

main() { int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d\n",a,b,c); } 执行后输出结果是______。 A、3,4,5 B、5,3,4 C、5,4,3 D、4,3,5 D

75 int fun1(double a) { return a*=a; } int fun2(double x,double y) { double a=0,b=0; a=fun1(x); b=fun1(y); return (int)(a+b); } main()

{ double w; w=fun2(1.1,2.0); } 程序执行后变量 w 中的值是______。 A、5.21 B、5 C、5.0 D、0.0 C

80 ______。 A、地址传递 B、单向值传递 C、由实参传给形参 D、再由形参传回实参 B

81 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、ABC456789 A

82

有如下程序

long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%ld\n",fib(3)); } 该程序的输出结果是______。 A、2 B、4 C、6 D、8 B

83 设函数 fun 的定义形式为

void fun(char ch,float x) {……} 则以下对函数 fun A、fun("abc",3.0); B、t=fun('D',16.5); C、fun ('65',2.8); D、fun(32,32); D ______。

84 有以下程序 char fun(char x,char y) { if(x<y) return x; return y; } main() { int a='9',b='8',c='7'; printf("%c\n",fun(fun(a,b),fun(b,c))); } 程序的执行结果是______。 A、函数调用出错 B、8 C、9 D、7 D

85

______。 A、函数调用可以作为独立的语句存在 B、函数调用可以作为一个函数的实参 C、函数调用可以出现在表达式中 D、函数调用可以作为一个函数的形参 答 D

86 有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); ______。 A、3 B、4 C、5 D、有语法错 A

92

以下函数值的类型是______。

fun(float x) { float y; y=3*x-4; return y; } A、int B、不确定 C、void D、float

A

93 在C ______。

A、auto B、register C、static D、extern A

94 有以下程序 int f(int a) { return a%2; } main() { int s[8]={1,3,5,2,4,6},i,d=0; for(i=0;f(s[i]);i++) d+=s[i]; printf("%d\n",d); } 程序运行后的输出结果是______。 A、9 B、11 C、19 D、21 A

95 在C ______。

A、auto B、static C、extern D、无存储类别 C

97 若程序中定义了以下函数 double myadd(double a,double b) { return (a+b); }

是 ______。 A、double myadd(double a,b); B、double myadd(double,double); C、double myadd(double b,double a); D、double myadd(double x,double y); A

98 若有以下程序 #include <stdio.h> void f(int n) main()

{ void f(int n); f(5); } void f(int n); { printf("%d\n",n); } 则以下叙述不正确的是______。 A、若只在主函数中对函数 f B、若在主函数前对函数 f C D、函数 f C void 将其类型定义为无值型 f 函数重复说明 f f

99 下列叙述中正确的是______。 A、C 语言编译时不检查语法 B、C 语言的子程序有过程和函数两种 C、C 语言的函数可以嵌套定义 D、C 语言所有函数都是外部函数 D

101 以下不能正确定义二维数组的选项是______。

A、int a[2][2]={{1},{2}}; B、int a[][2]={1,2,3,4}; C、int a[2][2]={{1},2,3}; D、int a[2][]={{1,2},{3,4}}; D

102 以下能正确定义二维数组的是______。 A、int a[][3]; B、int a[][3]={2*3}; C、int a[][3]={}; D、int a[2][3]={{1},{2},{3,4}}; B

103 以下程序的输出结果是______。 main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for (i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); }

A、18 B、19 C、20 D、21 A

104 以下程序的输出结果是______。 main() { int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); } A、1,5,9 B、1,4,7 C、3,5,7 D、3.6.9 C

105 有以下程序 main() { int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf("%d",t[2-i][i]); } 判序执行后的输出结果是______。 A、753 B、357 C、369 D、751

B

106 以下数组定义中错误的是______。 A、int x[][3]={0} B、int x[2][3]={{1,2},{3,4},{5,6}}; C、int x[][3]={{1,2,3},{4,5,6}}; D、int x[2][3]={1,2,3,4,5,6}; B 107 以下数组定义中不正确的是______。 A、int a[2][3]; B、int b[][3]={0,1,2,3}; C、int c[100][100]={0}; D、int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; D

108 有以下程序 main() { int m[][3]={1,4,7,2,5,8,3,6,9};

int i,j,k=2; for(i=0;i<3;i++) { printf("%d ",m[k][i]); } } 执行后输出结果是______。 A、4 5 6 B、2 58 C、3 6 9 D、7 8 9 C

109 以下能正确定义数组并正确赋初值的语句是______。 A、int N=5,b[N][N]; B、int a[1][2]={{1},{3}}; C、int c[2][]={{1,2},{3,4}}; D、int d[3][2]={{1,2},{34}}; D

111 以下程序的输出结果是______。 main() { int 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、5430D、输出值不定 A

112 定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是______。 for(i=0;i<3;i++) printf("%d ",x[i][2-i]); A、1 5 9 B、1 47 C、3 5 7 D、3 6 9 C

113 有以下程序 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 ______。

B

114 以下程序的输出结果是______。 main() { char w[][10]={"ABCD","EFGH","IJLK","MNOP"},k; for(k=1;k<3;k++) printf("%s\n",w[k]); D 、EFGH IJLK C 、EFG JK O B 、ABCD EFG IJ M } A、ABCD FGH KL D

130

______。 A、数组的长度 B、数组的首地址 C、数组每一个元素的地址 D、数组每个元素中的值 B

132 有以下程序 void sum(int a[]) { a[0]=a[-1]+a[1]; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum (&a[2]); printf("%d\n",a[2]); } 程序运行后输出结果是______。 A、6 B、7 C、5 D、8 A

138 main()

有以下程序

{ char s[]="abcde"; s+=2; printf("%d\n",s[0]); } 执行后的结果是______。 A、输出字符 a 的 ASCII 码 B、输出字符 c 的 ASCII 码 C、输出字符 c D、程序出错 D

139

#include <stdio.h> f(int b[],int n) { int i,r; r=1; for(i=0;i<=n;i++) r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9};

x=f(a,3); printf("%d\n",x); } 上面程序的输出结果是______。 A、720 B、120 C、24 D、6 B

140 若要求定义具有 10 个 int 形元素的一维数组 a A、#define N 10 int a[N]; B、#define n 5 int a[2*n]; C、int a[5+5]; D、int n=10,a[n]; D ______。

141 A、int a[]="string"; B、int a[5]={0,1,2,3,4,5}; C、char s="string"; D、char a[]={0,1,2,3,4,5}; D

______。

144 以下能正确定义一维数组的选项是______。 A、int a[5]={0,1,2,3,4,5}; B、char a[]={0,1,2,3,4,5}; C、char a={'A','B','C'}; D、int a[5]="0123"; B

145 有如下程序 main() { int n[5]={0,0,0},i,k=2; for(i=0;i<k;i++) n[i]=n[i]+1; printf("%d\n",n[k]); } 该程序的输出结果是______。 A、不确定的值 B、2 C、1 D、0 D

146 以下程序的输出结果是______。

main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); } A、258 B、741 C、852 D、369 C 147 k 中的值为______。 int k=3,s[2]; s[0]=k; k=s[1]*10; A、不定值 B、33 C、30 D、10 A

170 以下能正确计算定义且赋初值的语句是______。 A、int n1=n2=10; B、char c=32; C、fioat f=f+1.1; D、double x=12.3E2.5 B

171 以下合法的赋值语句是______。

A、x=y=100 B、d--; C、x+y; D、c=int(a+b); B

172 下列语句中符合 C 语言语法的赋值语句是______。 A、a=7+b+c=a+7; B、a=7+b++=a+7; C、a=7+b,b++,a+7 D、a=7+b,c=a+7; D

173

请选出合法的 C 语言赋值语句______。

A、a=b=58 B、i++; C、a=58,b=58 D、k=int(a+b); B

174 下面程序的输出是______。 main() { int x=10,y=3; printf("%d\n",y=x/y); } A、0 B、1 C、3 D、不确定的值

C

175 已知字母 A 的 ASCII 码为十进制的 65 main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A、67,D B、B,C C、C,D D、不确定的值 A 176 下列程序的运行结果是______。 #include <stdio.h> main() { int a=2,c=5; printf("a=%d,b=%d \n",a,c); } A、a=%2,b=%5 B、a=2,b=5 C、a=d,b=d D、a=%d,b=5d ______。

B

177 以下程序的输出结果是______。 #include <stdio.h> main() { int a=2,c=5; printf("a=%%d,b=%%d\n",a,c); } A、a=%2,b=%5 B、a=2,b=5 C、a=%%d,b=%%d D、a=%d,b=%d D

178 有以下程序 main( ) { int x=102,y=012; printf("%2d,%2d\n",x,y); } 执行后输出结果是______。 A、10,01 B、02,12 C、102,10 D、02,10 C

179 有以下程序 main() { int a=666,b=888; printf("%d\n",a,b); } 程序运行后的输出结果是______。 A、错误信息 B、666 C、888 D、666,888 B

180 有以下程序 #include <stdio.h> main() { char c1='1',c2='2'; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); } a <回车> A、变量 C1 被赋予字符 a c2 被赋予回车符 ______。

B、程序将等待用户输入第 2 个字符 C、变量 c1 被赋予字符 a, c2 中仍是原有字符 2 D、变量 c1 被赋予字符 a,c2 中将无确定值 A

181 123<空格>456<空格>789<回车> main() { char s[100]; int c,i; scanf("%c",&c); scanf("%d",&i); scanf("%s",s); printf("%c,%d,%s \n",c,i,s); } A、123,456,789 B、1,456,789 C、1,23,456,789 D、1,23,456 D ______。

182 int b;char c[10]; A、scanf("%d%s",&b,&c); ______。

B、scanf("%d%s",&b,c); C、scanf("%d%s",b,c); D、scanf("%d%s",b,&c); B

184 ______。 A、getc() B、gets() C、getchar()D、scanf() B

186 有以下程序 #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 D 188 有以下程序 main() { int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } m 中的值为 123 n 中的数值为 456 p 中的值为 789

则正确的输入是______。 A、m=123n=456p=789 B、m=123 n456 p=789 C、m=123,n=456,p=789 D、123 456 789 A

189 有以下程序段

int m=0,n=0; char c='a'; scanf("%d%c%d",&m,&c,&n); printf("%d,%c,%d\n",m,c,n); 10A10<回车> A、10,A,10 B、10,a,10 C、10,a,0 D、10,A,0 A 据输入 192 int x,y; 变量 y 得到数值 12 A、11 12<回车> B、11,12<回车> C、11, 12<回车> D、11,<回车> 12<回车> A scanf("%d,%d",&x,&y);语句使变量 x 得到数据 11 ______。 ______。

193 在嵌套使用 if C 语言规定 else 总是______。

A、和之前与其具有相同缩进位置的 if 配对

B、和之前与其最近的 if 配对 C、和之前与其最近的且不带 else 的 if 配对 D、和之前的第一个 if 配对 C if 语句和用 if 语句构成的选择结构 195 x 的值是______。 a=b=c=0;x=35; if(!a) x--; else if(b) ; if(c) x=3; else x=4; A、34 B、4 C、35 D、3 B if 语句和用 if 语句构成的选择结构 196 有以下程序 main() { int i; for(i=1;i<40;i++) { if(i++%5==0)

if(++i%8==0) printf("%d ",i); } printf("\n"); } 执行后的输出结果是______。 A、5 B、24 C、32 D、40 C if 语句和用 if 语句构成的选择结构 198 有如下程序 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 D、3 C if 语句和用 if 语句构成的选择结构

199 请读程序: #include<math.h> #include<stdio.h> main() { float x,y,z; scanf("%f%f",&x,&y); z=x/y; while(z) { if(fabs(z)>1.0) { x=y; y=z; z=x/y; } else break; } printf("%f\n",y); } 若运行时从键盘上输入 3.6 2.4<CR>(<CR>表示回车) A、1.500000 B、1.600000 C、2.000000 D、2.400000 B ______。

if 语句和用 if 语句构成的选择结构 204 有以下程序 main()

{ int k=5,n=0; while(k>0) { switch(k) { default : break; case 1: n+=k; case 2: case 3: n+=k; } k- -; } printf("%d\n",n); } 程序运行后的输出结果是______。 A、0 B、4 C、6 D、7 D switch 语句以及用 switch 语句和 break 语句构成的选择结构 207 有以下程序 main() { int i; for(i=0;i<3;i++) switch(i)

{ case 1: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); } } 执行后输出结果是______。 A、011122 B、012 C、012020 D、120 A switch 语句以及用 switch 语句和 break 语句构成的选择结构 209 有如下程序 main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } 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 A

switch 语句以及用 switch 语句和 break 语句构成的选择结构 210 以下程序的输出结果是______。 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 A

switch 语句以及用 switch 语句和 break 语句构成的选择结构 212 下列叙述中正确的是______。 A、break 语句只能用于 switch 语句 B、在 switch 语句中必须使用 default C、break 语句必须与 switch 语句中的 case 配对使用 D、在 switch D switch 语句以及用 switch 语句和 break 语句构成的选择结构 213 设a A、10<a<15 B、a= =11||a==12||a= =13||a==14 C、a>10 && a<15 D、!(a<=10)&&!(a>=15) A :10<a<15 的 C 语言表达式是______。 break 语句

214 以下程序的输出结果是______。 main() { int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d\n",d);

} A、1 B、0 C、非 0 的数 D、-1 A

215 语句:printf("%d",(a=2)&&(b=-2));的输出结果是______。 A、无输出 B、结果不确定 C、-1 D、1 D 216 设 a、b、c、d、m、n 均为 int 逻辑表达式(m=a>b)&&(n=c>d) A、0 B、1 C、2 D、3 C a=5、b=6、c=7、d=8、m=2、n=2 n 的值为______。

217 若变量 c 为 char A、'a'<=c<='z' B、(c>='a')||(c<='z') C、('a'<=c)and('z'>=c) D、(c>='a')&&(c<='z') D c 为小写字母的表达式是______。

218 a≥10 或 a≤0”的 C 语言表达式是______。 A、a>=10 or a<=0 B、a>=0 | a<=10 C、a>=10 && a<=0 D、a>=10 || a<=10 D

219 有如下程序 main() { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a<b); printf("%d,%d\n",k,m); } 程序运行后的输出结果是______。 A、0,0 B、0,1 C、1,0 D、1,1 C

220 设 int x=1,y=1;表达式(!x||y--)的值是______。 A、0 B、1 C、2 D、-1 B

221 int a=2,b=3,c=4; A、(!a==1)&&(!b==0) B、(a<b)&&!c||1 C、a&&b D、a||(b+b)&&(c-a) A 0 的表达式是______。

222 若要求在 if 后一对圆括号中表示 a 不等于 0 ______。 A、a<>0 B、!a C、a=0 D、a D

223 有如下程序段 int a=14,b=15,x; char c='A'; x=(a&&b)&&(c<'B'); x 的值为______。 A、true B、false C、0 D、1 D

224 能正确表示 a 和 b 同时为正或同时为负的逻辑表达式是______。

A、(a>=0‖b>=0)&&(a<0‖b<0) B、(a>=0&&b>=0)&&(a<0&&b<0) C、(a+b>0)&&(a+b<=0) D、a*b>0 D

225 若 x 是 int for(x=3; x<6; x++) printf((x%2)?("**%d"):("##%d\n"),x); 上面程序片段的输出结果是______。 D

227 以下程序的输出结果是______。 main() {int a=5,b=4,c=6,d; printf("%d\n",d=a>b?(a>c?a:c):(b)); } A、5 B、4 C、6 D、不确定 C

228 若整型变量 a、b、c、d 1、4、3、2。则条件表达式 a<b?a:c<d?c:d 的

值是______。 A、1 B、2 C、3 D、4 A

229

int x,y;

(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是______。 A、(x-y>0) B、(x-y<0) C、(x-y<0||x-y>0) D、(x-y= =0) C

230 有以下程序段 int k=0,a=1,b=2,c=3; k=a<b?b:a; k=k>c?k:b; k 的值是______。 A、3 B、2 C、1 D、0 B

231 A、if((a>b)&&(b>c)) k=1; else k=0;

k=a>b?(b>c?1:0):0; 功能等价的是_____。

B、if((a>b)||(b>c)) k=1; else k=0; C、if(a<=b) k=0; else if(b<=c) k=1; D、if(a>b) k=1; else if(b>c) k=1; else k=0; A

232

w、x、y、z、m 均为 int

w=1;x=2;y=3;z=4; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z; m 的值是______。 A、4 B、3 C、2 D、1 D

233 main() { int k=4,n=0; for(;n<k;)

{ n++; if(n%3!=0) continue; k--; } printf("%d,%d\n",k,n); } 程序运行后的输出结果是______。 A、1,1 B、2,2 C、3,3 D、4,4 C break 和 continue 语句在循环中的作用 234 有如下程序 main() { int x=23; do { printf("%d",x--); } while(!x); } 该程序的执行结果是______。

A、321 B、23 C、不输出任何内容 D、陷入死循环 B do-while 语句和 do-while 语句构成的循环结构 235 有以下程序 main() { int s=0,a=1,n; scanf("%d",&n); do { s+=1; a=a-2; } while(a!=n); printf("%d\n",s); } 若要使程序的输出值为 2 A、-1 B、-3 C、-5 D、0 B do-while 语句和 do-while 语句构成的循环结构 236 有以下程序段 n 输入的值是______。

int n,t=1,s=0; scanf("%d",&n); do { s=s+t; t=t-2; } while(t!=n); ______。 A、任意正奇数 B、任意负偶数 C、任意正偶数 D、任意负奇数 D do-while 语句和 do-while 语句构成的循环结构 239 有以下程序 main() { int i=0,s=0; do { if(i%2) { i++; continue; } i++; s+=i; }

while(i<7); printf("%d\n",s); } 执行后输出结果是______。 A、16 B、12 C、28 D、21 A do-while 语句和 do-while 语句构成的循环结构 240 下面的程序的运行结果是______。 main() { int x=3; do { printf("%d\n",x-=2); } while(!(--x)); } A、输出的是 1 B、输出的是 1 和-2 C、输出的是 3 和 0 D、是死循环 B do-while 语句和 do-while 语句构成的循环结构 241

以下叙述正确的是______。 A、do-while 语句构成的循环不能用其它语句构成的循环来代替 B、do-while 语句构成的循环只能用 break 语句退出 C、用 do-while D、用 do-while D do-while 语句和 do-while 语句构成的循环结构 242 以下程序的输出结果是______。 main() { int x=10,y=10,i; for(i=0;x>8;y=++i) printf("%d %d ",x--,y); } A、10 1 9 2 B、9 8 7 6 C、10 9 9 0 D、10 10 9 1 D while 后的表达式为非零时结束循环 while 后的表达式为零时结束循环

for 语句和用 for 语句构成的循环结构 244 以下程序的输出结果是______。 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 B for 语句和用 for 语句构成的循环结构 245 f=n!的程序段是______。 A、f=0; for(i=1;i<=n;i++) f*i; B、f=1; for(i=1;i<n;i++) f*=i; C、f=1; for(i=n;i>1;i++) f*i; D、f=1; for(i=n;i>=2;i--) f*=i; D 247 s、a、b、c s=a; a、c c 大于 0 for 语句和用 for 语句构成的循环结构

for(b=1;b<=c;b++) s=s+1; 则上述程序段功能等价的赋值语句是______。 A、s=a+b; B、s=a+c; C、s=s+c; D、s=b+c; B for 语句和用 for 语句构成的循环结构 248 有以下程序 main() { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s); } 程序执行后的输出结果是______。 A、自然数 1 B、自然数 1 C、自然数 1 D、自然数 1 D for 语句和用 for 语句构成的循环结构 249 有如下程序 9 的累加和 10 的累加和 9 中奇数之和 10 中偶数之和

main() { int i,sum; for(i=1;i<=3;sum++) sum+=i; printf("%d\n",sum); } 该程序的执行结果是______。 A、6 B、3 C、死循环 D、0 C for 语句和用 for 语句构成的循环结构 250 若i j 已定义为 int ______。

for(i=5;i;i--) for(j=0;j<4;j++){ …… } A、20 B、25 C、24 D、30 A for 语句和用 for 语句构成的循环结构 251 有以下程序 main() { int k=5; while(--k) printf("%d",k-=3);

printf("\n"); } 执行后的输出结果是______。 A、1 B、2 C、4 D、死循环 A while 语句和 while 语句构成的循环 252 以下程序的输出结果是______。 main() { int num=0; while(num<=2) { num++; printf("%d\n",num); } } B while 语句和 while 语句构成的循环 253 while 循环的循环次数是______。 main() { int i=0; while(i<10)

{ if(i<1) continue; if(i==5) break; i++; } …… } A、1 B、10 C、6 D D while 语句和 while 语句构成的循环 254 t 为 int while(t=1) { …… } 则以下叙述中正确的是______。 A、循环控制表达式的值为 0 B、循环控制表达式的值为 1 C、循环控制表达式不合法 D、以上说法都不对 B while 语句和 while 语句构成的循环 255 t 的值为 0

有如下程序 main() { int n=9; while(n>6) { n--; printf("%d",n); } } 该程序段的输出结果是______。 A、987 B、876 C、8765 D、9876 B while 语句和 while 语句构成的循环 256 main() {int p[7]={11,13,14,15,16,17,18}; int i=0,k=0; while(i<7&&p[i]%2) { k=k+p[i]; i++; } printf("%d\n",k); } 执行后输出结果是______。

A、58 B、56 C、45 D、24 D while 语句和 while 语句构成的循环 257 要求通过 while 正确的程序段是______。 A、while((ch=getchar())!='N' printf("%c",ch) ; B、while(ch=getchar()!='N' printf("%c",ch) ; C、while(ch=getchar())=='N' printf("%c",ch); D、while((ch=getchar())=='N' printf("%c",ch); A while 语句和 while 语句构成的循环 258 int k=0; while(k=1) k++; while 循环执行的次数是______。 A、无限次 B C、一闪也不执行 D、执行 1 次 A while 语句和 while 语句构成的循环 有以下程序段 N

259 以下程序的输出结果是______。 main() { int n[3][3],i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0;j<2;j++) n[i+1][j+1]+=n[i][j]; printf("%d \n",n[i][j]); } A、14 B、0 C、6 D、值不确定 C

260 main()

有以下程序

{ int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2)

continue; x++; } x++; } printf("x=%d\n",x); } 程序执行后的输出结果是______。 A、x=4 B、x=8 C、x=6 D、x=12 B

261 下列程序的输出结果是______。 main() { int i,j,m=0,n=0; for(i=0;i<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 C

262 有以下程序 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 D

263 阅读下列程序: main() { int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]+1; printf("%d\n",n[1]); } 下述程序运行后输出结果是______。 A、2 B、1 C、0 D、3 D

287 若有定义和语句: char s[10]:s="abcd";printf("%s\n",s); 则结果是(以下 u 代表空格) ______。 A、输出 abcd B、输出 a C、输出 abcduuuuu D、编译不通过

D

295

strcat(strcpy(str1,str2),str3)的功能是______。

A、将串 str1 复制到串 str2 中后再连接到串 str3 之后 B、将串 str1 连接到串 str2 之后再复制到串 str3 之后 C、将串 str2 复制到串 str1 中后再将串 str3 连接到串 str1 之后 D、将串 str2 连接到串 str1 之后再将串 str1 复制到串 str3 中 C

298 以下正确定义字符串的语句是______。 A、char str[]={'\064'} B、char str="\x43"; C、char str='' D、char str[]="\0"; D

305 有以下程序 main() { char s[]="\n123\\";

printf("%d,%d\n",strlen(s),sizeof(s)); } 执行后输出结果是______。 A、赋初值的字符串有错 B、6,7 C、5,6 D、6,6 C 308 若有以下定义和语句 char c1='b',c2='e'; printf("%d,%c\n",c2-c1,c2-'a'+'A'); 则输出结果是: ______。 A、 2,M B、3,E C、2,E D、输出项与对应的格式控制不一致,输出结果不确定 B

309 已定义 c A、c='97'; B、c="97"; C、c=97; D、c="a"; C ______。

310 数字字符 0 的 ASCII 值为 48 ______。

main() { char a='1',b='2'; printf("%c,",b++); printf("%d\n",b-a); } 程序运行后的输出结果是 A、3,2 B、50,2 C、2,2 D、2,50 C 311 main() { char c='z'; printf("%c",c-25); } A、a B、Z C、z-25 D、y A ______。

312 若变量 a 是 int A、a 的值是字符 C B、a 的值是浮点型 C、不允许字符型和浮点型相加 D、a 的值是字符'A'的 ASCII 值加上 1 a='A'+1.6; ______。

D

313 下列程序执行后的输出结果是______。 main() { int x='f'; printf("%c \n",'A'+(x-'a'+1)); } A、G B、H C、I D、J A 314 以下程序的输出结果是______。 main() { int i; for(i='A';i<'I';i++,i++) printf("%c",i+32); printf("\n"); } A C、acegi D、abcdefghi 答案 B B、aceg

315 有如下程序 #include <stdio.h> main() { printf("%d\n",NULL); } 程序运行后的输出结果是______。 A、0 B、1 C A 1 D、NULL

316 char a='\72';则变量 a______。 A、包含 1 个字符 B、包含 2 个字符 C、包含 3 个字符 D、说明不合法 A

317

* *** ***** *******

main() { int i,j; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(" "); for(j=1;j<=____;j++) printf("*"); printf("\n"); } } 在下划线处应填入的是______。 A、i B、2*i-1 C、2*i+1 D、i+2 B for 循环嵌套 318 有以下程序 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=1;j<=i;j++) printf("%4c",' '); for(j=____;j<4;j++) printf("%4d",num[i][j]); printf("\n"); } }

若要按以下形式输出数组右上半三角 1234 678 11 12 16 则在程序下划线处应填入的是______。 A、i-1 B、I C、i+1 D、4-i B for 循环嵌套 319 有以下程序 main() { int a=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1) a+=5; continue;} a-=3; } printf("%d\n",b); } 程序运行后的输出结果是______。 A、3 B、4 C、5 D、6

B

320 r 输入数据后计算半径为 r 的圆的面积 s 程序在编译时出错。 main() /* Bejinning */ { int r; float s; scanf("%d",&r); s=*π*r*r; printf("s=%f\n",s); } 出错的原因是______。 A、注释语句书写位置错误 B、存放圆半径的变量 r 不应该定义为整形 C、输出语句中格式描述符非法 D、计算圆面积的赋值语句中使用了非法变量 D

322 s=1+1/2+1/3+...+1/10 main()

{ int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } ______。 A、s=1.0; B、for(n=10;n>1;n--); C、s=s+1/n; D、printf("%6.4f\n",s); C

326 有以下程序 main() { int a,b,d=25; a=d/10%9; b=a&&(-1); printf("%d,%d\n",a,b); } 程序运行后的输出结果是______。 A、6,1 B、2,1 C、6,0 D、2,0 B

328 若执行下面的程序时从键盘上输入 3 和 4 main() { int a,b,s; scanf("%d %d",&a,&b); s=a; if(a<b) s=b; s=s*s; printf("%d\n",s); } A、14 B、16 C、18 D、20 B ______。

329 以下程序的输出结果是______。 #include <stdio.h> main() { int i; for(i=1;i<5;i++) { if(i%2) printf("*"); else continue;

printf("#"); } printf("$\n"); } A、*#*#*#$ B、#*#*#*$ C、*#*#$ D、#*#*$ C 331 以下程序的输出结果是______。 main() { int i; for(i=1;i<6;i++) { if(i%2) { printf("#"); continue; } printf("*"); } printf("\n"); } A、#*#*# B、##### C、***** D、*#*#* A

332

以下程序的输出结果是______。 #include <stdio.h> 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 B

333 下面程序的输出结果是______。 #include <stdio.h>

main() { int i=2; printf("%d",f(i,i+1)); } int f(int a,int b) { int c; c=a; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } A、-1 B、0 C、1 D、2 A

336 下面的程序运行结果为______。 main() { int x=3,y=0,z=0; if(x=y+z) printf("* * * *");

else printf("# # # #"); } A、有语法错误不能通过编译 B、输出* * * *。 C D、输出# # # #。 D 知识点 337 若执行以下程序时从键盘上输入 9 main() { int n; scanf("%d",&n); if(n++<10) printf("%d\n",n); else printf("%d\n",n--); } A、11 B、10 C、9 D、8 B ______。

339 ______。 A、if(a) printf("%d\n",x); else printf("%d\n",y); B、if(a==0) printf("%d\n",y); else printf("%d\n",x);

C、if(a!=0) printf("%d\n",x); else printf("%d\n",y); D、if(a==0) printf("%d\n",x); else printf("%d\n",y); D if 语句 340 有以下程序 #include <string.h> main() {charp[]={'a','b','c'}; char q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); } 以下叙述中正确的是______。 A、在给 p 和 q B、由于 p C、由于 q D、由于 p 和 q B q 数组中字符串长度为 3 p 数组中字符串长度为 3 3

341 main() {char p[]={'a','b','c'},q[]="abc"; printf("%d%d\n",sizeof(p),sizeof(q)); };

程序运行后和输出结果是______。 A、4 4 B、3 3 C、3 4 D、4 3 C

342 当把以下四个表达式用作 if ______。 A、K%2 B、K%2==1 C、(K%2)!=0 D、!K%2==1 D

343 以下叙述中错误的是______。 A、C 语句必须以分号结束 B、复合语句在语法上被看作一条语句 C、空语句出现在任何位置都不会影响程序运行 D、赋值表达式末尾加分号就构成赋值语句 C

344 若变量 x、y A、++x,y=x-- B、x+1=y C 语言语法的表达式是______。

C、x=x+10=x+y D、double(x)/10 A 345 以下叙述中正确的是______。 A、C 程序中注释部分可以出现在程序中任意合适的地方 B、花括号“{”和“}”只能作为函数体的定界符 C、构成 C D、分号是 C A

填空复习题 1 以下程序的输出结果是______。 main() { int a=0; a+=(a=8); printf("%d\n",a); } 16

2 int a=10,b=9,c=8; b 中的值是______。

c=(a-=(b-5)); c=(a % 11)+(b=3); 3

3

以下程序运行后的了输出结果是______。

main() { int a=1,b=2,c=3; if(c=a) printf("%d\n",c); else printf("%d\n",b); } 1

4 若有语句 int i=-19, j=i%4; printf("%d\n",j); 则输出结果是______。 -3

7 设 y 是 int y%2 y 为奇数的关系表达式______。

12 下面程序的输出是______。 main() { int x=2; while(x--); printf("%d\n", x);} -1 19 以下程序的输出结果是______。 void fun() { static int a=0; a+=2; printf("%d",a); } main() { int cc; for(cc=1;cc<4;cc++) fun(); printf("\n") } 246

21

若有以下程序 int f(int x,int y) { return(y-x)*x; } main() { int a=3,b=4,c=5,d; d=f(f(3,4),f(3,5)); printf("%d\n",d); } 执行后输出结果是______。 9 27 以下程序的输出结果是______。 main () {int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0; for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1]; printf("%d\n",s); } 30

32 以下程序段的输出结果是______。 int i=9;

printf("%o\n",i); 11

34 有以下程序 #include <stdio.h> main() { char ch1,ch2; int n1,n2; ch1=getchar(); ch2=getchar(); n1=ch1-'0'; n2=n1*10+(ch2-'0'); printf("%d\n",n2); } 12<回车> 12 36 以下程序运行后的输出结果是______。 main() {int a=1,b=3,c=5; if (c=a+b) printf("yes\n"); else printf("no\n"); } yes ______。

if 语句和用 if 语句构成的选择结构 37 若从键盘输入 58 main() { int a; scanf("%d",&a); if(a>50) printf("%d",a); if(a>40) printf("%d",a); if(a>30) printf("%d",a); } 585858 if 语句和用 if 语句构成的选择结构 39 以下程序的输出结果是______。 main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } 0 ______。

40 若有以下程序

main() { int p,a=5; if(p=1!=0) printf("%d\n",p); else printf("%d\n",p+2); } 执行后输出结果是______。 1 逻辑运算 41 表示条件:10<x<100 或 x<0 的 C 语言表达式是______。 (x>10&&x<100||x<0)

42 若已知 a=10,b=20,则表达式 !a<b 的值为______. 1

43 表示“整数 x 的绝对值大于 5”时值为“真”的 C 语言表达式是______。 x>5||x<-5

45

以下程序运行后的输出结果是______。 main() {int p=30; printf("%d\n",(p/3>0 ? p/10:p%3)); } 3

46 以下程序运行后的输出结果是______。 main() { int x,a=1,b=2,c=3,d=4; x=(a<b)?a:b; x=(x<c)?x:c; x=(d>x)?x:d; printf("%d\n",x); } 1

49 有以下程序 main() { int t=1,i=5; for(;i>=0;i--) t*=i;

printf("%d\n",t); } 执行后输出结果是______。 0 for 语句和用 for 语句构成的循环结构 50 以下程序的输出结果是______。 main() { int s,i; for(s=0,i=1;i<3; i++,s+=i); printf("%d\n",s); } 5 for 语句和用 for 语句构成的循环结构 53 以下程序运行后的输出结果是______。 main() {int p[7]={11,13,14,15,16,17,18}; int i=0,j=0; while(i<7&&p[i]%2==1)j+=p[i++]; printf("%d\n",j); } 24

while 语句和 while 语句构成的循环 55 '#'号的个数是______。 #include <stdio.h> main() {int i,j; for (i=1;i<5;i++) for (j=2;j<=i;j++) putchar('#'); } 6

60 以下程序的输出结果是______。 main() { char s[]="abcdef"; s[3]='\0'; printf("%s\n",s); } abc

64 下列程序段的输出结果是______。 main()

{ char b[]="Hello,you" b[5]=0; printf("%s\n",b); } Hello

68 main()

以下程序运行后的输出结果是______。

{char m; m='B'+32; printf("%c\n",m); } b

69 已知字母 A 的 ASCII 码为 65.以下程序运行后的输出结果是______。 main() {char a,b; a=?A?+?5?-?3?; b=a+?6?-?2? printf(“%d%c\n”,a,b); } 67G

71 若有以下程序 main() { char a; a='H'-'A'+'0'; printf("%c\n",a); } 执行后输出结果是______。 7 72 1+12+123+1234+12345。请填空。 Main() {int t= 0,s=0,I; for (I=1;I<=5;I++) {t=I+______;s=s+t;} printf(“s=%d\n”,s); } t*10~10*t

74 以下函数的功能是:求 x 的 y

double fun(double x,int y) { int i; double z; for(i=1,z=x;i<y;i++) z=z*______; return z; } x

7 1.C

0.5

A 过程 B 函数 C 子程序 D 标识符 2. main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D 不确定值 3.假设变量 a,b A7B8C9D2 (a=5,b=2,a>b?a++:b++,a+b)

4.设 a 为 int 型 a=125.534; a=(int)125.521%4; a=5<<2;

a

A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5. int k=10; while(k=0) k=k-1; A 循环执行一次 B 循环是无限循环 C 循环体语句一次也不执行 D 循环体语句执行一次 6. int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在 C A 函数的定义可以嵌套,但函数的调用不可以嵌套 B 函数的定义不可以嵌套,但函数的调用可 以嵌套 C 函数的定义和函数的调用都不可以嵌套 D 函数的定义和函数的调用都可以嵌套 8.

func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9. #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); } A d=70 B d=80 C d=140 D d=700 10. struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 11. enum week{sun 5 mon=4 tue wed thu fri sat} w Turbo C w 。

A tue B sat C fri D thu 12.下面选项中正确的赋值语句是(设 char a[5],*p *p="abcd"; D *a="abcd"; a;) A p="abcd"; B a="abcd"; C

13.

6

struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 } p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 14.C A 索引文件和文本文件两种 B 文本文件一种 C 二进制文件一种 D ASCII 码文件和二进制文件两种 5 1 2 Turbo C 2 0.5 *p;

int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为 A。

3

break

continue

4 5 6 7 8 9 10 char *p="girl" char *p(char a[10]);则 p fopen("file","r+");打开的文件"file" 10 2 p p 的值是字符串"girl" strlen("ASDFG\n")的值是 7 return

1.float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<10;i++) aver=sum/10; return(aver); } main( ) { float score[10] {89,67.5,78,91,56,82.5,65,70,79,88},aver; int i; aver=average (score); printf (“average score is %5.2f\n”,aver); } 2.main( ) { char a[5]={?A?,?B?,?C?,?D?,?E?},*p=a,**pa; for(p=0;p<a+5;p++) printf(“%2c”,*p); printf(“\n”); printf(“%2c\n”,**(pa=&p)); } 3.main( ) { int a,b,s=0; sum=sum+array[i];

for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf(“a=%d\tb=%d\n”,a,b); } 4.main() { printf(“main( ) :%d\n”,fact(5)); fact(-5); } fact(int value) { int f; if(value<0) { printf(“Arg error\n"); return(-1); } else if(value==1||value==0) f=1; else f=value*fact(value-1)+1; printf(“This called value=%d\n”,f); return f; }

5.main( ) { int a=012,b=0x12,k=12; char c=?\102?,d=?\r?; printf(“a=%d\tb=%d\tk=%d\n”,a,b,k); printf(“c=%c,d=%c%o\n”,c,d,a); a=?A?; c=49; printf(“a=%d\tc=%c\n”,a,c); } 四阅读下列程序, 1.有一个 3*4 { int i,j,max; max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j]>max) max=array[i][j]; (2) ; } main( ) { int a[3][4], i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) 8 max_value( (1) ) 1

(3) ; printf(“max value is %d\n”,max_value(a)); } 2.输入 x、y #include “stdio.h” main( ) { int x,y, *px,*py, (4) ; scanf(“%d%d”,&x,&y); (5) ; (6) ; if(x<y) { p=px; px=py; py=p; } printf(“x=%d,y=%d\n”,x,y); printf(“MAX=%d,MIN=%d\n”,*px,*py); } 3.用选择排序法对任意 10 个整数按照由小到大排序。 main() { int a[11],i,j,k,t; printf("Please input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<=9;i++) { (7) ; for(j=i+1; (8) ;j++) x、y。

if(a[j]>a[k]) k=j; if(k!=i) { t=a[k]; a[k]=a[i]; a[i]=t;} } printf("The sorted numbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); } 答案 7 1. B 2. C 3. B 4. B 5. C 6. A 7. B 8. A 9. A 10. C 11. A 12. A 13. B 14. D 5 1.× 2.× 3.√ 4.√ 5.× 6.× 7.× 8.× 9.√ 10.√ 10 4. 5. 四阅读下列程序, 8 1 2 1. 2. 3. 0.5 0.5

1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j]) 2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x) 3.(7) (8) 2003C 语言试题 3

24 1 中 buffer

2 buffer size count fp

fread 的调用形式为 fread

A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针 C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数 2 main( ) { int i=010,j=10; printf("%d,%d\n",i++,j--); } A 11,9 B 9,10 C 8,10 D 9,9 3 a 为 int a

a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2; A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20 4 i 和 k 都是 int for

for(i=0,k=-1;k=1;i++,k++) printf("****\n"); A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环 5 { char c; int i; main( )

for(i=65;i<68;i++) { c=i+32; switch(c) { case 'a':case 'b':case 'c':printf("%c,",c);break; default:printf("end");} } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 6 fseek fp -10L 2

A 将文件位置指针从文件末尾处向文件头的方向移动 10 个字节 B 将文件位置指针从当前位置向文件头的方向移动 10 个字节 C 将文件位置指针从当前位置向文件末尾方向移动 10 个字节 D 将文件位置指针移到距离文件头 10 个字节处 7 main( ) { char s1[40]="country",s2[20]="side"; int i=0,j=0; while(s1[i]!='\0') i++; while(s2[j]!='\0') s1[i++]=s2[j++]; s1[i]=0; printf("%s\n",s1); }

A side B country C sidetry D countryside 8 A 主函数 main 中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 C 形式参数是局部变量 D 在一个函数内部, 有效 9 c1

enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white; A1B3C5D6 10 int (*ptr)();其中标识符 ptr

A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是 int 的函 数 C 是一个函数名 D 定义不合法 11 n 个指向整形数据的指针组成的数组 p,

A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 12 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 20 1 2 int a 10,A,12.5 () char c;float f;scanf("%d,%c,%f",&a,&c,&f); a=10,c=?A?,f=12.5。( ) 2 p 与数组 a,

3 4

C

() #define S(a,b) t=a;a=b;b=t 由于变量 t

此宏定义是错误的。( ) 5 Turbo C file

*fp;fp=fopen("a.txt","r");( ) 6 7 char s[ ] "china" Turbo C 系统为数组 s 开辟 6 个字节的内存单元。( )

int a[3][3] {{3,5},{8,9},{12,35}},i,sum=0

for(i=0;i<3;i++) sum+=a[i][2-i];则 sum=21。( ) 8 score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++); 输出结果是 1。( ) 9 量。( ) 10 Turbo C enum aa{ a struct student { int num; char name[10]; float

5,b,c}bb;bb=(enum aa)5;( ) 36 1.main( ) { int i=29,j=6,k=2,s; s=i+i/j%k-9; printf(“s=%d\n”,s); } 6

2.main( ) { int x=31,y=2,s=0; do { s-=x*y; x+=2; y-=3;} while( x%3==0); printf(“x=%d\ty=%d\ts=%d\n”,x,y,s); } 3.main( ) { int a[6] {10,20,30,40,50,60},i; invert(a,0,5); for(i=0;i<6;i++) printf(“%d,”,a[i]); printf(“\n”); } invert(int s[ ],int i,int j) { int t; if(i<j) { invert(s,i+1j-1); t=s[i];s[i]=s[j];s[j]=t; } } 4.#include<stdio.h> main()

{ char str[ ]=“The C program”,c; int i; for(i=2;(c=str[i])!=?\0?;i++) { switch(c) { case ?g?: ++i; break; case ?o?: continue; default: printf(“%c”,c); continue; } printf(“*”); } printf(“\n”); } 5.struct w { char low } union u { struct w byte short word }uw main( ) { int result uw.word=0x1234; char high

printf(“word value:%04x\n”,uw.word); printf(“high byte:%02x\n”,uw.byte.high); printf(“low byte:%02x\n”,uw.byte.low); uw.byte.low=0x74; printf(“word value:%04x\n”,uw.word); result=uw.word+0x2a34; printf(“the result:%04x\n”,result); } 6 main

{ char *s2=“I love China!”,**s1=&s2 char *s3,c,*s4=“w”; s3=&c; *s3=?H?; s2=s2+2; printf(“%s\t%c\t%s\t%c\n”,s2,*s3,s4,**s1); } 四阅读下列程序, 100 两匹小马驮 1 main( ) { int hb,hm,hl,n=0; for(hb=0;hb<=100;hb+= (1) ) 20 2 ? 个空 2 1. 百马百担问题

100

3

for(hm=0;hm<=100-hb;hm+= (2) ) { hl=100-hb- (3) ; if(hb/3+hm/2+2* (3) ==100) { n++; printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl); } } printf("n=%d\n",n); } 2.用“起泡法”对输入的 10 个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; main() { int i,flag; for(flag=1;flag==1;) { scanf("%s",str); flag=0; printf("\n"); } sort(___(4)___); for(i=0;i<N;i++) printf("%c",str[i]); printf("\n");

} sort(char str[N]) { int i,j; char t; for(j=1;j<N;j++) for(i=0;(i<N-j)&&(str[i]!='\0');i++) if(str[i]>str[i+1]) { t=str[i]; ____(5)____; ____(6)____; } } 3. m行n

例如, 3003 2573 1042 则所有靠外侧的各元素值之和为 3+0+0+3+2+3+1+0+4+2=18。 add(int m,int n,int arr[]) { int i,j,sum=0; for(i=0;i<m;i=i+m-1)

for(j=0;j<n;j++) sum=sum+ (7) ; for(j=0;j<n;j=j+n-1) for(i=1; (8) ;i++) sum=sum+arr[i*n+j]; return(sum); } 4. #define N 10 main() { void maxmin(int arr[],int *pt1,int *pt2,int n); int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf("max=%d,min=%d",a,b); } void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; *pt1=*pt2=arr[0]; for(i=1;i<n;i++) { if(arr[i]>*pt1) (9) ; if(arr[i]<*pt2) (10) ; }

} 答案 24 2

1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A ) 7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D ) 2 1. 6. × √ 2. 7. √ √ 3. 8. √ × 36 1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10, 4.e C pr*am 5.word value:1234 6.love China! H w l high byte:12 low byte:34 word value:1274 the result:3ca8 四阅读下列程序, 1.(1) 3 (2) 2 (3)hm hl 2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t 3.(7) arr[i*n+j] arr[i*10+j] 20 2 4. 9. × √ 6 5. 10. × √ 20

(8) i<m-1(或者 i<=m-2) 4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

C 语言试题 1 15 1 2 3 int a=1234; a=a&0377; printf(“%d %o\n”,a,a); 4 a a a=PP*20; a 为 int a 的值是 x 的值为 15 n 的值为 2 x%=(n+=3) t x

int a=7,b=9,t;执行完表达式 t=(a>b)?a:b

char a[3]; 5

#define PR 80 #define PP PR+403 6 7 8 C C C 语言中

随机读写。 9 int a[3]={10,12,30};则 a+1 20 1 int a=12; 表达式 a+=a-=a*=a *(a+2)=

A 12 B 144 C 0 D 132 2 main( ) { int a=011;

printf(“%d\n”,++a); } A 12 B 11 C 10 D 9 3 #define ADD(x) (x)+(x) main() { int a=4,b=6,c=7,d=ADD(a+b)*c; printf(“d=%d”,d); } A d=70 B d=140 C d=280 D d=80 4. char a[5],*p=a;

A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”; 5 k A 10 B 9 C 0 D 1 6 , while k=2; while(k==0) printf( “%d” ,k); k--; printf( “\n” );

A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D 该数组中各元素的值 7 ( )。

A. 相加 B 比较 C 相减 D 指向同一地址 8 struct st{ int n;struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,?\0?},*p; p=&a[0]; A p++->n B p->n++ C (*p).n++ D ++p->n 6

9 A fp

file fopen("file","r"); B fp=fopen("file","w");

C fp=fopen("file","r+"); D fp=fopen("file","w+"); { int m,k,i,n=0; 1 main( ) 28

{ int a[6]={10,6,23,-90,0,3},i; invert(a,0,5); for(i=0;i<6;i++) printf(“%d,”,a[i]); printf(“\n”); } invert(int *s,int i,int j) { int t; if(i<j) { invert(s,i+1j-1); t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; }} 2 f1(int a)

{ int b=0; static int c=3; b+=1; c++; return(a+b+c); } main()

{ int a=1,i; char s1[10]=“java”,s2[10]=“basic”,s[10]; for(i=0;i<3;i++) printf("%d ",f1(a)); printf(“\n”); if(strcmp(s1,s2)) { strcpy(s,s1); puts(s);} printf(“%d,%s\n”,strlen(s2),strcat(s2,s1)); } 3 #define MAX 100

main() { int f[MAX],i,j,k=2,m=5; for(i=0;i<=m;i++) f[i]=1; f[k-1]=2; for(i=k;i<=m;i++) for(j=i-k;j<=i-1;j++) f[i]+=f[j]; printf("%d%5d%5d\n",k,m,f[m]); } 五阅读下列程序, 1 1 main() for(m=101;m<=200;m+=2) { if(n%10==0) printf("\n"); k=sqrt(m); for(i= 2 ;i<=k;i++) if(m%i==0) 3 ; 100 200 间的全部素数。 32

if(i== (4) ) { printf("%d ",m) } } 2 void sort( 1 ) 10 个字符按由大到小排序。 n++;}

char a[ ]; int n; { int i,j,k; char t; for (i=0;i<n-1;i++) { 2 ;

for(j=i+1;j<n;j++) if ( 3 ) k=j;

t=a[k];a[k]=a[i];a[i]=t;} } main( ) { char s[10]; int i; for(i=0;i<10;i++) scanf(“%c”,&s[i]); (4) printf(“the sorted array:\n”); for(i=0;i<10;i++) printf(“%c”, (5) );

printf(“\n”); } 33 main() { int a[3][4],i,j,*p=a[0]; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%d”,p++); for(p=&a[0][0];p<a[0]+12; (1) ) swap(p); (2) ; for(i=0;i<3;i++) { for(j=0;j<4;j++) printf(“%3d”,*p++); printf(“\n”);} } swap(int (3) ) { int min,i,*p2=p1,*p3; (4) ; for(i=0;i<4;i++) { if(*p2<*p3) p3=p2; (5) ; } min=*p1;*p1=*p3;*p3=min; } 3×4 0 列元素对调。

2002 试题 2 20 1 c=--a; 2 3 int a=125; printf(“%d\n”,a>>4); 4 a a a=3、b=2 1.5 a b c a=6; b=++a;

a*=b+8

char a[3]; 5 a=ADD(4+6)*7; a 为 int a 的值是

#define ADD(x) (x)+(x) 6 struct st { int a; struct st b; } *p,x; p=&x; 7 8 9 a C C 中文件结束标志 EOF a 中存放字符串 “friend” a x.b

char a[10]; 10 1

1 2 3 4 5 6 7

Turbo C main

4

main 函数后的任何函数都需在 main return 8 int *p;和语句 printf(“%d”, *p);中的*p 含

9 10 fopen(“file1”,”r+ 20 1 2 C

A a*e/c/b B a*e/b/c C a*e/b*c D a/b/c*e 2 main( ) { int a=7,b=5; printf(“%d\n”,b=b/a); } A 不确定值 B 5 C 1 D 0 3 main() { int k1=1,k2=2,k3=3,x=15;

if(!k1) x--; else if(k2) if(k3) x=4;else x=3; printf(“x=%d\n”,x); } A x=4 B x=15 C x=14 D x=3 4. main() { char s1[20]=“China”,s2[20]=“for”,s[10]; if(strcmp(s1,s2)) printf(“%s\n”, strcat(s2,s1)); else printf(“%d\n”,strlen(s1)); } A Chinafor B 5 C forChina D 3 5 C

A 函数调用作为语句 1 种 B 函数调用作为函数表达式 1 种 C 函数调用作为语句或函数表达式 2 种 D 函数调用作为语句、函数表达式或函数参数 3 种 6 return

A 可以在同一函数中出现多次 B 必须在每个函数中出现 C 只能在除主函数之外的函数中出现一次 D 在主函数中不能出现 7 日” w 中的“生日”是“1993 年 10 月 25

struct worker { int no; char name[20]; char sex;

struct birth{ int day; int month; int year;}a; }; struct worker w; A day=25 month=10 year=1993

B w.birth.day=25; w.birth.month=10; w.birth.year=1993; C w.day=25; w.month=10; w.year=1993; D w.a.day=25; w.a.month=10; w.a.year=1993; 8 fread 的调用形式为 fread buffer size count fp buffer 代表

A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针 C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数 9 int i a[10] *p

A p=a+2; B p=a[5]; C p=a[2]+2; D p=&(i+2); 10 int x0[]={11 12} x1[]={31 x0 32} 300 x1} p=x 12 struct wc{ int a int *b }*p

static struct wc x[2]={100

A *++p->b B ++p->a C p->b D *(p++)->b 25 1 main() 5

{ int number=0; while(number++<=1) printf("*%d,",number);

printf("**%d\n",number); } 2 #define N 7

main() { int i,j,a[N][N]; for(i=1;i<N;i++) { a[i][i]=1; a[i][1]=1; } for(i=3;i<N;i++) for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(j=1;j<=4;j++) printf("%2d",a[4][j]); printf("\n"); } 3 hcf(int u,int v)

{ int a,b,c,r; if(u>v) { c=u; u=v; v=c; } a=u; b=v; while((r=b%a)!=0) { b=a; a=r;} return(a); } main() { int u,v,h,l; u=32; v=48; h=hcf(u,v);

printf("H.C.F=%d\t",h); } 4 main()

{ int a[]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf("%d,%d\n",*p,*(p+3)); } 5 main

{ int y fac(4,&y) printf(“y=%d\n”,y); } fac(int n,int *t) { int s; if((n==1)||(n==0)) *t=1; else { fac(n-1,&s); t=n*s; } } 五阅读下列程序, 1 1000 25 2 (因子包括 1

不包括数本身)

6 的因子是 1、2、3

6=1+2+3

6是

main()

{ int i,a,m; for(i=1;i<1000;i++) { for(m=0,a=l;a<=i/2;a++) if(!(i%a)) (1) ; if( (2) ) printf("%4d",i); } } 2 #define N 10 char str[N]; main() { int i,flag; for(i=0;i<10;i++) scanf("%c",&str[i]); sort(_(1)__); for(i=0;i<N;i++) printf("%c",str[i]); printf("\n"); } sort(str) 10 个字符排序后按从小到大的次序输出。

char str[N]; { int i,j; char t; for(j=1;j<N;j++) for(i=0;i<N-j;i++) if(str[i]> (2) ) { t=str[i]; ______(3)______; ______(4)______; } } 3.3 #include "stdio.h" main() { (1) *in,*out; char ch,infile[10],outfile[10]; printf("Enter the infile name:\n"); scanf("%s",infile); printf("Enter the outfile name:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("Cannot open input file.\n"); exit(0);

} if((out=fopen(outfile,"w"))==NULL) { printf("Cannot open output file.\n"); exit(0); } while(!feof(in)) fputc( (2) ,out); (3) ; (4) ; } 4.4 #define N 10 main() { void maxmin(int arr[],int *pt1,int *pt2,int n); int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf("max=%d,min=%d",a,b); } void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; 最小的元素值。

*pt1=*pt2=arr[0]; for(i=1;i<n;i++) { if(arr[i]>*pt1) (1) ; if(arr[i]<*pt2) (2) ; } } 2002 试题 3 20 1 d C 语言表达式 5>2>7>8 e 2 a

a=6; b=++a; c=--a; d=a++; e=a--; 3 char a=111; a=a^00; printf(“%d %o\n”,a,a); 4 a a

char a[3]; 5 #define PR 8 #define PP PR*40 6 7 8 C char a[3]=“as”;则*a= *(a+2)= a=PP+20; a 为 int a

5 1 2 3 4 5 C 10 1 2 3 4 5 6 7 main 函数后的任何函数都需在 main return 8 int *p;和语句 printf(“%d”, *p);中的*p 含 Turbo C main 1 4 , 1/4+2.75 的值是 3

9 10 fopen(“file1”,”r+ 20 1 a,b 2 0

(A) a*b/a*b==1 (B) a/b*b/a==1 (C) a/b*b+a%b==a (D) a/b*b==a 2 C

(A) 过程 (B) 函数 (C) 子程序 (D) 标识符

3 func((e1,e2),(e3,e4,e5)); (A) 2 (B) 3 (C) 5 (D) 语法错误 4 for

for(x=0,y=0;(y!=123)&&(x<4);x++) ; (A) 执行 3 次 (B) 执行 4 次 (C) 循环次数不定 (D) 是无限循环 5 #define N 2 #define M N+2 #define CUBE(x) (x*x*x) #include "stdio.h" main( ) { int i=M; i=CUBE(i); printf("%d\n",i); } (A) 17 (B) 64 (C) 125 (D) 53 6 main( ) { int i=010,j=10,*pi,*pj; pi=&i; pj=&j; printf("%d.%d\n",*pi,*pj);

} (A) 10,10 (B) 8,10 (C) 010,10 (D) 8,8 7 c1 c2

enum color { red,yellow,blue=4,green,white} c1,c2; c1=yellow; c2=white; printf("%d,%d\n",c1,c2); (A) 1 (B) 3 (C) 5 (D) 6 8 (A) fp file fopen("file","r"); (B) fp=fopen("file","w");

(C) fp=fopen("file","r+"); (D) fp=fopen("file","w+"); 9 main() { char s1[20]=“abc”,s2[20]=“123”; if(strcmp(s1,s2)>0) printf(“%s\n”,s1)); else printf(“%s\n”,s2); } (A) abc (B) 123 (C) abc123 (D) 123abc 10 w 中的 “生日” 是 “1993 年 10 月 25

struct worker { int no; char name[20]; char sex; struct { int day; int month; int year;}birth; };

struct worker w; (A) day=25 month=10 year=1993

(B) w.birth.day=25; w.birth.month=10; w.birth.year=1993; (C) w.day=25; w.month=10; w.year=1993; (D) birth.day=25; birth.month=10; birth.year=1993; 25 1.main() { int i,j; i=16; j=(i++)+i; printf("%d\n",j); i=15; printf("%d\t%d\n",++i,i); } 2.#include "stdio.h" main() { int i; for(i=1;i+1;i++) { if(i>4) { printf("%d\n",i++); break; } printf("%d\n",i++); } } 5

3.#include "stdio.h" main() { int i,j,a[]={0,2,8,4,5}; printf("\n"); for(i=1;i<=5;i++) { j=5-i; printf("%2d",a[j]); } } 4.#include "stdio.h" main() { char string1[]={"ABCDEFGHIJ"},string2[10]; s(string1,string2,5); printf("%s\n",string2); } s(p,q,m) char *p.*q; int m; { int n=0; while(n<m-1) { n++; p++; }

while(*p!='\0') { *q=*p; p++; q++; } *q } 5 main '\0';

{ int y fac(5,&y) printf(“y=%d\n”,y); } fac(int n,int *t) { int s; if((n==1)||(n==0)) *t=2; else { fac(n-1,&s); t=n*s; } } 五阅读下列程序, 1 1000 25 2 (因子包括 1

不包括数本身)

6 的因子是 1、2、3

6=1+2+3

6是

main()

{ int i,a,m; for(i=1;i<1000;i++) { for(m=0,a=l;a<=i/2;a++) if(!(i%a)) (1) ; if( (2) ) printf("%4d",i); } } 2 char str[N]; main() { int i,flag; for(i=0;i<10;i++) scanf("%c",&str[i]); sort(_(1)__); for(i=0;i<N;i++) printf("%c",str[i]); printf("\n"); } sort(str) 10 个字符排序后按从小到大的次序输出。 #define N 10

char str[N]; { int i,j; char t; for(j=1;j<N;j++) for(i=0;i<N-j;i++) if(str[i]> (2) ) { t=str[i]; ______(3)______; ______(4)______; } 3 #include "stdio.h" main() { (1) *in,*out; char ch,infile[10],outfile[10]; printf("Enter the infile name:\n"); scanf("%s",infile); printf("Enter the outfile name:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("Cannot open input file.\n"); exit(0); }

if((out=fopen(outfile,"w"))==NULL) { printf("Cannot open output file.\n"); exit(0); } while(!feof(in)) fputc( (2) ,out); (3) ; (4) ; } 4 #define N 10 main() { void maxmin(int arr[],int *pt1,int *pt2,int n); int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf("max=%d,min=%d",a,b); void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; *pt1=*pt2=arr[0]; for(i=1;i<n;i++) {

if(arr[i]>*pt1) (1) ; if(arr[i]<*pt2) (2) ; } } 2003C 语言试题 1 7 0.5

1.设 a 为整型变量,初值为 12,执行完语句 a+=a-=a*a 后,a A 552 B 144 C 264 D -264 2. A a3_b3 B void C _123 D IF 3. A 0xcd B -017 C -ox123 D 0xfdc 4.若给定条件表达式(M)?(a++):(a--) A M==0 B M=1 C M!=1 D M!=0 5.在 C if M C

A 只能是逻辑表达式 B 只能是关系表达式 C 只能是逻辑表达式或关系表达式 D 可以是任意表达式 6. main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32;

switch(c) { case ?a?:printf("%c,",c);break; case ?b?:case ?e?:printf("ok,"); default: printf("end"); } } } A a,ok,end B a,ok,endend C a,ok,end,end D a,ok,ok 7. A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D 该数组中各元素的值 8.关于 return A 可以在同一函数中出现多次 B 在主函数中不能出现 C 必须在每个函数中出现 D 只能在除主函数之外的函数中出现一次 9. #define A 3 #define B(a) (A+1)*a main() { int x; x=3*A+B(7); printf("x=%d\n",x); } A x=93 B x=37 C x=60 D x=90

10. enum week{sun mon=4 tue

w wed thu fri sat}w

A w=sun; B w=(enum week)4; C w=san; D w=(enum week)9; 11.以下定义结构体类型 st1 A typedef struct student { int num; int age; }STD; STD st1; B struct st1{int num,age;}s; C struct { int num; float age;}st1; D struct st1 {int num; int age; } 12. int i a[10] *p

A p=a+2; B p=a[5]; C p=a[2]+2; D p=&(i+2); 13. struct wc{ int a int x0[]={11 12} int *b }*p 32} 300 x1} 12

x1[]={31 x0

static struct wc x[2]={100 p=x

A *++p->b B ++p->a C p->b D *(p++)->b 14.要打开一个已存在的非空文件“file A fp fopen("file","r"); B fp=fopen("file","w");

C fp=fopen("file","r+"); D fp=fopen("file","w+");

5 1 Turbo C int a[10] a++ 4

0.5

2 3.14i5926 4 5 6 7 8 9 10 三写出 1.main( )

3

#define PI

main 函数后的任何函数都需在 main int a scanf %d",a);可以给变量 a

int *p;和语句 printf(“%d”, *p);中的*p

10

2

{ char c1=?A?,c2=?\144?,c3=?\x44?,c=0xf5,x=13,a; int i=0122,j=0xa4; printf(“c1=%c,c4=%c\tc5=%c\n”,c1,c2,c3); printf(“%d,%d\n”,i,j); i=-34; j=20; printf(“%d,%d,%d\n”,i%j,i&j<<2,sizeof(j)); printf(“c=%d\n”,c|x); a=c^x<<2; printf(“a=%d\n”,a);

} 2.main() { int x,y=1,z=10; if(y!=0) x=5; printf(“x=%d\t”,x); x=1; if(z<0) if(y>0) x=3; else x=5; printf(“x=%d\n”,x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(“x=%d\t”,x); printf(“z=%d\n”,z); } 3.main( ) { char s[20]=“I like it.”,t[20]=“Are you?”,c[20]; int i=0; while(s[++i]!=?\0?) t[i]=s[i]; t[i]=0;

printf(“string s:%s\n”,s); printf(“string t:%s\n”,t); } 4.int i=5; main( ) { int i=3; { int i=10; i++; printf(“%d\n”,i); } f1( ); i+=1; printf(“%d\n”,i); } int f1( ) { i=i+1; return(i); } 5.main() { int i=10,a[]={10,20,30,15},*p1; char *b=”Learning”,**p2=&b; p1=&i; printf(“%4d”,*p1+20);

for(p1=a;p1<a+4;p1+=2) printf(“%4d”,*p1); printf(“\n%c\t%s\n”,*(b+4),*p2); } 四阅读下列程序, 1.用冒泡法对任意 10 个整数排序。 main( ) { int a[11],i,j,t; for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(i=1; 1 ;i++) for(j=1; 2 ;j++) 8 1

if(a[j+1]>a[j]) { t=a[j]; (3) ; (4) ;} printf("The sorted numbers:\n"); for(i=1;i<11;i++) printf("%4d",a[i]); printf(“\n”); } 2.求 100 (5) main( ) 200 间的素数。

{ int m,flag; for(m=101;m<=200;m+=2) { flag=prime(m); if( (6) ) printf(“%4d”,m); } } prime( (7) ) { int i,k,flag; k=sqrt(a); for(i=2;i<=k;i++) if(a%i==0) (8) ; if(i==k+1) flag=1; else flag=0; } 2003C 语言试题 2 7 1.C A 过程 B 函数 C 子程序 D 标识符 2. main( ) 0.5

{ int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D 不确定值 3.假设变量 a,b A7B8C9D2 4.设 a 为 int a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5. int k=10; while(k=0) k=k-1; A 循环执行一次 B 循环是无限循环 C 循环体语句一次也不执行 D 循环体语句执行一次 6. int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在 C a (a=5,b=2,a>b?a++:b++,a+b)

A 函数的定义可以嵌套,但函数的调用不可以嵌套 B 函数的定义不可以嵌套,但函数的调用可以嵌套 C 函数的定义和函数的调用都不可以嵌套 D 函数的定义和函数的调用都可以嵌套 8. func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9. #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); } A d=70 B d=80 C d=140 D d=700 10. struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 Turbo C w

11. enum week{sun

5 mon=4 tue wed thu fri sat} w

A tue B sat C fri D thu 12.下面选项中正确的赋值语句是(设 char a[5],*p A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd"; 13. 6 a;)

struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 } p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 14.C A 索引文件和文本文件两种 B 文本文件一种 C 二进制文件一种 D ASCII 码文件和二进制文件两种 5 1 2 在 Turbo C 2 0.5 *p;

int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为 A。

3

break

continue

4 5 6 strlen("ASDFG\n")的值是 7 return

7 8 char *p="girl" char *p(char a[10]);则 p p p 的值是字符串"girl" 10 fopen("file","r+");打开的文

9 件"file"

10 1.float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } main( )

2

{ float score[10] {89,67.5,78,91,56,82.5,65,70,79,88},aver; int i; aver=average (score); printf (“average score is %5.2f\n”,aver); } 2.main( ) { char a[5]={?A?,?B?,?C?,?D?,?E?},*p=a,**pa; for(p=0;p<a+5;p++)

printf(“%2c”,*p); printf(“\n”); printf(“%2c\n”,**(pa=&p)); 3.main( ) { int a,b,s=0; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf(“a=%d\tb=%d\n”,a,b); } 4.main() { printf(“main( ) :%d\n”,fact(5)); fact(-5); } fact(int value) { int f; if(value<0) { printf(“Arg error\n"); return(-1); }

else if(value==1||value==0) f=1; else f=value*fact(value-1)+1; printf(“This called value=%d\n”,f); return f; } 5.main( ) { int a=012,b=0x12,k=12; char c=?\102?,d=?\r?; printf(“a=%d\tb=%d\tk=%d\n”,a,b,k); printf(“c=%c,d=%c%o\n”,c,d,a); a=?A?; c=49; printf(“a=%d\tc=%c\n”,a,c); } 四阅读下列程序, 1.有一个 3*4 max_value( (1) ) { int i,j,max; max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j]>max) max=array[i][j]; (2) ; 8 1

} main( ) { int a[3][4], i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) (3) ; printf(“max value is %d\n”,max_value(a)); } 2.输入 x、y #include “stdio.h” main( ) { int x,y, *px,*py, (4) ; scanf(“%d%d”,&x,&y); (5) ; (6) ; if(x<y) { p=px; px=py; py=p; } printf(“x=%d,y=%d\n”,x,y); printf(“MAX=%d,MIN=%d\n”,*px,*py); } 3.用选择排序法对任意 10 个整数按照由小到大排序。 main() { int a[11],i,j,k,t; printf("Please input 10 numbers:\n"); x、y。

for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<=9;i++) { (7) ; for(j=i+1; (8) ;j++) if(a[j]>a[k]) k=j; if(k!=i) { t=a[k]; a[k]=a[i]; a[i]=t;} } printf("The sorted numbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); } 答案 7 1. B 2. C 3. B 4. B 5. C 6. A 7. B 8. A 9. A 10. C 11. A 12. A 13. B 14. D 5 1.× 2.× 3.√ 4.√ 5.× 6.× 7.× 8.× 9.√ 10.√ 10 1. 2. 3. 4. 5. 2 0.5 0.5

四阅读下列程序,

8

1

1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j]) 2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x) 3.(7) (8) 2003C 语言试题 3 24 1 2 buffer size count fp buffer 代表

fread 的调用形式为 fread

A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针 C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数 2 main( ) { int i=010,j=10; printf("%d,%d\n",i++,j--); } A 11,9 B 9,10 C 8,10 D 9,9 3 a 为 int a

a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2; A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20 4 i 和 k 都是 int for

for(i=0,k=-1;k=1;i++,k++) printf("****\n"); A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环 5 main( )

{ char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case 'a':case 'b':case 'c':printf("%c,",c);break; default:printf("end");} } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 6 fseek fp -10L 2

A 将文件位置指针从文件末尾处向文件头的方向移动 10 个字节 B 将文件位置指针从当前位置向文件头的方向移动 10 个字节 C 将文件位置指针从当前位置向文件末尾方向移动 10 个字节 D 将文件位置指针移到距离文件头 10 个字节处 7 main( ) { char s1[40]="country",s2[20]="side"; int i=0,j=0; while(s1[i]!='\0') i++; while(s2[j]!='\0') s1[i++]=s2[j++]; s1[i]=0; printf("%s\n",s1);

} A side B country C sidetry D countryside 8 A 主函数 main 中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 C 形式参数是局部变量 D 在一个函数内部, 9 c1

enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white; A1B3C5D6 10 int (*ptr)();其中标识符 ptr

A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是 int 的函数 C 是一个函数名 D 定义不合法 11 n 个指向整形数据的指针组成的数组 p,

A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 12 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 20 1 2 10,A,12.5 3 4 C int a () char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通过键盘 2 p 与数组 a,

a=10,c=?A?,f=12.5。( ) () #define S(a,b) t=a;a=b;b=t 由于变量 t

误的。( ) 5 6 () 7 int a[3][3] {{3,5},{8,9},{12,35}},i,sum=0 struct student { int num; Turbo C char s[ ] "china" file *fp;fp=fopen("a.txt","r");( ) Turbo C 系统为数组 s 开辟 6 个字节的内存单元。

for(i=0;i<3;i++) sum+=a[i][2-i];则 sum=21。( ) 8 char name[10]; float score;}

s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);输出结果是 1。 () 9 10 aa)5;( ) 36 1.main( ) { int i=29,j=6,k=2,s; s=i+i/j%k-9; printf(“s=%d\n”,s); } 2.main( ) { int x=31,y=2,s=0; do { s-=x*y; 6 Turbo C enum aa{ a 5,b,c}bb;bb=(enum ()

x+=2; y-=3;} while( x%3==0); printf(“x=%d\ty=%d\ts=%d\n”,x,y,s); } 3.main( ) { int a[6] {10,20,30,40,50,60},i; invert(a,0,5); for(i=0;i<6;i++) printf(“%d,”,a[i]); printf(“\n”); } invert(int s[ ],int i,int j) { int t; if(i<j) { invert(s,i+1j-1); t=s[i];s[i]=s[j];s[j]=t; } } 4.#include<stdio.h> main() { char str[ ]=“The C program”,c; int i; for(i=2;(c=str[i])!=?\0?;i++) { switch(c)

{ case ?g?: ++i; break; case ?o?: continue; default: printf(“%c”,c); continue; } printf(“*”); } printf(“\n”); } 5.struct w { char low char high } union u { struct w byte }uw main( ) { int result uw.word=0x1234; printf(“word value:%04x\n”,uw.word); printf(“high byte:%02x\n”,uw.byte.high); printf(“low byte:%02x\n”,uw.byte.low); uw.byte.low=0x74; short word

printf(“word value:%04x\n”,uw.word); result=uw.word+0x2a34; printf(“the result:%04x\n”,result); } 6 main

{ char *s2=“I love China!”,**s1=&s2 char *s3,c,*s4=“w”; s3=&c; *s3=?H?; s2=s2+2; printf(“%s\t%c\t%s\t%c\n”,s2,*s3,s4,**s1); } 四阅读下列程序, 1. 100 ? main( ) { int hb,hm,hl,n=0; for(hb=0;hb<=100;hb+= (1) ) for(hm=0;hm<=100-hb;hm+= (2) ) { hl=100-hb- (3) ; if(hb/3+hm/2+2* (3) ==100) { n++; printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl); 100 20 3 2 2 1

} } printf("n=%d\n",n); } 2.用“起泡法”对输入的 10 个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; main() { int i,flag; for(flag=1;flag==1;) { scanf("%s",str); flag=0; printf("\n"); } sort(___(4)___); for(i=0;i<N;i++) printf("%c",str[i]); printf("\n"); } sort(char str[N]) { int i,j; char t; for(j=1;j<N;j++)

for(i=0;(i<N-j)&&(str[i]!='\0');i++) if(str[i]>str[i+1]) { t=str[i]; ____(5)____; ____(6)____; } } 3. m行n

例如, 3003 2573 1042 则所有靠外侧的各元素值之和为 3+0+0+3+2+3+1+0+4+2=18。 add(int m,int n,int arr[]) { int i,j,sum=0; for(i=0;i<m;i=i+m-1) for(j=0;j<n;j++) sum=sum+ (7) ; for(j=0;j<n;j=j+n-1) for(i=1; (8) ;i++) sum=sum+arr[i*n+j];

return(sum); } 4. main() { void maxmin(int arr[],int *pt1,int *pt2,int n); int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf("max=%d,min=%d",a,b); } void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; *pt1=*pt2=arr[0]; for(i=1;i<n;i++) { if(arr[i]>*pt1) (9) ; if(arr[i]<*pt2) (10) ; } } 答案 24 2 #define N 10

1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A ) 7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D )

20 1. 6. × √ 2. 7. √ √ 3. 8. √ × 36 1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10, 4.e C pr*am 5.word value:1234 6.love China! H w l high byte:12 low byte:34 word value:1274 the result:3ca8 四阅读下列程序, 1.(1) 3 (2) 2 (3)hm hl 2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t 3.(7) arr[i*n+j] arr[i*10+j] 20 4. 9. × √ 6 5. 10. × √

2

2

(8) i<m-1(或者 i<=m-2) 4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

第一章 C 语言概述

1、一个 C A 本程序的 main B

A main 函数结束

C 本程序的 main D main 函数结束

2、在 C A. 回车符 B. 冒号 C. 逗号 D. 分号

D

3、C

main

C

A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后

4、一个 C

B

A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成

5、下列说法中错误的是( D )。 A. B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行

6、用 C A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D. 自动保存源文件

( C )。

1、C 语言只有 32 个关键字和 9 种控制语句。 2、每个源程序有且只有一个 main 3、C */ 符号作为结束标记。 4、C 数 printf 完成的。 5、系统默认的 C 语言源程序文件的扩展名是 .c 是 .obj .exe 。 scanf \* C 语言程序。

6、C 语言的标识符只能由字母、数字和下划线三种字符组成。

第三章数据类型、运算符和表达式

1 A. 160. B. 0.12 C. 2e4.2 D. 0.0 2 D

C

C

C 语言字符型常量。 C

A. 'a' B. '\x41' C. '\101' D. "a" 3、在 C

A. 原码 B. 反码 C. ASCII 码 D. BCD 码 4、若 x、i、j 和 k 都是 int x= i=4 j=16 k=32 x C

A. 4 B. 16 C.32 D.52 5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( B )。

A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 6 C C

A.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3 7、表达式!x||a==b 等效于( D )。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) 8、设整型变量 m,n,a,b,c,d 均为 1 A. 0 0 B. 0 1 C. 1 0 D. 1 1 a+=a-=a*=a; a 的值是( B )。 (m=a>b)&&(n=c>d)后, m,n A

9、设有语句 int a=3 A. 3 B. 0 C. 9 D. -12 10 A. * B. != C. + D. = 11、设整型变量 i 值为 2 A. 6 B. 12 C. 15 D. 表达式出错 12、若已定义 x 和 y 为 double A. 1 B. 2 C. 2.0 D. 2.5 13、sizeof (double)的结果值是( A )。 A. 8 B. 4 C. 2 D. 出错 14、设 a=1 b=2 c=3 d=4

( D )。

(++i)+(++i)+(++i)的结果是( B )。

x=1

y=x+3/2 的值是( C )。

a<b? a : c<d? a : d 的结果为( D )。 10<a<15 的 C 语言表达式

A. 4 B. 3 C. 2 D. 1 15、 设a 是( A )。 A. 10<a<15 B. a= =11|| a= =12 || a= =13 || a= =14

C. a>10 && a<15 D. !(a<=10) && !(a>=15) 16、设 f A. f= 3.2, 1.0 B. f>0, f<10 C. f=2.0, f>0 D. f=(3.2, 1.0) 17、表达式 18/4*sqrt(4.0)/8 A. int B. float C. double D. 不确定 18、已知字母 A 的 ASCII 码为十进制数 65 C2=?A?+?6?-?3?;后 c2 A. D B. 68 C. 不确定的值 D. C 19 A. int B. nit C. 123 D. a+b 20、C A. % B. / C. > D. * 21 A. 1 B. 2 C. 3 D. 4 22、字符串"ABC" A. 3 B. 4 C. 6 D. 8 23、要为字符型变量 a A. char a="3"; B. char a=?3?; C. char a=%; D. char a=*; 24 A. \\ B. \' C. 074 D. \0 C B B char c='\72' 则变量 c A A B A c2 C ( D )。

1、C 语言中的逻辑值“真”是用 1 2、若 x 和 n 都是 int x 的初值为 12 n 的初值为 5

0 表示的。 x%=(n%=2)

后 x 的值为 0 。 3、设 c='w',a=1,b=2,d=-5, 则表达式 'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==a=2 的值分别为 1 、 0 、 1 、 1 。 4、设 float x=2.5,y=4.7; int a=7; x+a%3*(int)(x+y)%2/4 的值为 2.5 。

5、判断变量 a、b 的值均不为 0 的逻辑表达式为 a!=0&&b!=0 。 6、求解赋值表达式 a=(b=10)%(c=6) 7、求解逗号表达式 x=a=3,6*a 8、数学式 a/(b*c)的 C 语言表达式 a/b/c 。 a、b、c 的值依次为 4,4,10,6 。 x、a 的值依次为 18,3,3 。

三、编程题: 1、设长方形的高为 1.5 2 1 main() {float x=1.5,y=2.3;printf(“area is %6.2f\n”,x*y);} 2. main() {char c=?A?;printf(“%d”,c+32);} 2.3 A 转换为小写字母 a。

顺序结构答案 一、单项选择题

AADAB CCBBD

二、程序改错题 1 # include "stdio.h" main( ) { char c getchar(c); putchar('\007') ; /*鸣笛*/ putchar( ); } 2 main( ) { int a,b,s,l; scanf("%d,%d",&a,&b); s=a*b; l=2*(a+b); printf("l=%d,s=%d\n", l ,s); }

三、写出程序运行结果 1 68

2. x=4 y=11

四、编程题 1. main( ) { int a,b,c,sum; float ave; scanf(“%d%d%d”,&a,&b,&c); sum=a+b+c; ave=sum/3.0; printf(“sum=%d,ave=%.2f\n”,sum,ave); }

五、选做题 1.void main( ) { float a,b,temp; printf("input a and b:"); scanf("%d,%d",&a ,&b); temp = a; a = b; b = temp; printf("a=%d , b=%d\n", a , b); } 选择结构答案 一、单项选择题 1.B 2.A 3.D 4.C 5.D 6.B 7.C

二、填空题

1. 5 5 4 554 334 2. 4 0 3. VeryGood Good VeryGood Fail Pass Pass

1. 10, 4, 3; -1 3 6 1 四、程序设计题 1. main( ) { int a,b,x,y; scanf(“%d %d”,&a,&b); x=a*a+b*b; if(x>100)

{y=x/100; printf(“%d”,y);} else printf(“%d”,a+b); }

2. if 结构 main() { float t;char c; printf(“input score,max as 100:\n”); scanf(“%f”,&t); if(t>=90) ch=?A?; else if(t>=80) ch=?B?; else if(t>=70) ch=?C?; else if(t>=60) ch=?D?; else ch=?E?; printf(“Grade=%d\n”,ch); } switch 结构 main() {float t;char c; printf(“input score,max as 100:\n”); scanf(“%f”,&t); switch(t/10) { case 10:

case 9: ch=?A?;break; case 8: ch=?B?;break; case 7: ch=?C?;break; case 6: ch=?D?;break; case 5: ch=?E?; } printf(“Grade=%d\n”,ch); }

五、选做题 1. main() { int a,b,c,t; scanf(“%d%d%d”,&a,&b,&c); if(a<b){t=a;a=b;b=t;} if(a<c){t=a;a=c;c=t;} if(b<c){t=b;b=c;c=t;} printf(“%d,%d,%d\n”,a,b,c); }

2. switch((s>0)&&(s<=10)) {case 1: switch ((s>=3)&&(s<=6)) { case 1: x=2; break;

case 0: switch (s>1)||(s>8)) { case 1: x=3; break; case 0: x=1; break; } } break; case 0: x=0; break; }

循环结构答案 一、选择题 1 B 2.A 3.A 4.C 5.A 6.B 7.A 8.C 9.D 10.D

二、填空题 1. x1 x1/2-2 2. ch=getchar() ch>=?A?&&ch<=?Z? 3. s=s+t*i t=-t

1

852

2. 8921 3. 5 4. SUM=2468

四、程序改错 1.main() { int i=200,n=0; /*n 用来记录每行已打印数的个数*/ while(i<=300) {if(i%7==0) { //break; printf("%5d",i); n=n+1; if(n==5) /*满 5 个换行*/ { printf("\n"); n=0; } } i++; } }

2). main( ) { int i,s=0,t=1; for(i=1;i<=7;i++) { t=t*i; s=s+t; } printf("sum=%d\n",s); }

五、程序设计题 1. main() {int x,g,s,b; for(x=100;x<1000;x++)

{ b=x/100;s=x%100/10;g=x%10; if((g*g*g+s*s*s+b*b*b)==x) printf(“%d\n”,x); } }

2. main() { int i,s=0,f=1; for(i=2;i<80;i++) {s=s+f*(i-1)/i; f=-f;} printf(s=%f\n”,s); }

六、选做题 1. main() { float s=0,m=2.0,n=1.0,p; int i; for(i=1;i<=20;i++) {s=s+m/n; p=m; m=m+n; n=p;} printf(s=%f\n”,s); }

2.#include <stdio.h> main( )

{ int i,j,k,s=1; for(i=1;i<=20;i++) for(j=1;j<=50;j++) { k=100-i*5-j*2; if(k>=0) { printf(“%2d %2d %2d”,i,j,k); s=s+1; if(s%5==0) printf(“\n”); } } }

第 7 章数组习题 A卷 1. 单项选择题 (1) int a[4]={5,3,8,9};其中 a[3]的值为( )。D A. 5 B. 3 C. 8 D. 9 (2) 以下 4 A. gets B. strcpy C. strlen D. strcmp (3) 以下 4 ( )是错误的。 D ( )所在的头文件与其他 3 个不同。A

A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n]; (4) ( )形式是错误。 B

A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ '1', '2', '3', '\0'};

D. char c4[ ]="123"; (5) ( )。 A

A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址 (6) int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; A. 1,12 B. 0,11 C. 1,11 D. 0,12 (7) 4 的表达式是( )。 D ( )。 B

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] (8) A A. 6 B. 7 C. 11 D. 12 (9) D A. 6 B. 7 C. 11 D. 12 (10) 合法的数组定义是( )。 A A. char 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} (11) 合法的数组定义是( )。 D A. int a[3][ ]={0,1,2,3,4,5}; B. int a[ ][3] ={0,1,2,3,4}; C. int a[2][3]={0,1,2,3,4,5,6}; D. int a[2][3]={0,1,2,3,4,5,}; (12) ( )。D char s[12] = "string"; 则 printf("%d\n ", sizeof(s)); 的输出是( )。 char s[12] = "string" ; 则 printf( "%d\n",strlen(s)); 的输出是( )。

A. char a[3][ ]={'abc', '1'}; B. char a[ ][3] ={'abc', '1'}; C. char a[3][ ]={'a', "1"}; D. char a[ ][3] ={ "a", "1"}; (13) printf("%s\n", str[2]) ;的输出是( )。 C

static str[3][20] ={ "basic", "foxpro", "windows"}; A. basic B. foxpro C. windows D. 输出语句出错 (14) ( )。 C

A. char a[3][10]={"China","American","Asia"}; B. int x[2][2]={1,2,3,4}; C. float x[2][ ]={1,2,4,6,8,10}; D. int m[][3]={1,2,3,4,5,6}; (15) 数组定义为 int a[3][2]={1,2,3,4,5,6} A. a[3][2] B. a[2][1] C. a[1][2] D. a[2][3] (16) 下面的程序中哪一行有错误( )。D #include <stdio.h> main() { float array[5]={0.0}; //第 A 行 int i; for(i=0;i<5;i++) scanf("%f",&array[i]); for(i=1;i<5;i++) array[0]=array[0]+array[i];//第 B 行 printf("%f\n",array[0]); //第 C 行 } 6 的数组元素是( )。 B

A. 第 A 行 B. 第 B 行 C. 第 C 行 D. 没有 (17) 下面哪一项是不正确的字符串赋值或赋初值的方式( )。 C A. char *str; str="string"; B. char str[7]={'s','t','r','i','n','g'}; C. char str1[10];str1="string"; D. char str1[]="string",str2[]="12345678"; (18) (strlen(s)为求字符串 s 的长度的函数) char s[12]="a book!"; printf("%d",strlen(s)); A. 12 B. 8 C. 7 D. 11 (19) (strlen(s)为求字符串 s 的长度的函数) char sp[]="\t\v\\\0will\n"; printf("%d",strlen(sp)); A. 14 B. 3 C. 9 D. 字符串中有非法字符 (20) char str[]="\"c:\\abc.dat\""; printf("%s",str); A. 字符串中有非法字符 B. \"c:\\abc.dat\" C. "c:\abc.dat" D. "c:\\abc.dat" ( )。 C ( )。B ( )。C

2. 填空题 (1) C 0、

数据类型,0,符号常量,越界 (2) C 不能对它进行赋值运算。连续,数组名,地址 (3) 执行 static int b[5], a[ ][3] ={1,2,3,4,5,6}; b[4] = a[1][2] = 。 0,6 a[1][1] 值

(4) 设有定义语句 static int a[3][4] ={{1},{2},{3}}; 则 a[1][0]

a[2][1]的值为。 2,0,0 (5) 如定义语句为 char a[ ]= "windows",b[ ]= "95"; printf("%s",strcat(a,b));的输出结果为。Windows95 (6) 根据以下说明, men 是一个有 10 个整型元素的数组。

step 是一个有 4 个实型元素的数组,元素值分别为 1.9, -2.33, 0, 20.6。 grid 是一个二维数组,共有 4 行,10 列整型元素。 int mesh[10]; float step[4] = {1.9, -2.33, 0, 20.6}; int grid[4][10]; (7) array 是一个一维整形数组,有 10 个元素,前 6 个元素的初值是 9,4,7,49,32,-5,正确

。该数组下标的取值范围是从___到___(从小到大)。用 scanf 函数输入数组的第二个元素 39

int array[10] = {9,4,7,49,32,-5}; 0 9 scanf("%d",&array[1]); array[0] = 39; array[0]= array[5]+array[3]; (8) isa[]={1.0,2.0,3.0,4.0,5.0}; 数组 isa 的长度为___。③int doom[8];数组 doom 的长度为___。④float pci[4][2]; int chn[3];数组 chn 的长度为___。②float

数组 pci 的长度为___。 ⑤int ast[3][3];数组 ast 的长度为___。⑥int att[3][4];数组 att 的长度为___。 ⑦float dell[][3]={{1,4,7},{2,5},{3,6,9}};数组 dell 的长度为___。 6 20 16 32 18 24 36 (9) 若有以下整型的 a 数组元素: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 元素的值: 9 4 12 8 2 10 7 5 1 3 :

②该数组的最小下标值为___,最大下标值为___。 a[a[9]]的值为___ int a[10]={9,4,12,8,2,10,7,5,1,3}; 0 9 8 8 (10) 字符串"ab\n\\012/\\\""的长度为___。10 3. 判断题 × × × √ × √ × (1) C (2) 字符数组不要求它的最后一个字符为?\0? (3) 数组定义 int a[10]; 也可以写成 int a(10); 。 (4) (5) 定义 s 为 5×6(5 行 6 列)的数组可写成 float a[5,6]; (6) 数组定义 int a[10]; 表示数组名为 a (7) 数组定义 int a[10]; 表示数组名为 a 10 个元素。 10 10 个元素 ?\0?。 a[a[4]+a[8]]的值为___。

为 a[10]。 √ (8) static char c[]={“a book”}; 与 static char c[]=“a book”; 等价。

×

(9) static char c[]={'a' ,' ','b','o','o','k','\0'};与 static char c[]={'a' ,'

' ,'b','o','o','k'}; 等价。 × (10) static char c1[10],c2[10]; 下面程序片段是合法的。

c1={“book”}; c2=c1;

4. 程序填空题 (1) 输入 20 请填空。 #include <stdio.h> void main( ) { float a[20],pjz=0,s,t; int i,k; for(i=0;i<20;i++) pjz+=a[i]; s=fabs(a[0]-pjz); for(i=1;i<20;i++) if(fabs(a[i]-pjz)<s) { s=fabs(a[i]-pjz); t=a[i]; } } -------------------------------------------------------------------------------for(i=0;i<20;i++) scanf(“%f”,&a[i]); pjz/=20; printf(“%f,%f\n”,piz,t);

(2) 以下程序以每行 10 个数据的形式输出 a void main( ) { int a[50],i; printf("输入 50 个整数:"); for(i=0; i<50; i++) scanf( "%d", ); for(i=1; i<=50; i++) { if( ) printf( "%3d\n" , ) ; printf( "%3d",a[i-1]); } } &a[i] i%10==0 a[i-1]

(3) 下面程序的功能是输出数组 s void main( ) { int k, p; int s[ ]={1,-9,7,2,-10,3}; for(p=0,k=p; p<6; p++) if(s[p]>s[k]) ; printf("%d\n" ,k); }

k=p

(4) 这个程序输入了 20 个数存放在一个数组中,并且输出其中最大者与最小者、20 个数的 和及它们的平均值。请填空。 void main() { char array ; int max,min,average,sum; int i; for(i=0;i< ;i++) { printf("请输入第%d 个数:",i+1); scanf("%d", ); } max=array[0]; min=array[0]; for(i=0;i<= ;i++) { if(max<array[i]) if(min>array[i]) sum= ; }

average = ; printf("20 个数中最大值是%d,",max); printf("最小值是%d,",min); printf("和是%d,",sum); printf("平均值是%d.\n",average); } [20] 20 &array[i] 19 max=array[i]; min=array[i]; sum+array[i] sum/20

B卷 5. (1) #include <stdio.h> #include <string.h> void main( ) { char s[80];

int i ; for(i=0; i<80; i++) { s[i]=getchar( ); if(s[i]=='\n') break; } s[i]='\0'; i=0; while(s[i]) putchar(s[i++]); putchar(?\n?); } 从键盘输入一个字符串,并逐一输出

(2) #include <stdio.h> #include <string.h> void main( ) { char str[10][80], c[80]; int i; for(i=0; i<10; i++) gets(str[i]); strcpy(c, str[0]) ; for(i=1; i<10; i++) if(strlen(c) <strlen(str[i])) strcpy(c,str[i]); printf( "%s\n", c);

printf( "%d\n", strlen (c)); } 从键盘输入若干字符串,找到其中最长的一个输出及它的长度

(3) #include <stdio.h> #include <string.h> void main( ) { char a[10][80], c[80]; int i, j, k; for(i=0; i<10; i++) gets(a[i]); for(i=0; i<9; i++) { k=i ; for(j=i+1; j<10; j++) if(strcmp (a [j], a[k])<0) k=j; if(k!=i ) {strcpy(c,a[i]) ; strcpy(a[i], a[k]); strcpy(a[k],c);} // 字符串交换 } for(i=0; i<10; i++) puts (a[i]); }

从键盘输入若干字符串,并将它们按大到小顺序排好再输出

(4) #include <stdio.h> void main( ) { int a[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j; for(i=0;i<6;i++) { for(j=0;j<6;j++) if(a[i]==b[j])break; if(j<6) printf("%d ",a[i]); } printf("\n"); } 4 25 27 16 (5) #include <stdio.h> void main( ) { char a[8],temp; int j,k; for(j=0;j<7;j++) a[j]='a'+j; a[7]='\0'; for(j=0;j<3;j++)

{ temp=a[6]; for(k=6;k>0;k--) a[k]=a[k-1]; a[0]=temp; printf("%s\n",a); } } gabcdef fgabcde efgabcd

(6) #include <stdio.h> #include <string.h> void main( ) { char str1[ ]="*******"; for(int i=0;i<4;i++) { printf("%s\n",str1); str1[i]=' '; str1[strlen(str1)-1]='\0'; }

} ******* ***** *** *

(7) 该程序的运行结果是: min= ,m= ,n= 。 void main() { float array[4][3]={ {3.4,-5.6,56.7}, {56.8,999.,-.0123}, {0.45,-5.77,123.5}, {43.4,0,111.2} }; int i,j; int min; int m,n; min = array[0][0]; m=0;n=0; for(i=0;i<3;i++) for(j=0;j<4;j++)

if(min > array[i][j]) { min = array[i][j]; m=i;n=j; } printf("min=%d,m=%d,n=%d\n",min,m,n); } -5.77 2 1

(8) 写出下面这个程序的输出结果: void main() { char str[]="ABCDEFGHIJKL"; printf("%s\n",str); 屏幕上显示 printf("%s\n",&str[4]); 屏幕上显示 str[2]=str[5]; printf("%s\n",str); 屏幕上显示 str[9]='\0'; printf("%s\n",str); 屏幕上显示 } ABCDEFGHIJKL EFGHIJKL ABFDEFGHIJKL

ABFDEFGHI

(9) 读懂下面的程序并填空。 void main() { char str[80]; int i=0; gets(str); while(str[i]!=0) { if(str[i]>='a'&&str<='z') str[i]-=32; i++; } puts(str); } 程序运行时如果输入 upcase, 屏幕显示 程序运行时如果输入 Aa1Bb2Cc3, 屏幕显示 UPCASE AA1BB2CC 第 8 章函数习题 A卷 1. 单项选择题

(1)C 语言总是从函数开始执行。 A A. main B. 处于最前的 C.处于最后的 D. 随机选一个 (2) A. int B. float C. long D. double (2) B A

A. int a(){int a=2;return (a);} B. void b(){printf("c");} C. int a(){int a=2;return a;} D. 以上都是 (3)在 C A. D. (4) fun((2,3),(4,5+6,7)); A. 1 B. 2 C. 5 D. 6 (5)函数调用可以在。 D A. 函数表达式中 B. 函数语句中 C. 函数参数中 D. 以上都是 (6)被调函数返回给主调函数的值称为。C A. 形参 B. 实参 C. 返回值 D. 参数 (7) D C B. A C. 函数不可嵌

A. 被调函数的返回值是整型或字符型时 B. 被调函数的定义在主调函数定义之前时 C. (8) A. if B. for C. while D. return (9) D D D. 以上都是

A.主调函数中该被调函数调用语句处 B.主函数中该被调函数调用语句处 C.主调函数中该被调函数调用语句的前一语句 D.主调函数中该被调函数调用语句的后一语句 (10)以下对 C A. 在 C B. C 函数既可以嵌套定义又可递归调用 C. D. C 程序中有调用关系的所有函数必须放在同一个源程序文件中 (11)C 语言中函数的隐含存储类型是。 C A. auto B. static C. extern D. 无存储类型 (12) 这两个数 B. 形参用两个元素的数组 C. 形参用两个这种数据类型的指针 D. 用两个全局变量 (13)C 语言可执行程序从什么地方开始执行 ( )。 C A. 程序中第一条可执行语句 B. 程序中第一个函数 C. 程序中的 main 函数 D. 包含文件中的第一个函数 (14) abc(float x,float y); A. void B. double C. int D. float () 。 C A A. return A

2. 填空题

(1) 置,所处的位置,存储类型 (2) auto (3) 静态型局部变量的作用域是 ,生存期是。它所在的局部,整个程序 (4) 址传递,值传递 (5) _________ (6) 返 return (7) (8) 函数的参数为 char * (9) (10) *result void mul(___x,___y,___result) { ___=x*y; } int int int* void

,数组名

3. 判断题 × (1) 函数说明指的是在程序中设定一个函数模块。

√ × × √ × × × √ ×

(2) 形参只有在被调用时才分配存储空间。 (3) 在 C (4) (5) (6) 函数的隐含存储类型是 extern。 (7) 形参可以是常量、变量或表达式。 (8) 函数调用可以作为一个函数的形参。 (9) C (10)

4. 程序填空题 (1) #include <stdio.h> void main() { float a[7]={2,6,3,8,3,12,9}; int i ; void sort(float*,int); ; for(i=0;i<7;i++) printf("%f ",a[i]); printf("\n"); }

void sort( ) { int i,j,k; float t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if( ) k=j; { t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; } } } sort(a,7) float* p int n *(p+k)<*(p+j) if(k!=i)

(2) 下列函数在 n #include <stdio.h> void find(float *p, int max, int min, int n) { int k; *max=*p; for(k=1;k<n;k++) { t=*(p+k); if( ) *max=t;

if(t<*min) *min=t; } } float t; *min=*p; *max<t B卷 5. 写出下列程序运行结果 (1) main() { int i=1,p; p=fun(i,i+1); printf("%d\n",p); } int fun(int a,int b) { int f; if(a>b) f=1; else if(a==b) f=0; else f=-1;

return f; } -1

(2)键盘输入 abcdef<CR> #include <stdio.h> void fun( ) { char c ; if((c=getchar( ))!='\n') fun( ) ; putchar(c); } void main( ) { fun( ); } fedcba

(3) #include <stdio.h> #define C 5 int x=1,y=C; void main( ) {

int x; x=y++; printf("%d %d\n", x,y); if(x>4) { int x ; x=++y; printf("%d %d\n",x,y) ; } x+=y--; printf("%d %d\n",x,y); } 56 77 12 6

(4) #include <stdio.h> int c , a=4 ; func(int a , int b) { c=a*b ; a=b-1 ; b++ ; return (a+b+1) ; } void main( ) { int b=2 , p=0 ; c=1 ; p=func(b , a) ; printf("%d,%d,%d,%d\n", a,b,c,p) ; } 4,2,8,9

(5) unsigned fun6(unsigned num) { unsigned k=1; do { k*=num%10; num/=10; } while(num); return k; } void main( ) { unsigned n=26; printf("%d\n", fun6(n)); } 12

(6) #include <stdio.h> int max(int a,int b); main() { int x,y,z,t,m; scanf("%d,%d,%d",&x,&y,&z); t=max(x,y);

m=max(t,z); printf("%d",m); } int max(int a,int b) { if(a>b) return(a); else return(b); } 10 300 (7) #include <stdio.h> long sum(int a,int b); long factorial(int n); main() { int n1,n2; long a; scanf("%d,%d",&n1,&n2); a=sum(n1,n2); printf("a=%1d",a); 15 129 9 300 ___ 15 ___ 300

} long sum(int a,int b) { long c1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2); } long factorial(int n) { long rtn=1; int i; for(i=1;i<=n;i++) rtn*=i; return(rtn); } 2 0, 5 (8) #include <stdio.h> int s(); int x,y; main() 3 ___ 8 ___ 121

{ int n; x=1;y=2; n=s(); printf("x=%d,y=%d,n=%d",x,y,n); } int s() { int z; x=3;y=4; z=x+y; return(z); } ___ 3,4,7

(9) 以下程序的输出结果是 a=___,b=___,c=___。 #include <stdio.h> int func(int a,int *p); void main() { int a=1,b=2,c; c=func(a,&b);

b=func(c,&a); a=func(b,&c); printf("a=%d,b=%d,c=%d",a,b,c); } int func(int a,int *p) { a++; *p=a+2; return(*p+a); } 36 16 19 第九章预处理 A 一、选择题 D A、宏替换不占用运行时间。 B、宏名无类型。 C、宏替换只是字符替换。 D、宏名必须用大写字母表示。 C D

A、在程序运行时进行的。 B、在程序连接时进行。 C、和 C 程序中的其它语句同时进行编译的。 D、在对源程序中其它语句正式编译之前进行的。 3 A、15 B、100 C、10 D、150 C

#define MIN(x,y) (x)<(y)?(x):(y) void main() { int I,j,k; i=10;j=15;k=10*MIN(i,j); printf(“%d\n”,k); } 4 D 用#include 包含的文件的后缀必须是“.h” 。

文 件的所有源程序不必重新进行编译。 宏命令行可以看作是一行 C 语句。 预处理是在编译之前进行的。 5 C

A、源程序中所有的行都参加编译。 B、宏定义常量与 const 定义常量是一样的。 C D、以上都不正确。 二、填空题 以下程序中 for 循环执行的次数是 6 。 #define N 2 #define M N+1

#define NUM (M+1)*M/2 void main() { int i; for(i=1;i<=NUM;i++); printf(“%d\n”,i); } 2、以下程序的输出结果是 x=93 。 #define A 3 #define B(a) ((A+1)*a) void main() { int x; x=3*(A+B(7)); printf(“x=%d\n”,x); }

B MYALPHA 0。 #define MYALPHA 第十章指针 A c ((c>=?A?&&c<=?Z?)||( c>=?a?&&c<=?z?)?1:0) c c 1

一、选择题 1 int x,*pb A

A、pb=&x B、pb=x C、*pb=&x D、*pb=*x 2 B

A、因变量无定义输出不定值 B、0 C、-1 D、1 #include<stdio.h> void main() {printf(“%d\n”,NULL);} 3 A、5 2 3 B、-5 -12 B -7 C、-5 -12 -17 D、5 -2 -7

#include<stdio.h> void sub(int x,int y,int *z) {*z=y-x;} void main() { int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(“%d,%d,%d\n”,a,b,c); }4 A、4 B、6 C、8 D、10 #include<stdio.h> void main() C

{ int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(“%d\n”,n); } 5、已知指针 p A、20 B、30 C、21 D、31 a[0] a[1] a[2] a[3] a[4] 10 20 30 40 50 a[1] *p++; *p B

6、已知指针 p A、20 B、30 C、21 D、31 7、已知指针 p A、20 B、30 C、21 D、31 8 A、23 B、24 C、25 D、26 #include<stdio.h> D

a[1]

*++p

B

a[1]

++*p

C

void prtv(int *x) {printf(“%d\n”,++*x);} void main() { int a=25;prtv(&a); } 9 B

A、运行出错 B、100 C、a 的地址 D、b 的地址 #include<stdio.h> void main() { int **k,*a,b=100; a=&b;k=&a; printf(“%d\n”,**k); } 10、以下程序运行后, A) 8 B) 7 C) 6 D) 5 #include<stdio,h> ss(char *s) { char *p=s; while(*p) p++; return(p-s); } D

main() { char *a="abded"; int i; i=ss(a); printf("%d\n",i); } 二、填空题 1 1 2 3 1 char ch; p 指向变量 ch 的定义语句是 char *p=&ch; 。 char *p; p 指向变量 ch 的赋值语句是 p=&ch; 。 p 给变量 ch 读入字符的 scanf 调用语句是

scanf(“%c”,p); 。 4 5 1 1 p 给变量 ch 赋字符?a?的语句是*p=?a?; 。 p 用格式输出函数输出 ch 中字符的语句是

printf(“%c”,*p); 。 2、以下程序输出的是 C 。 void main( ) { int i=3, j=2; char *a=" ";

printf("%c%c\n",a[i],a[j]); } 3

void exchange(int *x, int *y) { int t; t=*y; *y= *x ; *x= t ; }

B

1、下面程序的输出结果是 A B C D B C D C D D 。 char b[]=" void main() { char *chp; for(chp=b; *chp: chp+=2) printf("%s",chp); printf("\n"); } ";

void mystrcat(char *s1,char *s2) { char *p,*q; for(p=s1; *p ; p++ ); for( q=s2 ;*q;q++) *p++=*q ; *p=?\0? ; } 第十一章结构体与共用体

A 一、选择题 1、设有如下定义: struct sk {int a;float b;}data,*p; 若有 p=&data; data 中的 a B

A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a

2

M

D

A、printf(“%c\n”,class[3].name); B、printf(“%c\n”,class[3].name[1]); C、printf(“%c\n”,class[2].name[1]); D、printf(“%c\n”,class[2].name[0]); struct person{char name[9];int age;}; struct person class[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16,}; 3、 D

A、0 B、1 C、3 D、6 #include<stdio.h> void main() { struct emplx{int x;int y;}enum[2]={1,3,2,7}; printf(“%d\n”,enum[0].y/enum[0].x*enum[1].x); } 4 6 D

A、p++->n B、p->n++ C、(*p).n++ D、++p->n

struct st{int n;struct st *next;}; struct st a[3],*p; a[0].n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2]; a[2].n=9;a[2].next=?\0?;p=&a[0]; 5、已知字符 0 的 ASCII 码的十进制的值是 48 B A、39 B、9 C、38 D、8 void main() { union{int i[2];long k;char c[4];}r,*s=&r; s->i[0]=0x39;s->i[1]=0x38; printf(“%x\n”,s->c[0]); } 6 A、32 B、16 C、8 D、24 typedef union{long x[2];int y[4];char z[8];}MYTYPE; MYTYPE them; void main() { printf(“%d\n”,sizeof(them)); } 7、设有以下语句 typedef struct S C 0

{ int g; char h;} T; B A) 可用 S 定义结构体变量 B C S 是 struct 类型的变量 D T 定义结构体变量 T 是 struct S 类型的变量

8、有以下说明和定义语句 struct student { int age; char num[8];}; struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}}; struct student *p=stu; D A) (p++)->num B) p->num C) (*p).num D) stu[3].age

二、填空题 1 data next 是指向自身结构体的指针成

Struct link { char data; struct link *next ; } 2、把类型 int 另取一个类型名称 INT typedef int INT;

3、以下程序的运行结果是 2002Shangxian 。 # include <string.h> typedef struct student{ char name[10]; long sno; float score; }STU; main( ) { STU a={“zhangsan”,2001,95},b={“Shangxian”,2002,90}, c={“Anhua”,2003,95},d,*p=&d; d=a; if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf(“%ld%s\n”,d.sno,p->name); }

B

N 名学生的数据已在主函数中放 入 结构体数组 s b

#include<stdio.h>

#define N 16 typedef struct { char num[10]; int s; }STREC;

int fun(STREC *a,STREC *b) { int i,j=0,max=a[0].s; for(i=0;i<N;i++) if(max<a[i].s) max=a[i].s; for(i=0;i<N;i++) if( a[i].s==max ) b[j++]=a[i]; return j; }

void main() { STREC s[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85}, {“GA001”,91},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA0015”,85}, {“GA0013”,91},{“GA0012”,64},{“GA0014”,91},{“GA0011”,66},{“GA0017”,6 4},

{“GA0018”,64},{“GA0016”,72},}; STREC h[N]; int i,n; n=fun(s,h); printf(“The %d highest score:\n”, n ); for(i=0;i<n;i++) printf(“%s %4d\n”,h[i].num,h[i].s); printf(“\n”); }


赞助商链接

更多相关文章:
大学C语言期末考试练习题(带详解答案)
大学C语言期末考试练习题(带详解答案) - 一、 单项选择题 1. ( A )是构成 C 语言程序的基本单位。 A、函数 2.C 语言程序从 B、过程 C C、子程序 开始...
大学C语言期末考试题库试题及答案汇总
大学C语言期末考试题库试题及答案汇总 - 1. 下列定义变量的语句中错误的是___。 A、int _int B、double int_ C、char For D、float US$ 答案:...
【2017年最新】大学C语言期末考试练习题(带详解答案)
【2017年最新】大学C语言期末考试练习题(带详解答案) - 一、 单项选择题 1. ( A )是构成 C 语言程序的基本单位。 A、函数 2.C 语言程序从 B、过程 C ...
大学C语言期末考试习题集(带详解答案)
大学C语言期末考试习题集(带详解答案) - 一、 单项选择题 1. ( A )是构成 C 语言程序的基本单位。 A、函数 2.C 语言程序从 B、过程 C C、子程序 开始...
大学C语言期末考试练习题(带详解答案)
大学C语言期末考试练习题(带详解答案) - 一、 单项选择题 1. ( A )是构成 C 语言程序的基本单位。 A、函数 2.C 语言程序从 B、过程 C C、子程序 开始...
华中科技大学C语言期末考试题库试题及答案汇总
华中科技大学 C 语言期末考试题库试题及答案汇总 1.设 int a=12,则执行完语句 a+=a-=a*a 后,a 的值是__D___。 A、552 B、264 C、144 D、-264 ...
大学C语言期末考试练习题(带详解答案)
大学C语言期末考试练习题(带详解答案) - 一、 单项选择题 1. ( A )是构成 C 语言程序的基本单位。 A、函数 2.C 语言程序从 B、过程 C C、子程序 开始...
大学C语言期末上机考试题库【精品】
大学C语言期末上机考试题库【精品】 - 上机考试练习题 1、程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0<repeat<10),做repeat次下列运算:...
大学大一C语言程序设计期末考试试卷及答案
大学大一C语言程序设计期末考试试卷及答案_电脑基础知识_IT/计算机_专业资料。C 语言程序设计试卷答卷说明: 1、本试卷共 6 页,答题纸 3 页,4 个大题,35 个...
安徽大学C语言期末试卷(含答案)
安徽大学C语言期末试卷(含答案) - 安徽大学 C 语言程序设计期末试题 一. 单项选择题: (每题 2 分,共 20 分) 1.执行程序: int a; printf(%d \n, (a...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图