C语言复习资料

更新时间:2024-06-05 07:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数学科学学院C语言复习资料

一、选择题

1、可以在C语言中使用的一组用户标识符是( )。

A、3B sizeof DO B、 ab34 c1_c2 _for C、_123 t2_a1_ printf D、void 6b hat 2、以下均是字符常量或数值常量的选项是( )。

A、0.0 0f 8.9e ?&? B、”A” 3.9e-2.5 1e1 C、?3? 011 0xff00 0a D、 0xabcd 2e3 50. 3、以下选项中正确的实型常量是( )。

A、 0 B、0.618*10 C、 567 D、3.1415

4、将汇编语言编写的程序翻译为目标程序的是( )程序。 A、解释 B、编译 C、汇编 D、目标 5、不属于面向机器的语言是( )。

A、符号语言 B、机器语言 C、汇编语言 D、C语言 6、程序段的基本结构中,不包含( )。

A、函数结构 B、循环结构 C、顺序结构 D、分支结构 7、下列符号中,不属于转义字符的是( )。 A、 \\\\ B、\\0xaa C、\\0 D、\\t 8、正确的C语言标识符是( )。

A、 _sum_1 B、1_sum C、?_sum D、sum? 9、增1减1运算只能作用于( )。

A、 常量 B、变量 C、表达式 D、函数 10、设“int a=2,b=2;”,则++a+b的结果是( ),a的结果是( b的结果是( )。 A、2 B、3 C、4 D、5 11、下列运算符中优先级最高级的是( )。 A、++ B、% C、* D、= 12、设“int a=2;”,则表达式“(a++*1/3)”的值是( ),a的值是( A、0 B、1 C、2 D、3

13、字符数据在内存中的存储代码采用的是( )。

A、反码 B、补码 C、EBCDIC码 D、ASC II码 14、char a; int b; float c; double d;

则表达式a*b+d-c值的类型为( )。 A、int B、float C、double D、char 15、字符串”\\”\\123\\n\\321a”的长度是( )。 A、1 B、5 C、9 D、13

1

,。 ) )

数学科学学院C语言复习资料

16、下列常量中,不属于字符常量的是( )。 A、?\\1x? B、?0? C、?\\?? D、?\\n? 17、语句printf(\);的输出结果是 A. a\\bre\\'hi\\'y\\\\\\bou B. a\\bre\\'hi\\'y\\bou C. re'hi'you D. abre'hi'y\\bou

18、设整型变量k的值为011,下列表达式中值不为1的是( )。 A、k%8 B、k/8 C、++k-8 D、k++-8

19、设整型变量m的值为2,则执行printf(\ printf(\后的结果是( )。

A、-1,2 B、0,2 C、3,3 D、2,3

20、整型变量x、y和z已定义并已赋值,下列表达式正确的是( )。 A、x=5++ B、5=x++ C、x=y=z==x D、x=y+1=z 21、设整型变量m的值为8,则表达式“m-=m+=m*=m/=m”的值是( )。 A、8 B、1 C、0 D、-1

22、设有整型变量x、y和z,则下列表达式中不属于逗号表达式的是( )。

A、x>y,z=0 B、x,y=z C、x++,(y,z) D、x=(y,z)

23、在C语言数据类型转换原则中,以下错误的是( )。

A、 若+、-、*、/运算的两个数中有一个数为实型,则结果为实型。 B、如果int型与double型数据进行运算,结果是double型。

C、char型与int型进行运算,把字符型数据的ASCII码与整型数据进行运算,结果为整型。

D、char型与int型进行运算,运算结果为char型。

24、设有整型变量x和单精度型变量y,最终运算结果不是单精度型的表达式是( )。 A、(int)y+x B、(int)x+y

C、(float)y+x D、(float)x+y 25、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是( )。

A、 1 B、 2 C、 2.0 D、 2.5

26、以下叙述正确的是( )。

A、在C程序中无论是整数还是浮点数,只要允许的范围内都准确无误地表示。

B、若有“double a,b;”定义,可以直接执行语句“a=b+3.456;”因为b已正确定义。

2

数学科学学院C语言复习资料

C、在C语言中,常量、变量、函数调用都是表达式的一种

D、在main函数中,一旦定义一个变量,系统将自动赋给它初值。 27、以下选项中,不正确的赋值语句是( )。

A、 i++; B、 i+=7; C、x+y=z; D、y=(int)x+4; 28、以下选项中不是C语言语句的是( )。 A、{int i=1; i++; } B、; C、 k=5,a=10 D、{ ; ;}

29、设整形变量n的值为9,下列表达式中值为1的表达式是( )。 A、!n B、!n>1 C、!n!=1 D、!n!==1

30、不能正确表达数学中逻辑关系“y在x和z之间(x=y)||(y>=z))

C、!(!(x

31、设整形变量m和n的值均为1,计算表达式“(m=m!=n)&&(n=m==n)”后,m和n的值是( )。

A、1,1 B、1,0 C、0,1 D、0,0

32、设整形变量x的值为8,则表达式“x>5?x++:--x” 的值是( )。 A、9 B、8 C、7 D、1

33、设有整形变量m,n和k的值均为6,则表达式“n=k=++m,m=n!=k”的值是( )。

A、0 B、1 C、6 D、7

34、下列表达式中,值不为4的表达式是( )。 A、sizeof(double) B、sizeof(float)

C、sizeof(long) D、sizeof(unsigned long) 35、能判断整形变量m是偶数的正确表达式是( )。 A、m/2 B、m%2 C、m%2 !=0 D、m%2 ==0

36、设字符型变量ch的值为?A?,整型变量m的值为1,假定执行ch=getchar();m=getchar();时,从键盘输入B<回车>,则变量ch和m的值分别为( )。

A、?A?和?1? B、?B?和?1? C、?B?和 ‘□’ D、?B?和?\\n? (注:□表示空格) 37、设字符型变量ch的值为?A?,整型变量m的值为?1?,假定执行putchar(m); putchar(?□?); putchar(ch);后,则输出结果是( )。 A、A1 B、1A C、A□1 D、1□A

3

数学科学学院C语言复习资料

38、设整型变量a和b的值分别为8和9,printf(“%d,%d”,(a++,++b),b--);的输出是( )。

A、8,8 B、8,7 C、9,9 D、10,9 39、设有下列程序段,则其正确的输出是( )。 int x=011,y=0x11;

printf(“x=%-3dy==”,x,y);

A、□□917□ B、x=9□□y=□17 C、x=□□9y=17□ D、x=11y=x11 40、运行下列程序的输出是( )。 main()

{char ch=?B?;

printf(“%c%d”,ch,ch++); }

A、C65 B、B65 C、B66 D、C66

41、若a、b、c均为int类型,要给a、b、c输入数据,正确的输入语句是( )。

A、read(a,b,c); B、scanf(“%d%d%d”,a,b,c);

C、scanf(“%D%D%D”,a,b,c); D、scanf(“%d%d%d”,&a,&b,&c); 42、以下程序,输入ABC<回车>后,执行结果是( )。 main() {char c;

scanf(“<”,&c); printf(“%c\\n”,c); }

A、 ABC B、A C、B D、C 43、以下程序( )。 main()

{int x=0,y=0,z=0;

if (x=y+z) printf(“******\\n”); else printf(“######\\n”); }

A、有语法错误,不能编译通过 B、输出******

C、可以通过编译,但不能通过连接,因此不能运行 D、输出######

4

数学科学学院C语言复习资料

44、以下程序输出结果为( )。 main()

{ int a=2,b=-1,c=2; if (a

if (b<0) c=0; else c+=1; printf(“%d\\n”,c); }

A、0 B、1 C、2 D、3 45、以下程序输出结果为( )。 main()

{ int a=2,b=-1,c=2; if (a

{if (b<0) c=0;} else c+=1; printf(“%d\\n”,c); }

A、0 B、1 C、2 D、3 46、以下( )为不正确的if语句。 A、if (x

B、if (x!=y) scanf(“%d”,&x) else scanf(“%d”,&y); C、if (x==y) x+=y; D、if (x

47、若执行以下程序时从键盘输入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

48、设字符型变量ch已有值,下列语句中错误的是( )。 A、scanf(“%c%c”,ch,ch); B、{int ch=6;printf(“%d”,ch);} C、 5; D、ch>48&&ch<0x3A;

5

数学科学学院C语言复习资料

49、设整形变量x,y,z的值值分别为3,2,1,则下列程序段的输出是( )。 if (x>y) x=y; if (x>z) x=z; printf(“%d,%d,%d\\n”,x,y,z); A、1,1,1 B、1,2,1 C、1,2,3 D、3,2,1

50、执行下列程序段后,变量x的值是( )。 int a=8,b=7,c=6,x=1;

if (a>6) if (b>7) if (c>8) x=2; else x=3; A、0 B、1 C、2 D、3 51、运行下列程序的结果是( )。 main()

{float x=-28.9,y; if (x<0) y=-x; else if (x<0) y=x; else y=0; printf(“%f\\n”,y); }

A、-28.9 B、28.9 C、-28 D、28 52、运行下列程序的结果是( )。 main()

{int a1=10, a2=-9, a3=0, a4=100, x;

if (a1

A、-9,0,10,100 B、100,10,0,-9 C、0,-9,10,100 D、100,10,-9,0 53、运行下列程序的结果是( )。 main()

{int a1=1,a2=1,a3=1,a4=1; if (a1>0) a3++; if (a1>a2) a3--;

else if (a1==a2) a3++;

else a3--;

printf(“%d,%d,%d,%d\\n”,a4,a3,a2,a1);

6

数学科学学院C语言复习资料

}

A、1,1,1,1 B、1,2,3,4 C、4,3,2,1 D、1,3,1,1 54、下列正确的switch语句是( )。 A、switch (x)

{case 1.0: printf(“*\\n”); case 2.0: printf(“**\\n”);} B、switch (int x)

{case 1: printf(“*\\n”); case 2: printf(“**\\n”);} C、switch (a+b)

{case 1: printf(“*\\n”); case 1+2: printf(“***\\n”);} D、switch (a+b) ;

{case 1: printf(“*\\n”); case 2: printf(“*\\n”);}

(说明:switch后面的表达式(由常数、符号常量组成的表达式)必须为整型,也可用字符表达式。因此,选项A的case 后出现实型常量是不对的,选项B switch后面的括号中只能出现变量名,而出现类型说明符是不对的,选项C 中switch后面的表达式多了一个分号) 55、以下程序段的输出结果是( )。 int x=0,y=2,z=3; switch (x+1)

{case 1: switch (y==2)

{case 1:printf(“*”);break; case 2:printf(“%”);break;} case 2: switch (z)

{case 1: printf(“$”);

case 2: printf(“*”);break; default : printf(“#”);} }

A、 *# B、*$* C、*%$*# D、* 56、以下语句中,( )不可能做到提前退出循环体语句。 A、 goto B、break C、continue D、return

7

数学科学学院C语言复习资料

57、执行下列语句后,整型变量x的值为( )。 switch (x=1) {case 0: x=10;break;

case 1: switch (x=2) { case 1: x=20; break; case 2: x=30; } }

A、 30 B、20 C、10 D、1 58、执行下列程序后的输出结果是( )。 char x=?9?; while (x>?7?) printf(“%c”,x--);

A、99 B、98 C、987 D、87 59、执行下列程序段后的输出结果是( )。 int m=8;

while (m>=5) m--,--m,n=m---m; printf(“%d,%d”,m,n);

A、2,0 B、5,-1 C、5,0 D、5,1

60、设整型变量x的值为1,执行下列程序段后,变量x的值是(do x++; while (x++<2);

A、2 B、3 C、4 D、5 61、下列语句的输出结果是( )。 for(i=2;i>0;i--) for(j=0;j

A、** B、*** C、**** D、****** 62、执行下列语句后,变量k的值是( )。 for(k=0;k<=5;k++) do k++;while (k<5);

A、5 B、6 C、7 D、8

63、下列程序段中,不能使变量m的值等于10的程序段是( A、m=0;

while (m++<9); B、do m=0;

while (m++<10);

C、for(m=8;m<10;m++); D、m=0;

L:m++; if (m<10) goto L;

8

)。。 )数学科学学院C语言复习资料

64、执行下列程序的输出结果是( )。 main()

{int i,m,n1=1,n2=1,n3; for(m=n1+n2,i=1;i<5;i++)

{n3=n1+n2;m=m+n3;n1=n2,n2=n3;} printf(“%d\\n”,m); }

A、6 B、12 C、20 D、33 65、如果在程序执行时输入:abc12.3xz和回车键,则输出结果为( )。 main() {char ch; float x=0;

do {ch=getchar();

if ((?0?<=ch)&&(ch

A、abc B、12.3 C、123 D、123.0 66、下列叙述正确的是( )。

A、continue和break只能用在循环体中 B、continue只能用在循环体中 C、break只能用在循环体中 D、continue只能用在循环体外

67、执行下列程序的输出结果是( )。 main() {int k;

for(k=9;k>0;k--)

if (k/3==0) continue; else printf(“%d”,k); }

A、875421 B、9876543 C、987654321 D、963

68、下列程序的主要功能是计算并输出1!+2!+?+10! 。缺少的内容是( )。 main()

9

数学科学学院C语言复习资料

{float y=1.0,x; int i,n;

for(n=2;n<11;n++) { ; for(i=2;i<=n;i++) x=x*i; y=y+x; }

printf(“%f\\n”,y); }

A、x=0.0 B、x=0 C、x=1.0 D、x=(float)n

69、下列程序的功能是根据以下公式求π值(直到最后一项小于10-6为止),程序中缺少的是( )。

?2?1?1121231234??????????? 3353573579main()

{double s=0.0, t=1.0;

int n;

for(n=1;t>=1e-6;n++)

{s+=t; ;} printf(“%f\\n”,2.0*s); }

A、t*=n/2*n+1 B、t=n*t/(2*n+1) C、t=t*n/2*n+1 D、t=t*n/(2*n-1)

70、设某网站成立第一天有10人点击,以后每天的点击数都是前一天的3倍多10人。下列程序是计算第11天有多少人点击,其中缺少是( )。 main()

{long s=10; int i ;

for( ) s=3*s+10; printf(“%ld\\n”,s); }

A、i=1;i<=11;i++ B、i=1;i<12;i++

10

数学科学学院C语言复习资料

C、i=2;i<12;i++ D、i=2;i<=12;i++ 71、定义数组时,代表数组长度的不能是( )。 A、整型表达式 B、符号常量

C、整型常量 D、整型常量表达式 72、在选用数组元素的下标时,可能造成程序运行出错的下标是( )。 A、正实数 B、整型变量 C、0 D、-1 73、设有语句“int a[]={1,2,3,9,8,7};”,则表达式“a[2]- a[4]”的值是( )。 A、-2 B、-4 C、-5 D、-7 74、以下程序运行后,输出结果是( )。 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]); printf(“\\n”); }

A、10000 B、10010 C、00110 D、10100 75、下列程序的运行结果是( )。 main() {int a[6],i;

for(i=1;i<6;i++)

{a[i]=9*(i-2+4*(i>3))%5; printf(“-”,a[i]); } }

A、-4 0 4 0 4 B、-4 0 4 0 3 C、-4 0 4 4 3 D、-4 0 4 4 0

76、设有下列定义语句,则表达式“x[1][1]*x[2][2]”的值是( float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};

A、 0.0 B、4.0 C、5.0 D、10.0 77、设有定义语句“char s1[4]=”abc”;”, 则表达式s1[3]的值(

11

)。 )。

数学科学学院C语言复习资料

A、0.0 B、0 C、‘0’ D、‘c’ 注:printf(“%d”,s1[3]);显示0

printf(“%c”,s1[3]);无显示(ascii值为0)

78、若有下列定义和语句,则运行后的输出结果是( )。 char s1[4]=”12”;printf(“%s”,s1);

A、1 B、12 C、□□12 D、12\\0 □表示空格

79、设有定义语句“char a[]=”123”,b[]={?1?,?2?,?3?};” 则正确的说法是( )。

A、a[3]是不可知的任意字符 B、数组a和b的长度相等 C、b[3]的值为?\\0? D、数组a长度大于数组b的长度 (注:不是a中和b中保存的字符串的长度)

80、下列语句在编译时,出错的语句是( )。 main()

{float s[][2]={1,2,3,4}; /*第1条语句*/ s[1][0]=10; /*第2条语句*/ s[0][0]=s[0]+s[1]+s[2]+s[3]; /*第3条语句*/ printf(“%f\\n”,s[1][1]); /*第4条语句*/ }

A、第1条语句 B、第2条语句 C、第3条语句 D、第4条语句 81、运行下列程序的输出结果是( )。 main()

{int i,j,k,n[2];

for(i=0;i<2;i++) n[i]=0; k=2;

for(i=0;i

for(j=0;j

A、1 B、3 C、程序出错 D、不确定的值 82、运行下列程序的输出结果是( )。 #define N 7 main()

12

数学科学学院C语言复习资料

{int I,j,temp,a[N]={1,2,3,4,5,6,7}; for(i=0;i

temp=a[i];a[i]=a[j];a[j]=temp; }

for(i=0;i

A、1234567 B、7654321 C、1357 D、246 83、运行下列程序的输出结果是( )。 main()

{int x=123,a1[6]={100,50,10,5,2,1},a2[6],j; while (x!=0)

{a2[0]= a2[1]= a2[2]= a2[3]= a2[4]= a2[5]=0; for(j=0;j<6;j++) { a2[j]=x/ a1[j]; x=x% a1[j];}

printf(“%d, %d, %d, %d, %d, %d,\\n”,a2[0],a2[1],a2[2],a2[3],a2[4],a2[5]); } }

A、1,2,3,0,0,0 B、0,2,0,4,0,3 C、1,0,2,0,1,1 D、0,0,0,1,2,3 84、运行下列程序的输出结果是( )。 main()

{int a[10],a1[]={1,3,6,9,10},a2[]={2,4,7,8,15},i=0,j=0,k; for(k=0;k<4;k++)

if (a1[i]

for(k=0;k<4;k++) printf(“”,a[k]); }

A、1478 B、1324 C、2413 D、4321

85、下列程序从键盘输入一个字符串,统计并输出其中数字字符的数目,程序中缺少的是( )。 main()

{char s[81];

int ;

13

数学科学学院C语言复习资料

scanf(“%s”,s); while (s[i]!=?\\0?)

{if (s[i]>=?0? && s[i]<=?9?) n++; i++; }

printf(“%d\\n”,n); }

A、n=0 B、n=1,i=0 C、n=i=0 D、n=0,i=0

86、函数调用“strcmp(“123”,”321”)”的返回值是( )。 A、0 B、1 C、负整数 D、任意正整数 87、设数组a中存放字符串“AB12cd”,则执行 printf(“%s”,strupr(a));后,显示的是( )。

A、ab12cd B、ABCD C、AB12cd D、AB12CD

88、设有两个字符数组a,b,则以下正确的输入语句是( )。 A、gets(a,b); B、scanf(“%s%s”,a,b);

C、scanf(“%s%s”,&a,&b); D、gets(“a”);gets(“b”);

89、有两个字符数组a[80],b[80],则正确的输出语句是( )。 A、puts(a,b); B、printf(“%s,%s”,a[],b[]); C、putchar(a,b); D、puts(a);puts(b); 90、若有说明“int a[][3]={1,2,3,4,5,6,7};”,则a数组的第一维的大小是( )。

A、2 B、3 C、4 D、无确定值

91、下面是对s的初始化,其中不正确的是( )。 A、char s[5]={“abc”}; B、char s[5]={?a?,?b?,?c?}; C、char s[5]=” ”; D、char s[5]=”abcdef”; 92、下面程序段的运行结果是( )。 char c[15]={?a?,?b?,?\\0?,?c?,?\\0?}; printf(“%s”,c);

A、?a??b? B、ab C、ah c D、a b 93、下面程序段的运行结果是( )。 char a[7]=”abcdef”; char b[4]=”ABC”; strcpy(a,b);

printf(“%c”,a[5]);

14

数学科学学院C语言复习资料

A、□ (表示空格) B、\\0 C、e D、f 94、设有下面的程序段,则( )。 char a[3],b[]=”China”; a=b;

printf(“%s”,a);

A、运行后输出China B、运行后输出Ch C、运行后输出Chi D、编译出错

95、判断字符串a和b是否相等,应使用( )。 A、if (a= =b) B、if (a=b)

C、if (strcpy(a,b) ) D、if (strcmp(a,b) )

96、判断字符串s1是否大于字符串s2,应当使用( )。 A、if (s1>s2) B、if (strcmp(s1,s2)) C、if (strcmp(s2,s1)>0) D、if (strcmp(s1,s2)>0) 97、运行下列程序的输出结果是( )。 #include “string.h” main()

{char s[60],s1[10]={“23”},s2[20]={“123”},s3[30]={“2348”}; if (strcmp(s1,s2)<0) {strcpy(s,s1);strcpy(s1,s2); strcpy(s2,s);} if (strcmp(s1,s3)<0) {strcpy(s,s1);strcpy(s1,s3); strcpy(s3,s);} if (strcmp(s2,s3)<0) {strcpy(s,s2);strcpy(s2,s3); strcpy(s3,s);} printf(“%s\\n%s\\n%s\\n”,s1,s2,s3); }

A、23

123 2348 B、2348

23 123

C、234823123 D、23132348 98、有以下程序 #include main()

{ char *p,*q;

15

数学科学学院C语言复习资料

p=(char*)malloc(sizeof(char)*20); q=p;

scanf(“%s%s”,p,q); printf(“%s %s\\n”,p,q); }

若从键盘输入:abc def<回车>,则输出结果是:

A. def def B. abc def C. abc d D. d d

99、设定义某函数时,函数头如下:int f(int a[],int b),则下列说法中错误的是( )。

A、该函数有整型的返回值 B、调用时要给形参b分配内存

C、数据传递都是地址传递方式 D、调用时第一个实参要以是指针变量 100、下列说法中,正确的是( )。 A、函数可以嵌套定义,但是不能嵌套调用

B、可以通过return(表达式1,表达式2,?) 语句返回多个值 C、函数的返回值可以是整型、实型、字符型、地址型及结构型 D、函数f( )不能直接调用自己,但是可以调用函数g( ),在函数g( )调用f( ) 101、C语言允许函数值类型默认定义,此时该函数值隐含的类型是( )。

A、float型 B、int型 C、long型 D、double型

102、如果在一个函数的复合语句中定义了一个变量,则该变量( )。 A、只在该复合语句中有效 B、在该函数中有效 C、在本程序范围内均有效 D、为非法变量

103、几是函数中未指定存储类别的局部变量,其隐含的存储类别为( )。

A、自动(auto) B、静态(static)

C、外部(extern) D、寄存器(register)

104、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。 A、extern B、register C、auto D、static

105、若调用一个函数,且此函数中没有return语句,则该函数( )。 A、没有返回值 B、返回若干个系统默认值 C、能返回一个用户所希望的函数值 D、返回 一个不确定的值

106、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )。

A、地址传递 B、单向值传递

C、由实参传给形参,再由形参传回给实参 D、由用户指定传递方式

16

数学科学学院C语言复习资料

107、若数组名作为函数调用的实参,传递给形参的是( )。 A、数组的首地址 B、数组第一个元素的值 C、数组中全部元素的值 D、数组元素的个数 108、以下正确的说法是( )。在C语言中简单变量作函数参数时, A、实参和与其对应的形参各占用独立的存储单元 B、实参和与其对应的形参共同占用一个存储单元

C、只有当实参和与其对应的形参同名时才共占存储单元 D、形参是虚拟的,不占用存储单元

109、以下程序的正确运行结果是( main() {int a=2,i;

for(i=0;i<3;i++) printf(“M”,f(a)); }

f(int a)

{int b=0;static int c=3; b++;c++;

return(a+b+c); }

A、7 7 7 B、7 10 13 C、7 110、以下正确的函数形式是( )。A、double fun(int x,int y) {z=x+y ;return z;} B、 fun(int x,y) {int z;return z;} C、fun(x,y) {int x,y; double z;

z=x+y; return z;}

D、double fun(int x,int y) {double z; z=x+y; return z;}

111、以下程序的正确运行结果是( #include

17

)。 9 11 D、7 。 8 9 )数学科学学院C语言复习资料

void num()

{extern int x,y; int a=15,b=10; x=a-b; y=a+b; } int x,y; main()

{int a=7,b=5; x=a+b; y=a-b; num( );

printf(“%d,%d\\n”,x,y); }

A、12,2 B、不确定 C、5,25 D、1,12 112、以下不正确的说法为( )。

A、在不同函数中可以使用相同名字的变量 B、形式参数是局部变量

C、在函数内定义的变量只在本函数范围内有效

D、在函数内的复合语句中定义的变量在本函数范围内有效

113、以下程序有语法性错误,有关错误原因的正确说法是( )。 main() {int G=5,k; void prt_char(); ?

k= prt_char(G); ? }

A、语句void prt_char();有错,它是函数调用语句,不能用void说明 B、变量名不能使用大写字母

C、函数说明和函数调用语句之间有矛盾 D、函数名不能使用下划线

114、C语言规定,函数返回值的类型由( )。 A、return语句中的表达式类型所决定 B、调用该函数时的主调函数类型所决定 C、调用该函数时系统临时决定

D、在定义该函数时所指定的函数类型所决定

18

数学科学学院C语言复习资料

115、若有定义: int a[10],则对数组a元素的正确引用是( )。 A、a[10] B、a[3,5] C、 a(5) D、a[10-10]

116、设有宏定义命令:#define MUL 2+3 ,则表达式“5+MUL*5.0”的值为( )。

A、50.0 B、30.0 C、22.0 D、20.0

117、设有宏定义:# define M(x,y) x

A、15 B、11 C、-15 D、-11 118、C语言程序中,main函数( )。

A、可以在任何地方出现 B、必须在所有函数的前面 C、必须在所有函数的后面 D、以上说法都不对 119、以下说法中,正确的是( )。

A、宏参数本身无数据类型 B、宏名只能由大写字母组成 C、宏替换是在程序执行时进行的

D、宏替换时参数数据类型应和定义时相同 120、运行下列程序的输出结果是( )。 # define SUB(X,Y) (X)*Y main()

{int a=3,b=4;

printf(“%d\\n”,SUB(a++,b++)); }

A、12 B、15 C、16 D、20 121、运行下列程序的结果是( )。 # define A(x) (x*x)

# define B(y,z) A(y)

{int a=2,b=3,c; c=B(a,b);

printf(“%d\\n”,c); }

A、4 B、5 C、6 D、9 122、以下叙述中不正确的是( )。 A、预处理命令行都必须以#开始

B、在程序中凡是以#开始的语句行都是预处理命令行

19

数学科学学院C语言复习资料

C、C程序在执行过程中对预处理命令进行处理 D、以下是正确的宏定义:#define IBM_PC 123、以下有关宏替换的叙述不正确的是( )。 A、宏替换不占用运行时间 B、宏名无类型

C、宏替换只是字符替换 D、宏名必须用大写字母表示

124、若有以下宏定义,则语句z=2*(N+Y(5));执行后的结果是( )。 #define N 2

#define Y(n) ((N+1)*n)

A、语句有错误 B、z的值为34 C、z=70 D、z无定值 125、设有指针变量p已指向float型变量x,正确的输入语句是( )。 A、scanf(“%f”,x); B、scanf(“%d”,&x); C、scanf(“%f”,p); D、scanf(“%f”,*p); 126、以下叙述中,不正确的是( )。

A、C语言中,顺序读写方式不适用于二进制文件

B、C语言中的文本文件以ASCII码形式存储数据 C、C语言中,随机读写方式不适用于文本文件 D、C语言中对二进制文件的访问速度比文本文件快 127、设有数据定义语句int a,*pa=&a;和赋值语句*pa=a; 则下列说法正确的是( )。

A、定义语句中的“*pa=&a”表示将a的地址赋予pa B、定义语句中的“*pa=&a”表示将a的值赋予pa C、赋值语句中的“*pa=a” 表示将a的地址赋予pa D、赋值语句中的“*pa=a” 表示将a的值赋予pa

128、和定义语句char *a=”ccw”;功能完全相同的程序段是( )。 A、char *a,a=”ccw”; B、char *a; a=”ccw”; C、char *a; *a=”ccw”; D、char *a,*a=”ccw”; 129、下列数据定义语句中,正确的是( )。

A、char ch[2],*p=ch[1]; B、char ch,*p=&ch; C、float *p=&a,a=5; D、float b1,b2,p=&b1;

130、设有char str[100];int i=5;则引用数组元素的错误形式是( )。 A、*((str++)+i) B、*(str+i-1) C、*(str+i) D、str[i+10] 131、设有定义语句int x[]={1,2,3},*p=x;则结果不是地址值的是( )。 A、p+1 B、x C、*p D、&x[0]

132、设有数据定义语句int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为8的

20

数学科学学院C语言复习资料

表达式是( )。

A、p+7 B、*p+8 C、*(p+8) D、*p+=7 133、设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,不能正确执行的语句是( )。

A、p2=k; B、p1=p2; C、k=*p1+*p2; D、k=*p1*(*p2); 134、运行下列程序的输出结果是( )。 main()

{float x1=-12,x2=0,x3=12,*p1,*p2,*p3,*p; p1=&x1,p2=&x2,p3=&x3; p=p1;

if (*p<*p2) p=p2; if (*p<*p3) p=p3; printf(“%f\\n”,*p); }

A、程序语法有错 B、12.0 C、0.0 D、-12.0 135、执行下列程序段后,变量y的值为( )。 int x[]={1,2,3,4},y,*p=&x[1]; y=(*--p)++;

A、4 B、3 C、2 D、1 136、执行下列程序段后,m的值为( )。 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p; p=&a[0][0];

m=(*p)*(*(p+2))*(*(p+4));

A、12 B、13 C、14 D、15 137、运行下列程序的输出结果是( )。 main() {int i;

char a[20]=”123456”,*p; for(p=&a[5];p>=a;p--) printf(“%c”,*p); }

A、135 B、246 C、654321 D、123456 138、运行下列程序的输出结果是( )。

21

数学科学学院C语言复习资料

main()

{char *p=”13542”; while (*p!=?4?)

printf(“%c”,*(p++)+1); }

A、246 B、135 C、152 D、13542 139、运行下列程序的输出结果是( )。 main()

{char str1[100]=”1a2B3C”,str2[100],*p1=str1,*p2=str2; while (*p1!=?\\0?)

if ((*p1>=?A?&&*p1<=?Z?)||( *p1>=?a?&&*p1<=?z?)) {*p2=*p1;p1++;p2++;} else p1++; *p2=?\\0?; p2=str2;

printf(“%s”,p2); }

A、123 B、abc C、ABC D、aBC

140、设“char s[10],*p=s;”以下不正确的表达式是( )。 A、p=s+5 B、s=p+5 C、s[2]=p[4] D、*p=s[0] 141、已知“int a,*p=&a;”,则下列函数调用中要求输入输出a的值,错误的是( )。A、scanf(“%d”,&a); B、scanf(“%d”,p);

C、printf(“%d”,a); D、printf(“%d”,p);

142、声明语句“int (*p)();”的含义是( )。 A、p是指向int型数组的指针变量 B、p是指针变量,指向一个整型数据

C、p是一个指向函数的指针变量,该函数的返回值是整型 D、以上都不对

143、下面正确的说明语句是( )。

A、int (*a)[10]; B、int a[3,4]; C、int a[][]; D、int a[?a?]; 144、设“char b[5],*p=b;”,则正确的赋值语句是( )。

A、b=”abcd”; B、*b=”abcd”; C、p=”abcd”; D、*p=”abcd”;

22

数学科学学院C语言复习资料

145、已知“int b[]={1,2,3,4},y,*p=b; y=*p++;”这两个语句执行后,变量y的值为( )。

A、1 B、2 C、3 D、4 146、下面程序段的运行结果是( )。 char str[]=”abc”,*p=str; printf(“%d\\n”,*(p+3));

A、67 B、0 C、字符‘c’的地址 D、字符‘c’ 147、下面程序段的运行结果是( )。 char str[]=”abc”,*p=str; printf(“%s\\n”,p+1);

A、0 B、字符‘c’ C、bc D、abc 148、下面程序段的运行结果是( )。 char s[6];s=”abcd”;printf(“\\”%s\\”\\n”,s);

A、”abcd” B、abcd C、\\”abce” D、编译出错 149、下面程序段的运行结果是( )。 char s[6]=”abcd”;printf(“\\”%s\\”\\n”,s);

A、”abcd” B、abcd C、\\”abce” D、编译出错 150、下面程序的运行结果是( )。 main()

{int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(“%d\\n”,*(p+9)); }

A、19 B、a+9 C、1 D、10 151、下面程序有两个printf()函数,如果第1个输出的是196,则第2个printf()函数输出的是( )。(本题假设int型变量占2个字节) main()

{int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(“%x\\n”,p); printf(“%x\\n”,p+9); }

A、204 B、1a8 C、203 D、1a6

152、为了建立如图所示的存储结构( 即每个结点含两个域, data 是数据域,next是指向结点的指针域,), 【 】中应填( )。 data next

23

数学科学学院C语言复习资料

struct link{ char data;【 】}node; A、struct link *next; B、struct link next; C、link *next; D、struct *next;

153、设有定义语句“double d[3][5]={{1},{2},{3}},(*p)[5]=d;”则下列表达式中值不为0.0的表达式是( )。

A、*&d[1][2] B、p[1][2] C、*(p+1*5+2) D、*(*(p+1)+2) 154、下列程序段的输出结果是( )。 int k[2]={5,4},*p[2]; p[0]=k,p[1]=k+1; printf(“%d”,*p[1]);

A、5 B、4 C、1 D、0

155、设某个带参数的主函数执行时的命令行如下: p1□1□2□3

则主函数形参中指向字符型的指针数组长度是( )。 A、1 B、2 C、3 D、4 156、关于“带参数的主函数”,下列说法中错误的是( )。

A、形式参数有两个,一个是整型变量,另一个是指向字符型的指针数组 B、形式参数对应的实际参数是在运行程序时输入的

C、整型变量对应的形式参数值等于命令行中包括程序名在内用空格分开的实际参数的数目

D、形参数组(指向字符型的指针数组)的长度等于另一个形参(整型变量)获得的实参值

157、设下列程序经编译连接后生成目标程序名为p1.exe,设运行时输入的命令行为:p1 abcdef ,则输出结果是cdef。程序中缺少的是( )。 main(int argc, char *argv[]) {printf(“%s\\n”, );} A、argc+2 B、argv[2] C、argv[1]+2 D、argv+2 158、下列数据定义语句中,正确的是( )。

A、struct x{int x1;int x2;} B、struct {int x1;int x2;}x; C、struct x{int x1;int x2}; D、struct {int x1;float x2}x;

159、设有数据定义语句“struct x{int x1;int x2;}x3;”,则下列语句中正确的是( )。

A、x3.x1=5; B、x2.x1=5; C、x.x1=5; D、x3={5,6};

24

数学科学学院C语言复习资料

160、设有下列数据定义语句,则能正确引用成员x2的表达式是( )。 struct x1{int x2;};

struct x3{struct x1 x4;}x5;

A、x5.x4.x2 B、x3.x4.x2 C、x1.x2 D、x5.x2

161、定义一个结构体变量时,分配给它的内存字节数目是( )。 A、结构体变量的成员中,所有成员占用的字节数总和+1

B、结构体变量的成员中,占用字节数最多的成员占用的字节数 C、结构体变量的成员中,占用字节数最少的成员占用的字节数 D、结构体变量的成员中,所有成员占用的字节数总和

162、设有下列数据定义语句:union uu{char ch1;int i2;float f3;}cif; 则下列说法中正确的是( )。

A、共用体变量cif的成员中,ch1和i2的首地址不同 B、共用体变量cif一共分配了7个内存单元

C、可以在上述定义时,给共用体变量cif的各个成员赋初值 D、可以在程序中给共用体变量cif的各个成员分别赋值 163、”typedef long int BIGGY;” 的作用是( )。 A、建立了一种新的数据类型 B、定义了一个整型变量

C、定义了一个长整型变量 D、定义了一个新的数据类型标识符 164、设字符型变量x的值是064,表达式“~x^x<<2&x”的值是( ). A、0333 B、333 C、0x333 D、020

165、在文件类型及文件型指针,下列说法中错误的是( )。 A、文件型是系统已经定义好的一种专门用于文件处理的结构型 B、定义文件型指针的方法是“FILE *文件型指针变量;”

C、文件型指针是专门指向已经打开的文件的一种结构体指针变量 D、文件类型是在头文件“file.h”中定义的

166、以只读方式打开一个二进制文件,应选择的文件使用方式是( )。

A、”rb” B、”wb” C、”a+” D、”w+”

167、不能正确打开文件时,打开文件函数的返回值是( )。 A、NULL B、*p C、非0 D、1

168、下列语句中,不能正确地从键盘上读取单个字符存入字符型变量ch的语句是( )。

A、ch=fgetc(stdin) B、fgetc(stdin,&ch) C、ch=getchar(); D、scanf(“%c”,&ch);

25

数学科学学院C语言复习资料

169、在进行文件操作时,写文件的一般含义是( )。 A、将计算机内存中的信息存入磁盘 B、将磁盘中的信息存入计算机内存 C、将计算机CPU中的信息存入磁盘 D、将磁盘中的信息存入计算机CPU

170、在C语言中对文件操作的一般步骤为( )。 A、打开文件----操作文件----关闭文件 B、操作文件----修改文件----关闭文件 C、读写文件----打开文件----关闭文件 D、读文件----写文件----关闭文件 171、要打开一个已存在的非空文件file用于修改,正确的语句是( )。 A、fp=fopen(“file”,”r”); B、fp=fopen(“file”,”a+”); C、fp=fopen(“file”,”w”); D、fp=fopen(“file”,”r+”); 172、C语言可以处理的文件类型是( )。

A、文本文件和数据文件 B、文本文件和二进制文件 C、数据文件和二进制文件 D、以上答案都不对 173、当文件顺利关闭时,fclose()的返回值是( )。 A、-1 B、EOF C、0 D、1 174、fscanf()函数的一般调用形式为( )。 A、fscanf(文件指针,格式字符串,输出表列) B、fscanf(格式字符串,输出表列,文件指针) C、fscanf(格式字符串,文件指针,输出表列) D、fscanf(文件指针,格式字符串,输入表列)

175、若用fopen函数打开一个二进制文件时,要求该文件既能读也能写,则文件打开方式字符串为( )。 A、“ab” B、”wb” C、”rb” D、”a+”

176、若x为一个实数,那么输出x应使用下面哪个语句( )。 A. printf(“x=”,x); B. printf(“x=%d”,x); C. printf(“x=%f”,x); D. printf(“x=%”,x); 177、设i和k都是int 类型,则以下对循环语句: for(i=0,k=-1;k=1;i++,k++)

{printf(“*****”);} 说法正确的是( )。 A. 循环结束的条件不合法 B. 循环体一次也不执行 C. 循环体只执行一次 D. 该循环是无限循环

26

数学科学学院C语言复习资料

178、有说明“int n=2,*p=&n,*q=p;”,则以下非法的赋值语句是( )。 A. p=n; B. *p=*q; C. n=*q; D. p=q; 179、运行以下程序时编译出错,其原因是( )。 char c1=?a?,c2=?123?; printf(“%c,%d\\n”,c1,c2);

A.字符串要用”123”表示 B. ?123?只能赋给字符数组 C. c2是字符常量,不能用%d输出

D. ?123?不是正确的字符常量,不能赋值给字符变量 180、以下程序段的运行结果是( )。 enum wd{a=1,b,c,d,e}wk=e; printf(“%d\\n”,wk);

A. 4 B. 5 C. -1 D. 181、下面程序运行后的输出结果是( )。 main()

{char s[]=”abcdefg”; s[5]=?\\0?;

printf(“%s\\n”,s); }

A. abcd B. abcde C. abcedf D. abcdefg 182、下面程序运行后的输出结果是( )。 main()

{int a,b,x=45; a=b=0; if (!a) x--; if (b) x=30; else x=40;

printf(“x=%d\\n”,x); }

A. x=0 B. x=30 C. x=40 D. x=44 183、下面程序运行后的输出结果是( )。 main() {int a,m;

for(m=10;m<25;m++) {a=m;

27

e 数学科学学院C语言复习资料

if(a==5&&m%3==0) { printf(“%d”,m); } } }

A. 5 B.10 C. 15 D. 25

184、当int类型的长度为2字节时,则类型unsigned int的值域范围是( )。

A. 0到255 B. 0到65535 C. -32768到32767 D. -256到255 185、设有语句char a=?\\65?;则变量a ( ).

A.包含2个字符 B. 包含3个字符 C. 说明不合法 D. 包含1个字符 186、定义如下数组int f[30]={12,20,8,10};则f定义了( )个元素。 A. 30 B. 4 C. 12 D. 20

187、执行完下面的C程序段后,b 的值为( )。 int x=16,y=15; char z=?A?; int b;

b=((x%y)&&(z>?a?)); 供选择的答案为:

A. TRUE B.FALSE C. 1 D. 0 188、有以下程序段:

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a,b; b=p[5];

b的值是 ( )。

A. 1 B. 4 C. 5 D. 6

28

数学科学学院C语言复习资料

189、若有定义:int x[20],*p=x;则*(p+5)表示( )。 A. 数组元素x[5]的地址 B. 数组元素x[5]的值 C. 数组元素x[6]的地址 D. 数组元素x[6]的值 190、下列程序 main() {float a,b,t; a=16.3,b=9.6; if(a>b) {t=a;a=b;b=t;}

printf(“%5.2f,%5.2f”,a,b);

} 执行后的输出结果是( )。 A. 16.3, 9.6 B. 16.30, 9.60 C. 9.6, 16.3 D. 9.60, 16.30 191、下列程序 main()

{int x=6,y=3,z=5; y*=x; z+=y++; printf(“%d\\n”,z);

}执行后的输出结果是( )。 A. 23 B. 24 C. 8 D. 9

192、下列选项中,哪一个是C语言中合法的常量( )。 A. 1.341e B. 2/5 C. “x”?q? D. “12345”

29

数学科学学院C语言复习资料

193、以下正确的实型常量是( )。

A. e3 B. E10 C. 1.23e-5 D. 12e1.23

194、下列关于C语言数据文件的叙述中正确的是( )。 A. C语言只能读写文本文件 B. C语言只能读写二进制文件 C. 文件由字符序列组成,可按照数据的存放形式分为二进制文件的文本文件

D. 文件由二进制数据序列组成

195、设x为int型变量,y为float型变量,则下列语句中错误的是( )。

A. x++; B. x=y=0; C. y=(float)x; D. x=y%3; 196、以下程序 main()

{char st[30]=”I am a student”; printf(“%d\\n”,strlen(st)); }

执行后输出结果是 。

A.14 B. 30 C. 11 D. 16

197、设x,y,z和k都是int型变量,则执行下列语句后,变量x的值为( )。 x=(y=5,z=20,k=50); 供选择的答案是

A.5 B. 50 C. 20 D. 75

30

数学科学学院C语言复习资料

1、下列程序是输入三角形的三边长(设为整数),判断是否能构成三角形?能构成等腰三角形?若不能构成三角形,则输出0;若能构成三角形,则输出1;若能构成等腰三角形,则再输出2;请填写程序中缺少的内容。 main() {int a,b,c;

scanf(“%d,%d,%d”,&a,&b,&c);

if ((a+b<=c)||(a+c<=b))||(b+c<=a)) printf(“0\\n”); else

{ printf(“1\\n”);

if ( ) printf(“2\\n”); } }

2、下列程序的主要功能是输出下列图形,请填写程序中缺少的内容 ** **** ****** ******** main() {int i,j;

for(i=1;i<5;i++)

{for(j=1;j<= ;j++) printf(“%c”,? ?); for(j=1; ;j++) printf(“%c%c”,?*?,?*?); printf(“\\n”); } }

3、下列程序的主要功能是输入一个正整数,统计并输出其所有的因子(不含1,但包含重复因子),填写缺少的内容。 main() {int x,p=2;

do scanf(“%d”,&x); while (x<=0); while (x!=1)

{if ( ) {printf(“%d\\n”,p);

36

数学科学学院C语言复习资料

x=x/p;

} p++; }

}

4、下列程序可求出矩阵a的两条对角线之和,请填空。 main()

{int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++)

if (i= =j) sum1=sum1+a[i][j]; for(i=0;i<3;i++)

for( ; ;j--) if (i+j= =2) sum2=sum2+a[i][j]; printf(“sum1=%d,sum2=%d\\n”,sum1,sum2); }

5、以下程序的功能是求数组num中小于0的数据之和,请填空。 main()

{int num[20]={10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22, 90,-45,20} int sum=0,i;

for(i=0;i<=19;i++)

if ( ) sum= ; printf(“sum=m”,sum); }

6、下面程序可将十进制整数转换为n进制,请填空。 main()

{int i=0,base,n,j,num[20];

printf(“Enter data that will be converted \\n ”); scanf(“%d”,&n);

printf(“Enter base\\n”); scanf(“%d”,&base);

37

数学科学学院C语言复习资料

do {i++;

num[i]=n base; n=n base; } while (n!=0);

printf(“The data %d has been converted into the %d—base data:\\n ”,n,base); for ( ) printf(“%d”,num[j]); }

7、下列程序将输出computer,请填空。 main() {int i,j=0;

char c[]=”it?s a computer”; for(i=0; ;i++) { ;printf(“%c”,c[j]);} } 8、输入一行字符, 统计其中英文字母, 空格, 数字和其它字符的个数. 其程序如下:

#include main() {

char c;

___________________________________________ printf(\ while((c = getchar()) != '\\n') {

if(c >= 'a' && c <= 'z' || c >= 'A' && c < 'Z') letter++; else if(c == ' ') space++;

else if(c >= '0' && c <= '9') digit++; else other++;

38

数学科学学院C语言复习资料

}

printf(\= %d, Spaces = %d, Digits = %d, Others = %d\\n\letter, space, digit, other); }

9、求出所有“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。其程序如下: #include main() {

int i, j, k, n;

printf(\水仙花数' 是: \ for(n = 100; n < 1000; n++) {

i = n/100;

_____________ k = n;

if(n == i*i*i + j*j*j + k*k*k) printf(\ }

printf(\}

10、求一分数序列前50项之和。该分数序列为

21,,,,...,325385FnFn?1,...

,其中Fn为Fibonacci数。其程序如下: #include main() {

int i, t, n = 50;

double a = 2, b = 1, s =0; for(i = 1; i <= n; i++) {

s = s + a/b; t = a;

39

数学科学学院C语言复习资料

a = a + b; __________ }

printf(\}

11、以下程序中的函数fun是计算 S=1+1/2!+1/3!+…+1/n! 请填空。 main()

{int a;double sum=0.0; double fun(int); scanf(\sum=fun(a);

printf(\}

double fun(int n)

{double s=0.0,fac=1.0;int i; for(i=1;i<=n;i++) {fac=fac ; s=s+fac; }

return s; }

12、下面程序的作用是将以下给出的字符按其格式读入数组ss中,然后输出行、列号之和为3的数组元素,请在____处填入正确内容。 A a f c B d e b c g f D main() {

static char ss[4][3]={'A','a','f','c','B','d','e','b','C','g','f','D'}; int x,y,z;

for(x=0; 【1】 ;x++) for(y=0; 【2】 ;y++)

40

本文来源:https://www.bwwdw.com/article/sei6.html

Top