C语言复习题

更新时间:2023-12-20 09:47:01 阅读量: 教育文库 文档下载

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

第1章

1.1 单选题

1.一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是( )。

A.有零个或多个输入 B. 有零个或多个输出 C.有穷性 D. 可行性 2. 以下叙述中正确的是( )。

A. C语言的源程序不必通过编译就可以直接运行

B. C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C. C语言源程序经编译形成的二进制代码可以直接运行 D. C语言中的函数不可以单独进行编译 3. 用C语言编写的代码程序( )。

A. 可立即执行 B. 是一个源程序

C. 经过编译即可执行 D. 经过编译解释才能执行

4. 结构化程序由三种基本结构组成,三种基本结构组成的算法( )。 A. 可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完成符合结构化的任务 D. 只能完成一些简单的任务 5. 以下叙述中正确的是( )。

A. 用C程序实现的算法必须要有输入和输出操作

B. 用C程序实现的算法可以没有输出但必须要有输入 C. 用C程序实现的算法可以没有输入但必须要有输出 D. 用C程序实现的算法可以既没有输入也没有输出

1.2 填空题

1.C语言程序的基本单位是__________。

2.一个C语言程序总是从__________开始执行,并终止于__________。

3.一个C语言程序是由一个或若干个函数构成的,程序中至少应包含一个__________函数。

4.一个C语言函数一般由两部分组成,它们分别是__________和__________。 5.函数体以__________开始,以__________结束。

6.结构化程序的3种基本结构是__________、__________和__________。

7.C语言源程序文件名的后缀是__________,经过编译后,生成的目标文件名的后缀是__________,经过连接后,生成的可执行文件名的后缀是__________。

第2章

2.1 单选题

1.下列叙述中正确的是( )。

A.C语言中既有逻辑类型也有集合类型 B.C语言中没有逻辑类型但有集合类型

C.C语言中有逻辑类型但没有集合类型

D.C语言中既没有逻辑类型也没有集合类型

2.下列关于C语言用户标识符的叙述中正确的是( )。 A.用户标识符中可以出现下划线和中划线(减号) B.用户标识符中不可以出现中划线,但可以出现下划线

C.用户标识符中可以出现下划线,但不能放在用户标识符的开头

D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头 3.下列4个选项中,( )是合法的用户自定义标识符。 A.b?b B.float C.2a D._isw 4.以下选项中不正确的整型常量是( )。 A.12L B.?10 C.1 900 D.123U 5.以下选项中,( )是不正确的字符常量。 A.\ B.'1' C.'\\n' D.'\\101 6.下列关于自增运算符++和自减运算符??的叙述中正确的是( ) A.它们的运算对象可以是任何类形的变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D.它们的运算对象可以是char型变量、int型变量和float型变量 7.下列表达式中值为0的是( )。 A.3%5 B.3/5.0 C.3/5 D.3.0/5 8.设变量已正确定义并赋值,表达式( )不符合C语言语法。 A.int(3.14) B.++a C.a=b=5 D.a=4,3 9.若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。 A.a:=b+1 B.a=b=c+2 C.int 18.5%3 D.a=a+7=c+b 10.若变量已正确定义并赋值,表达式( )不符合C语言语法。 A.a*b/c; B.3%2 C.2, b D.a/b/c 11.下列选项中,( )可以将x、y定义成float类型变量,并赋同一初值3.14。 A.double x, y=3.14; B.double x, y=2*3.14; C.double x=3.14, y=3.14; D.double x=y=3.14; 12.若变量已正确定义,表达式“j=3, j++”的值是( )。 A.3 B.4 C.5 D.0

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

1 的表达式是( )。 abcA. 1/a*b*c B.1/(a*b*c) C.1/a/b/(float)c D.1.0/a/b/c 14. 以下能正确定义且赋初值的语句是( ) int n1=n2=10; B. char c=32; C. float f=f+1.1; D. double x=12.3E2.5; 15. 以下不能定义为用户标识符的是( ) A. scanf B. Void C. _3com_ D. int 16. 设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32+z)后,x的值为 ( ) A.4 B.16 C.48 D.32 17. 设有 int x=11,则表达式(x++ * 1/3)的值是( )。 A. 3 B.4 C. 11 D.12

xy?z的C

18. 以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子

语言表达式是()。 A. x/y*z B. x*(1/(y*z)) C. x/y*1/z 19. 有以下程序 main()

 { char a1='M', a2='m';

 printf(\以下叙述中正确的是( )  A.程序输出大写字母M B.程序输出小写字母m  C.格式说明符不足,编译出错 D.程序运行时产生出错信息 20. 以下程序运行后的输出结果是( ).  main()

 { char p[]={'a', 'b', 'c'}, q[]=\

 printf(\ }; A.4 4 B.3 3 C.3 4 D.4 3

21. 以下叙述中错误的是( )

A.用户所定义的标识符允许使用关键字 B.用户所定义的标识符应尽量做到“见名知意”

C.用户所定义的标识符必须以字母或下划线开头 D.用户定义的标识符中,大、小写字母代表不同标识 22.在C语言中,下列属于构造类型的是()

A.整型 B 字符型 C实型 D.数组类型 23.下列字符串属于标识符的是()

A. INT B. 5_student C. 2ong D. !DF 24.C语言中能用来表示整常数的进制是()

A.十进制、八进制、十六进制 B.十二进制、十进制 C.六进制、八进制 D.二进制、十进制 25.在C语言中,回车换行符是()

A. \\n B. \\t C. \\v D. \\b

26. 在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII码() 。 A)大32 B)大64 C)小32 D)小64 27. 设d为字符变量,下列表达式不正确的是() 。 A)d=97 B)d=?a? C)d=”a” D)d=?g? 28.设d为字符变量,下列表达式正确的是 () 。 A)d=678 B)d=?a? C)d=”d” D)d=?gjkl?

29. 已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为 。 main() {char x,y; x=?0?;y=?9?;

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

D. x/y/z

}

A)因输出格式不合法,输出错误信息 B)48,57 C)0,9 D)48,58

30.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为 。 main()

{char c=?A?;int i=10; c=c+10; i=c%i;

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

A)75,7 B)75,5 C)K,5 D)因存在非图形字符,无法直接显示出来

31.已知在ASCII集中,字母A的序号为65,下面程序的输出结果为 。 main()

{char c1=?B?,c2=?Y?;

printf(“%d,%d\\n”,++c1,--c2); }

A)输出格式不合法,输出错误信息 B)67,88 C)66,89 D)C,X

32. C语言中,运算对象必须是整型数的运算符是() 。 A)% B)\\ C)% 和 \\ D)** 33..下列常数中,合法的C 常量是() 。 A)-0. B)?105? C)?AB? D)”35” 34.下列常数中,合法的C 常量是() 。 A)”x-y” B)?105? C)?Be? D)7ff 35.下列常数中,合法的C 常量是() 。 A)?\\n? B)e-310 C)?DEF? D)?1234? 36.下列常数中,不合法的C 常量是() 。 A)-0x2a B)lg3 C)?[? D]”CHINA” 37.下列常数中,不合法的C 常量是() 。 A)-0x3b B)123e+2.3 C)?}? D)6e+7 38.下列符号中,可以作为变量名的是 () 。 A)+a B)12345e C)a3B D)5e+0 39.下列符号中,可以作为变量名的是() 。 A)+c B)*X C)_DAY D)next day

40. 若已定义X和Y为double类型,则表达式:x=1,y=x+3/2的值为 () A)1 B)2 C)2.0 D)2.5 41.下列程序的执行结果是() 。 #include #define sum 10+20 main() {

int b=0,c=0; b=5;

c=sum*b;

printf(\}

A)100 B)110 C)70 D)150 42..下列程序的执行结果是() 。

#include #define sum(10+20) mian() {

int a=0,b=0,c=0; a=sum; b=5;

c=sum*b;

printf(\}

A)100 B)110 C)70 D)150 43. 表达式(int)2.1416的值为() 。

A)2 B)2.1 C)0 D)3 44.表达式(double)(20/3)的值为 。

A)6 B)6.0 C)2 D)3

45. 假设所有变量均为整型, 则表达式( a=5, b=2, a++, a+b ) 的值是() 。

A)8 B)7 C)6 D)5 46.C语言规定标识符由 () 等字符组成.

A)字母 数字 下划线 B)中划线 字母 数字 C)字母 数字 逗号 D)字母 下划线 中划线 47. 已知ch是字符型变量,下面不正确的赋值语句 是:() 。

A)ch=?\\0? B)ch=?a+b?

C)ch=?7?+?9? D)ch=7+9 48. 若x和y都为float型变量,且x=3.6, y=5.8 执行下列语句后输出结果为:() printf(“%f”,(x,y));

A)3.600000 B)5.800000

C)3.600000,5.800000 D)输出符号不够,输出不正确值

49. 设整型变量a值为9,则下列表达式中使b的值不为4的表达式: 。A)b=a/2 B)b=a%2 C)b=8-(3,a-5) D)b=a>5?4:2

2.2 填空题

1.若x是浮点型变量,则表达式“x=10/4”的值是__________。 2.下列程序段的运行结果为:__________。

double x1, x2; x1=3/2; x2=x1/2;

printf(\%d,%.1f\

3.执行下列程序段后变量i和j的值为:__________。

int i=10, j=1; (i??,++j);

4.表达式sizeof(\的值为__________。

5.表达式“'c'+1”的值为__________,对应的英文字符为__________。 6.设有语句“int a=10;”,请分别填写下列各表达式的值。 (1)a+=a的值为__________。

(2)a+=a?=a*=a的值为__________。 (3)a*=2+4的值为__________。

7.写出下列各程序段执行后相应变量的值。 (1) int a,b,c; a=b=c=5;

a=++b+(??c);

变量a,b,c的值为__________。 (2) int a=4,b=5,c;

c=(a=6)+(b=9);

变量a,b,c的值为__________。 (3) int a,b,c;

c=(a=5,b=a*4); a=2+6,a*2,a*5;

c+=(a=b=3,b=a*c,a+b);

变量a,b,c的值为__________。

8.表达式“'H'?'A'+'0'”的值为__________。 9. 写出下列程序段的执行结果 int a,b,c; a=b=c=5; a=++b+(c--);

变量a,b,c的值为 10. 若有如下程序段: int a=10,b=9,c=8; c=(a-=(b-5)); c=(a)+(b=5);

顺序执行上述语句后,变量b的值为 11. 设有以下变量定义,并已赋确定的值 char w; int x; float y; double z;

则表达式:w * x + z - y所求得的数据类型为 。 12.C语言基本数据类型包括 、 、 、 。

13. C语言在定义变量的同时说明变量的 ,系统在编译时就能根据变量定义及其 为它分配相应数量的存储空间。

14. 在C语言中,标识符只能由 、 和 三种字符组成,且第一个字符必须 或 。

15. 实型变量分为 和 ,即float和double型。

16.C语言中规定,在变量定义的同时也可以给变量赋初值,叫做 。 17. C的字符串常量是用 括起来的字符序列。(0级)

18.在C 语言中,系统在每一个字符串的结尾自动加一个“字符串结束标志符”即 ,以便系统据此数据判断字符串是否结束。 19. 下面的程序 mian() {float x;int i; x=3.6;i=(int)x; printf(\}

运行结果为 。

第3章

3.1 单选题

1.若变量a、i已正确定义,且i已正确赋值,则合法的语句是( )。 A.a==1 B.++i; C.a=a++=5; D.a=int(i); 2.以下程序的输出结果是( )。

#include “stdio.h”

main( )

{ int y=3,x=3,z=1;

printf(\}

A.3 4 B.4 2 3.若有以下定义和语句:

int u=010,v=0x10,w=10; printf(\

则输出结果是( )。 A.8,16,10 B.10,10,10 C.8,8,10 4.若有以下定义和语句:

char c1='b',c2='e';

printf(\?c1,c2?'a'+'A');

则输出结果是( )。 A.2,M B.3,E

C.2,E D.输出项与对应的格式控制不一致,输出结果不确定 5.以下程序段的输出结果是( )。

int a=1234;

printf(\%2d\\n\ A.12 C.1234

C.4 3 D.3 3

D.8,10,10

B.34

D.提示出错、无结果

6.以下程序的输出结果是( )。

main( )

{

char c='z';

printf(\%c\?25); }

A.a B.Z C.z?25 7.以下程序的输出结果是( )。

main( )

{ int k=17;

printf(\%d,%o,%x \\n\}

A.17,021,0x11 B.17,17,17 B.17,0x11,021 D.17,21,11 8.以下程序的输出结果是( )。

main( )

{ double d=3.2; int x,y; x=1.2;y=(x+3.8)/5.0; printf(\%d \\n\*y); }

A.3 B.3.2 C.0 D.3.07 9.下列程序执行后的输出结果是(小数点后只写1位)( )。

main( )

{ double d; float f; long k; int i; i=f=k=d=20/3;

printf(\%d%ld%f%f \\n\}

A.6 6 6.0 6.0 C.6 6 6.0 6.7 10.语句

printf(\

的输出结果是( )。提示,'\\b'是退格符。 A.a\\bre\\'hi\\'y\\\\\\bou B.a\\bre\\'hi\\'y\\bou C.re'hi'you D.abre'hi'y\\bou

11.x、y、z被定义为int型变量,若从键盘上给x、y、z输入数据,则正确的输入语

句是( )。

A.INPUT x、y、z; B.scanf(\%d%d%d\; C.scanf(\%d%d%d\; D.read(\%d%d%d\;

12.设i是int型变量,f是float型变量,要通过语句“scanf(\%d,f=%f\;”给

i赋值100,f赋值765.12,则正确的输入为( )。 A.100765.12 B.i=100,f=765.12 C.100765.12 D.x=100y=765.12

13. 设x为int型变量,则执行以下语句后,x的值为( )。

D.y

B.6 6 6.7 6.7 D.6 6 6.7 6.0

x=10; x+=x-=x-x;

A.10 B. 20 C. 40 D. 30 14. 下列可作为C语言赋值语句的是( )。 A. x=3,y=5 B. a=b=6 C. i--; D. y=int(x);

15. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为( )。 x=y=z=1;

t=++x||++y&&++z;

A. 不定值 B. 2 C. 1 D. 0

16. 若以下选项中的变量已正确定义,则正确的赋值语句是( )。 A. x1=26.8%3 B. 1+2=x2 C. x3=0x12; D. x4=1+2=3; 17. 设有以下定义

int a=0;

double b=1.25; char c='A'; #define d 2

则下面语句中错误的是( )。 A. a++; B. b++; C. c++; 18. 有以下程序

main() {

int x=102,y=012;

printf(\ }

执行后输出的结果是( )。

D. d++;

A. 10,01 B. 02,12 C. 102,10 D. 02,10 19. 有以下程序 main()

{ int m=3, n=4,x; x=-m++; x=x+8/++n;

printf(\ }

程序运行后的输出结果是( )。

A. 3 B. 5 C. -1 D. -2 20. 有以下程序 main()

{ char a='a', b;

printf(\ printf(\ }

程序运行后的输出结果是( )。

A. b,b B. b,c C. a,b D. a,c 21. 有以下程序 main()

{ int m=0256, n=256;

printf(\ }

程序运行后的输出结果是( )。

A.0256 0400 B. 0256 256 C. 256 400 D. 400 400 22. 有以下程序 main()

{ char a,b,c,d;

scanf(\

printf(\}

若运行时从键盘上输入:6,5,65,66。则输出结果是( )。 A. 6,5,A,B B. 6,5,65,66 C. 6,5,6,5 D. 6,5,6,6 23. 数字字符0的ASCII值为48,若有以下程序

main()

{ char a='1',b='2'; printf(\

printf(\}

程序运行后的输出结果是( )。

A. 3,2 B. 50,2 C. 2,2 D. 2,50 24. 有以下程序

main()

{ int m=12,n=34;

printf(\ printf(\

}

程序运行后的输出结果是( )。

A. 12353514 B. 12353513 C. 12343514 D. 12343513 25. 有以下程序

main()

{ int m,n,p;

scanf(\ ??

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是( )。

A. m=123n=456p=789 B. m=123 n=456 p=789 C. m=123,n=456,p=789 D. 123 456 789 26. 有以下程序

main()

{ int a,b,d=25; a=d/10%9; b=a-1;

printf(\

}

A.2 B.3 C.4 D.编译时有错误,无结果 11.以下程序执行后的输出结果是( )。 #include \main( )

{ char x='A';

x=(x>='A'&& x<='Z')? (x+32): x ; printf(\%c\\n\ A.A B.a C.z D.Z 12.下列程序段执行后,变量k、x、y、z值依次为( )。 int k,x,y,z; x=y=z=1;

k=x++&&y++||z++;

A.1、2、2、1 B.1、2、2、2 C.0、2、2、1 D.0、2、2、2

13. 若变量c为char类型,能正确判断出c为小写字母的表达式是( ) A.'a'<=c<='z' B.(c>= 'a')||(c<= 'z') C.('a'<=c)and ('z'>=c) D.(c>= 'a')&&(c<= 'z')

14. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是( ) A. (!a==1)&&(!b==0) B. (a=10 or a<=0 B. a>=0|a<=10 C. a>=10 && a<=0 D. a>=10‖a<=0

16. 下列运算符中优先级最高的是 。

A)> B) + C) && D)!= 17.以下关于运算符优先级的描述中,正确的是 。

A)!(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算 B)&&(逻辑与)>算术运算>关系运算>赋值运算

C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算 D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或) 18.逻辑运算符的运算对象的数据类型 。

A)只能是0或1 B)只能是.T.或.F. C)只能是整型或字符型 D)任何类型的数据 19. 以下程序的运行结果是 。 main( ) {

int c,x,y; x=1; y=1; c=0;

c=x++||y++;

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

A)110 B)211 C)011 D)001

20. 以下程序的运行结果是 。 main( ) {

int c,x,y; x=0; y=0; c=0;

c=x++&&y++;

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

A)100 B)211 C)011 D)001 21.判断字符型变量ch为大写字母的表达式是 。 A)?A?<=ch<=?Z? B)(ch>=?A?)&(ch<=?Z?) C)(ch>=?A?)&&(ch<=?Z?) D)(ch>=?A?)AND(ch<=?Z?) 22.判断字符型变量ch为小写字母的表达式是 。 A)?a?<=ch<=?z? B)(ch>=a)&&(ch<=z) C)(ch>=?a?)||(ch<=?z?) D)(ch>=?a?)&&(ch<=?z?) 23.以下if语句书写正确的是 。 A)if(x=0;) B)if(x>0)

printf(”%f”,x); {x=x+1; printf(”%f”,x);} else printf(”%f”,-x); else printf(”%f”,-x); C)if(x>0); D)if(x>0)

{x=x+1; printf(”%f”,x);} {x=x+1; printf(”%f”,x) } else printf(”%f”,-x); else printf(”%f”,-x); 24.分析以下程序: main( )

{ int x=5,a=0,b=0;

if(x=a+b) printf(“** **\\n”); else printf(“## ##\\n”); 以上程序 。

A)有语法错,不能通过编译 B)通过编译,但不能连接 C)输出** ** D)输出## ## 25. 写出下面程序的执行结果 。 main( )

{int x,y=1;

if(y!=0) x=5; printf(“%d\\t”,x); if(y= =0) x=3; else x=5;

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

A)1 3 B)1 5 C)5 3 D)5 5 26. 若有以下变量定义: float x; int a,b;

则正确的switch语句是 。 A)switch(x)

{ case 1.0:printf(\case 2.0:printf(\}

B)switch(x) { case 1,2:printf(\case 3:printf(\}

C)switch(a+b)

{ case 1:printf(\case 2*a:printf(\}

D)switch(a+b)

{ case 1:printf(\case 1+2:printf(\}

27. 以下关于运算符优先顺序的描述正确的是 。 A)关系运算符<算术运算符<赋值运算符<逻辑运算符 B)逻辑运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑运算符 28. 能正确表示a>=10或a<=0的关系表达式是 。

A)a>=10 or a<=0 B)a>=10 | a<=0 C)a>=10 && a<=0 D)a>=10 | | a<=0 29. 以下不正确的if 语句形式是 。 A)if ( x > y && x != y ) ; B)if ( x = = y ) x + = y ;

C)if ( x != y ) scanf ( “%d”, &x) else scanf ( “%d”, &y); D)if ( x < y ) { x++; y++;}

30. 能表示整数x符合下面两个条件的语句是 。

(1)“能被4整除,但不能被100整除”.(2)能被4整除,又能被400整除. A)(x%4==0&&x0!=0)||x@0==0 B)(x%4==0||x0!=0)&&x@0==0 C)(x%4==0&&x@0!=0)||x0==0 D)(x0==0||x%4!=0)&&x@0==0

31. 设有如下定义:char ch=?z?,则执行下面语句 后变量ch是值为: 。

ch=(?A?<=ch&&ch<=?Z?)?(ch+32):ch

A)A B)a C)Z D)z

32. 若I为整型变量,则下列程序段的运行结果为 。 I=322;

if(I%2==0) printf(“#####”) else printf(“*****”);

A)##### B)#####*****

C)***** D)有语法错误,无法输出结果

33. 已知 int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为: 。 if (x>y||xz) z=x; x=y; y=z;

A)x=50, y=80, z=80 B)x=50, y=30, z=30 C)x=30, y=50, z=80 D)x=80, y=30, z=50

34. 已知 int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为: 。 if (x>y||xz) { z=x; x=y; y=z; }

A)x=50, y=80, z=80 B)x=50, y=30, z=30 C)x=30, y=50, z=80 D)x=80, y=30, z=50 35. 以下程序的输出结果是 。 main( ) {int x=2,y=-1,z=2;

if (x

A)3 B)2 C)1 D)0 36. 设a、b和c是int型变量,且a=2,b=4,c=6,则下面表达式中值为0的是: A)‘a’+ ?b? B)a<=b

C)a||b+c&&b-c D)!( (a

37. 在C的if语句中,可用作判断的表达式是: 。 A)关系表达式 B)逻辑表达式 C)算术表达式 D)任意表达式

38. 下面能正确表示变量a在区间[0,5]或(6,10)内的表达式为: A)0<=a || a<=5 ||6

39. 为了表示关系x>=y>=z,应使用C语言表达式 。 A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z) 40.下面程序的输出结果是 。 main() {int x=40,y=4,z=4; x=y= =z; printf(“%d”,x); x=x= =(y-z); printf(%d”,x); } A)4 0 B)4 1 C)1 1 D)1 0 41.若x=3,y=z=4,则下列表达式的值分别为 。 (1)(z>=y>=x)?1:0 (2)z>=y&& y>=x

A)0 1 B)1 1 C)0 0 D)1 0

。。

42.若x=3,y=z=4,则下列表达式的值分别为 。 (1)(z>=y>=x)?1:0 (2)y+=z,x*=y

A)0 24 B)1 8 C)0 8 D)1 12 4.2 填空题

1.设x=1,则表达式1

(1)a或b中有一个大于零:__________。

(2)x大于零,并且x小于等于10:__________。 (3)a、b和c同时等于1.5:__________。

(4)p小于a或p小于b或p小于c:__________。 3.写出下列各逻辑表达式的值,设int a=3,b=6,c=8。 (1)a+b>c &&b==c:__________。 (2)a||b+c && bc:__________。 (3)!(a>b)&& ! c||1:__________。

(4)!(x=a)&&(y=b)&& 1:__________。 (5)!(a+b)c && b+c/2:__________。

4.将变量a、b、c中的较大者赋给变量max的条件表达式为__________。 5.下列程序执行后的输出结果是__________。 #include \main( )

{ int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3;

printf(\}

6.以下程序执行后的输出结果是__________。 #include \main( ) { int p,a=5; if(p=a!=0)

printf(\ else

printf(\}

7.以下程序执行后的输出结果是__________。 #include \main( )

{ int a=4,b=3,c=5,t=0; if(a

printf(\

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\}

A.7 B.7 C.7 D.7 8 9 10 7 9 11 13 7 14.以下程序的运行结果是( )。 int a, b; void fun( )

{ a=100; b=200; } main( )

{ int a=5, b=7; fun( );

printf(\%d%d \\n\ }

A.100200 B.57 C.200100 D.75 15.以下程序的运行结果是( )。 int x=3; main( ) { int i;

for(i=1;i

void nore( ) { static int x=1; x*=x+1;

printf(\%d\}

A.3 3 B.2 2 C.2 6 D.2 5 16. 有如下函数调用语句

func(recl,rec2+rec3,(rec4,rec5));

该函数调用语句中,含有的实参个数是( )。 A. 3 B. 4 C. 5 D. 有语法错误 17. 有如下程序

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. 15 C. 14 D. 13 18. 以下关于函数的叙述中正确的是( )  A.每个函数都可以被其它函数调用(包括main函数) B.每个函数都可以被单独编译  C.每个函数都可以单独运行  D.在一个函数内部可以定义另一个函数

19. 在C语言程序中,有关函数的叙述正确的有( )。

A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义和调用均不可以嵌套 D.函数的定义和调用均可以嵌套 20. 以下程序的输出结果是( )。 long fib(int n)

{if (n>2) return(fib(n-1)+fib(n-2)); else return(2); } main()

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

A.2 B.6 C.4 D.8 21. 下列各函数首部定义正确的是( )。 A. void play(var:ineger,var b:integer) B. double play(int a,b) C. float play(int a,int b) D. sub play(a as integer,b as integer) 22. 以下程序运行后的输出结果是( )。 #define N 20 fun(int a[], int n, int m) { int i, j;  for(i=m; i>=n; i--) a[i+1]=a[i]; }

main() { int i, a[N]={1,2,3,4,5,6,7,8,9,10};  fun(a,2,9);  for(i=0; i<5; i++) printf(\ }

A. 10234 B. 12344 C. 12334 D. 12234

23. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。 A. 地址传递 B. 单向值传递

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

24. 设有以下函数: 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(\,\}

A. 7,8,9, B. 7,9,11, C. 7,10,13, D. 7,7,7,

25. 以下函数值的类型是()。 fun ( float x ) { float y; y=3*x-4; return y; }

A. int B. 不确定 C. void D. float 26. 以下函数定义正确的是: 。

A) double fun(int x, int y) B) double fun(int x; int y) C) double fun(int x, int y) ; D) double fun(int x , y)

27.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是:A)地址传递; B)单向值传递;

C)双向值传递; D)由用户指定传递方式

28.以下关于C语言程序中函数的说法正确的是: 。 A)函数的定义可以嵌套,但函数的调用不可以嵌套; B)函数的定义不可以嵌套,但函数的调用可以嵌套; C)函数的定义和调用均不可以嵌套; D)函数的定义和点用都可以嵌套。 29.以下正确的函数形式是: 。

A)double fun(int x,int y) B)fun (int x,y)

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

z=x+y; return z;} z=x+y; return z;} 30.以下说法不正确的是: 。

C 语言规定 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以是任意类型 D)形参应与其对应的实参类型一致

31.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 。A) float型 B) int 型 C)long 型 D)double 型 32.以下错误的描述是 。 函数调用可以

A)出现在执行语句中 B)出现在一个表达式中

C)做为一个函数的实参 D)做为一个函数的形参

33.若用数组名作为函数调用的实参,传递给形参的是 。 A)数组的首地址 B)数组第一个元素的值 C)数组中全部元素的值 D)数组元素的个数 34. 以下不正确的说法为 。

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

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

D)在函数内的复合语句中定义的变量在本函数范围内有效 35. 下面程序的正确运行结果是: 。 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 9 11 D)7 8 9 36. 有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5);

该函数调用语句中,含有的实参个数是 。 A) 3 B) 4 C) 5 D) 有语法错 37. 有如下程序 int runc(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 38. 有以下程序 main()

{ char s[]=\

printf(\}

执行后输出结果是 。

A) 赋初值的字符串有错 B) 6,7 C) 5,6 D) 6,6 39. 以下对C语言函数的有关描述中,正确的是 。

A) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B) C函数既可以嵌套定义又可以递归调用 C) 函数必须有返回值,否则不能使用函数

D) C程序中有调用关系的所有函数必须放在同一个源程序文件中

40. 以下函数值的类型是 。 fun ( float x ) { float y; y= 3*x-4; return y; }

A) int B) 不确定 C) void D) float 41. 下面程序的输出结果是: 。 int m=13;

int fun( int x, int y) { int m=3;

return( x*y-m); } main( )

{int a=7,b=5;

printf(“%d\\n”, fun(a,b)/m); }

A)1 B)2 C)7 D)10 42. 若有说明语句:static int a[3][4]={0}; 则下面叙述正确的是: 。 A)只有a[0][0]元素可得到初值0; B)数组a中每个元素均可得到初值0。

C)数组a中各元素都可得到初值,但值不一定为0; D)此说明语句不正确

43. 以下程序的运行结果是: 。 main( ) { int a=2, i ;

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

{ int b=0,c=3;

b++; c++; return(a+b+c); }

A)7 10 13 B)7 7 7 C)7 9 11 D)7 8 9 6.2 填空题

1.以下程序输出的最后一个值是 。 int ff(int n) { static int f=1; f=f*n; return f; } main( ) { int i;

for(i=1;i<=5;i++) printf(\%4d\}

2.以下函数的功能是求x的y次方,请填空。

double fun( double x, int y) { int i;

double z;

for(i=1, z=x; i

3.以下程序的运行结果是 。 void fun(int x,int y) { x=x+y;y=x?y;x=x?y;

printf(\%d,%d,\main( )

{ int x=2,y=3; fun(x,y);

printf(\%d,%d\\n\}

4.以下函数的功能是计算s=1+1/2!+1/3!+?+1/n!,请填空。 double fun(int n)

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

return s; }

5.以下程序的运行结果是 。 #include int fun(int x, int y) { static int m=0,i=2; i+=m+1; m=i+x+y; return m; } main( )

{ int j=4,m=1,k;

k=fun(j,m); printf(\%d,\ k=fun(j,m); printf(\%d\\n\}

6.以下程序的运行结果是 。 float fun(int x,int y) { return(x+y); } main( )

{ int a=2,b=5,c=8;

printf(\%3.0f\\n\a+c,b),a?c)); }

7.函数pi的功能是根据以下近似公式求值: (?)/6=1+1/(2?2)+1/(3?3)+?+1/(n?n)

现在请你在下面的函数中填空,完成求的功能。 #include \double pi(long n)

{ double s=0.0; long i;

for(i=1;i<=n;i++)s=s+ ; return(sqrt(6*s)); }

8.以下程序的运行结果是 。 void fun(int x, int y, int z)

{ printf(\in:%d,%d,%d\\n\ y=x+5; z=x*y; x=zy;

printf(\end:%d, %d, %d\\n\ } main( )

{ int x=10,y=20,z=30; fun(z,y,x);

printf(\%d,%d,%d\\n\ }

9.以下程序的运行结果是 。 main( ) { int a=5; fun(a);

printf(\ }

fun(int k)

{ if(k>0) fun(k1); printf(\%d\ }

10.以下程序的运行结果是 。 int a=1; fun(int b)

{ static int a=5; a+=b;

printf(\%d\ return(a) ; } main( ) { int d=3;

printf(\%d\\n\ }

11. 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。 int fun( int n) { int m=0, f=1, i; for(i=1; i<=n; i++) { m + = i * f;

f= ; } return m; }

main()

{ printf(\

12. 以下程序运行后的输出结果是 【12】 。 fun(int a)

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

 return(a+b+c);}  main()  { int i,a=5;  for(i=0;i<3;i++) printf(\ %d\ printf(\}

13. 以下程序运行后的输出结果是 【11】 void swap(int x,int y) { int t;

 t=x; x=y; y=t; printf(\ %d \}

main() { int a=3, b=4;  swap(a , b); printf(\ %d\ }

14. 以下函数的功能是:求x的y次方,请填空。 double fun( double x, int y) { int i;

double z;

for(i=1, z=x; i

15. 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部 。要求形参名为b。 main()

{ double s[10]; int n; ┆ ┆

fun(s); ┆ }

16. 函数fun的功能是:使字符串str按逆序存放。(2级) void fun (char str[]) {

char m; int i, j;

for (i=0, j=strlen(str); i< (1) ; i++, j--) { m = str[i];

str[i] = (2) str[j-1] = m; }

printf(\}

17. 以下程序的运行结果是 int a=5; int b=7; main( )

{ int a=4, b=5,c; c=plus (a,b);

printf(“A+B=%d\\n”,c) ; }

plus (int x, int y)

{ int z; z=x+y; return (z);

18. 以下程序的输出结果是 void fun()

{ static int a=0;

a+=2; printf(“%d”,a); }

main() { int cc;

for(cc=1;cc<4;cc++) fun() printf(“\\n”); }

19. 以下程序的输出结果是 #include void f(int c) { int a=0;

static int b=0; a++; b++;

; 。 } 。 。

printf(\}

void main() { int i;

for (i=1; i<=2; i++) f( i ); }

20. 以下程序的输出结果是 。 #include void increment(void); void main(void) {

increment(); increment(); }

void increment(void) {

static int x = 8; x ++;

printf(\}

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(\}

22. 下面程序的运行结果是: func( int a)

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

return(a+b+c);} main( )

{ int a=2,i; for(i=0;i<3;i++)

printf(“%d”,func(a)); }

第7章

。。

7.1 单选题

1.以下说法中正确的是( )。

A.#define和printf都是C语言语句 B.#define是C语言语句,而printf不是 C.printf是C语言语句,但#define不是 D.#define和printf都不是C语言语句

2.以下程序中的for循环执行的次数是( )。

#define N 2

#define M N+1

#define NUM 2*M+1 main( ) { int i;

for(i=1;i<=NUM;i++)printf(\%d\\n\}

A.5 B.6 C.7 3.设有以下宏定义:

#define N 3

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

则执行语句:“z=2 * (N+Y(5+1));”后,z的值为( A.出错 B.42 C.48 4.以下程序的输出结果是( )。

#define f(x) x*x

main( )

{ int a=6, b=2,c; c=f(a)/f(b) ;

printf(\}

A.9 B.6 C.36 5.下列程序执行后的输出结果是( )。

#define MA(x) x* (x?1) main( )

{ int a=1,b=2; printf(\ A.6 B.8

C.10 6.以下程序的输出结果是( )。

#define SQR(x) x*x

main( )

{ int a=16, k=2, m=1;

a/=SQR(k+m)/SQR(k+m); printf(\}

A.16 B.2 C.9

7.以下程序的输出结果是( )。

D.8

。 D.54

D.18

D.12

D.1

#define M(x,y,z) x*y+z main( )

{ int a=1,b=2, c=3;

printf(\}

A.19 B.17 8.程序中头文件type1.h的内容是:

#define N 5 #define M1 N*3

以下程序编译后运行的输出结果是( )。

#include \

#define M2 N*2 main( ) { int i;

i=M1+M2;

printf(\} A.10

B.20

C.25

D.30

C.15

D.12

9. 有以下程序:

#define f(x) x*x main( ) { int i;

i=f(4+4)/f(2+2); printf(\ }

执行后的输出结果是( )。

A. 28 B. 22 C. 16 D. 4 10. 以下叙述中正确的是______。

A.预处理命令行必须位于源文件的开头 B.在源文件的一行上可以有多条预处理命令 C.宏名必须用大写字母表示

D.宏替换不占用程序的运行时间

7.2 填空题

1.设有以下宏定义:

#define MYSWAP(z,x,y) {z=x; x=y; y=z;}

以下程序段通过宏调用实现变量a、b内容交换,请填空。

float a=5,b=16,c;

MYSWAP( ,a,b); 2.以下程序的运行结果是 。

#define MAX(x,y) (x)>(y)?(x):(y) main( )

{ int a=2,b=2,c=3,d=3,t; t=MAX(a+b,c+d) *10; printf(\}

3.以下程序的运行结果是 。

#define N 10 #define s(x) x*x #define f(x) (x*x) main() { int i1,i2;

i1=1000/s(N);i2=1000/f(N); printf(\}

4.以下程序的运行结果是 。 #define MCRA(m) 2*m

#define MCRB(n,m) 2*MCRA(n)+m main( )

{ int i=2,j=3;

printf(\ }

5. 以下程序运行后的输出结果是 。  #define S(x) 4*x*x+1

main()

{ int i=6,j=8;

printf(\ }

6. 以下程序运行后的输出结果是 。 # define f(x) (x)*(x)  main()  { int i1, i2;  i1=f(10)/f(5) ; i2=f(6+6)/f(3+3) ;  printf(\  }

第8章

8.1 单选题

1.定义如下变量和数组: int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是( )。 for(i=0;i<3;i++) printf(\%d\i]);

A.1 5 9 B.1 4 7 C.3 5 7 2.执行下面的程序段后,变量k中的值为( )。 int k=3, s[2];

.3 6 9 D

s[0]=k; k=s[1] *10; A.不定值 B.33 C.30 D.10 3.以下程序的输出结果是( )。 #include \main( ) {

int n[5]={0},i,k=2;

for(i=0;i

A.不确定的值 B.2 C.1 D.0 4.以下程序的输出结果是( )。 #include \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\}

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

5.以下程序段中,不能正确赋值为字符串(编译时系统会提示错误)的是( A.char s[10]=\ B.char s[ ]=\ C.char s[10]; s=\ D.char s[10]; strcpy(s,\6.以下程序执行后的输出结果是( )。 main( )

{ char a[]=\ printf(\%d%d\\n\}

A.7 7 B.8 8 C.8 10 D.10 10 7.给出以下定义: char x[ ]=\

char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。 A.数组x和数组y等价 B.数组x和数组y的长度相同

C.数组x的长度大于数组y的长度 D.数组x的长度小于数组y的长度8.函数调用“strcat(strcpy(str1,str2),str3)”的功能是( )。 A.将串str1复制到串str2中后再连接到串str3之后 B.将串str1连接到串str2之后再复制到串str3之后

C.将串str2连接到串str1之后再将串str1复制到串str3中 D.将串str2复制到串str1中后再将串str3连接到串str1之后 9.当执行下面的程序且输入ABC时,输出的结果是( )。 #include #include

。 )

main( )

{ char ss[10]=\gets(ss); printf(\%s\\n\}

A.ABC B.ABC9 C.123456ABC D.ABC456789 10.以下程序执行后的输出结果是( )。 #include \main( )

{ char ch[7]={\ int i,s=0;

for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf(\ }

A.2ba56 B.6 C.6521 11.运行下面的程序,如果从键盘上输入: ab<回车> c <回车> def<回车>

则输出结果为( )。 #include #define N 6 main( )

{ char c[N]; int i=0;

for( ;i

for( i=0;i

A.a B.a C.ab b b c c c d d d e f

12.以下程序运行的输出结果是( )。 #include \main( )

{ char ch[2][5]={\ int i,j,s=0;

for(i=0;i<2;i++) for(j=0;j<1;j++)

s=10*s+ch[i][j]?'0'; printf(\%d\\n\ }

D.62 D.abcdef

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

Top