您的当前位置:首页正文

计算机二级c语言选择题库(带答案)

来源:爱站旅游
导读计算机二级c语言选择题库(带答案)


二级C语言相关考点

1、以下选项中,能用作数据常量的是________。(标准答案: C) (

A) o115 ( B) 0118 ( C) 115L ( D) 1。5e1.5 2、下列叙述中错误的是_______。(标准答案: A) (

A)一个C语言程序只能实现一种算法 ( B)一个C函数可以单独作为一个C程序文件存在 ( C) C程序可以由一个或多个函数组成 ( D) C程序可以由多个程序文件组成 3、设变量已正确定义并赋值,以下正确的表达式是_______。(标准答案: B) (

A) int(15.8%5) ( B) x=y+z+5,++y ( C) x=25%5.0 ( D) x=y*5=x+z 4、以下叙述中错误的是_____________。(标准答案: A)

( A) C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 (

B)C语言源程序经编译后生成后缀为.obj的目标程序

( C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 (

D) C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 5、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是___________。(标准答案: D) (

A)大写字母( B)下划线 ( C)数字字符 ( D)连接符 6、以下选项中,合法的一组C语言数值常量是__________。(标准答案: D) (

A) 0x8A 10,000 3.e5 ( B) .177 4e1.5 0abc ( C) 028 。5e—3 -0xf ( D) 12. 0Xa23 4。5e0

7、以下选项中不合法的标识符是__________。(标准答案: C) (

A) print ( B) FOR ( C) &&a ( D) _00

8、若有定义: double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是 (

A) i=(a+k)〈=(i+k); ( B) a=a++,i++; ( C) i=a%11; ( D) i=!a; 标准答案: C

11、设有定义: int x=2;,以下表达式中,值不为6的是 (

A) x*=(1+x) ( B) x*=x+1 ( C) x++,2*x ( D) 2*x, x+=2 标准答案: D 12、有以下程序 #include { 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,2,1 ( C) 2,3,2 ( D) 2,3,1 标准答案: D

13、以下叙述中错误的是 (

A)使用三种基本结构构成的程序只能解决简单问题 ( B) C语言是一种结构化程序设计语言

( C)结构化程序由顺序、分支、循环三种基本结构组成 ( D)结构化程序设计提倡模块化的设计方法 标准答案: A

14、以下选项中,能用作用户标识符的是

( A) 8_8 ( B) unsigned ( C) _0_ ( D) void 标准答案: C

15、 C源程序中不能表示的数制是 (

A)二进制 ( B)十六进制 ( C)十进制 ( D)八进制 标准答案: A

16、若有定义语句: int x=10; ,则表达式x-=x+x的值为 - -2— (

A) 0 ( B) 10 ( C) —20 ( D) —10 标准答案: D

17、以下选项中不合法的标识符是 (

A) &a ( B) print ( C)_00 ( D) FOR 标准答案: A

18、以下关于结构化程序设计的叙述中正确的是 (

A) 一个结构化程序必须同时由顺序、分支、循环三种结构组成 (

B) 有三种基本结构构成的程序只能解决小规模的问题 ( C) 在 C语言中,程序的模块化是利用函数实现的 (

D) 结构化程序使用 goto语句会很便捷 标准答案: C

19、对于一个正常运行的 C程序,以下叙述中正确的是 (

A) 程序的执行总是从 main函数开始,在程序的最后一个函数中结束 (

B) 程序的执行总是从程序的第一个函数开始,在 main函数结束 ( C) 程序的执行总是从 main函数开始

(

D) 程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 标准答案: C

20、以下选项中能表示合法常量的是 (

A) 1。5E2。0 ( B) “\\007\" ( C) 1, 200 ( D) ‘\\ ’ 标准答案: B

21、以下定义语句中正确的是 (

A) float a=1, *b=&a, *c=&b; ( B) int a=b=0;

( C) double a=0。0;b=1.1; ( D) charA=65+1,b=’b’; 标准答案: D

22、若变量 x、 y已正确定义并赋值,以下符合 C语言语法的表达式是 (

A) double(x)/10 ( B) x=x+10=x+y ( C) x+1=y ( D) ++x,y=x—— 标准答案: D

23、计算机能直接执行的程序是 (

A) 可执行程序 ( B) 目标程序 ( C) 源程序 ( D) 汇编程序 标准答案: A

24、以下叙述中正确的是 (

A) C语言规定必须用main作为主函数名,程序将从此开始执行 (

B) C语言程序将从源程序中第一个函数开始执行

( C) main的各种大小写拼写形式都可以作为主函数名,如MAIN, Main等 (

D) 可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 标准答案: A

25、以下选项中可用作 C程序合法实数的是 (

A) E9 ( B) 9。12E ( C) 3.0e1。2 ( D) .1e0 标准答案: D

26、下列定义变量的语句中错误的是 (

A) float US$; ( B) double int_; ( C) char For; ( D) int _int; 标准答案: A

27、表达式: (int)((double)9/2)-9%2的值是 (

A) 5 ( B) 4 ( C) 0 ( D) 3 标准答案: D

28、以下叙述中错误的是 (

A) 算法正确的程序对于相同的输入一定有相同的结果 ( B) 算法正确的程序可以有零个输

( C)算法正确的程序可以有零个输出 ( D)算法正确的程序最终一定会结束 - —3— 标准答案: C

29、以下叙述中正确的是 (

A) C语言程序中的注释必须与语句写在同一行 ( B) 简单C语句必须以分号结束 ( C) C语句必须在一行内写完 ( D) C程序中的每一行只能写一条语句 标准答案: B

30、以下选项中关于C语言常量的叙述错误的是 (

A) 经常被使用的变量可以定义成常量 ( B) 常量分为整型常量、实型常量、字符常量和字符串常量

( C) 所谓常量,是指在程序运行过程中,其值不能被改变的量 ( D) 常量可分为数值型常量和非数值型常量 标准答案: A

31、以下选项中,不合法的 C语言用户标示符是 (

A) AaBc ( B) a_b ( C) _1 ( D) a—-b 标准答案: D

32、若变量均已正确定义并赋值,以下合法的C语言赋值语句是 (

A) x=y==5; ( B) x=5=4+1; ( C) x+n=i; ( D) x=n%2。5; 标准答案: A

33、以下选项中关于程序模块化的叙述错误的是 (

A) 把程序分成若干相对独立的模块,可便于编码和测试 (

B) 可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序 ( C)把采用分成若干相对独立、功能单一的模块,可便于重复使用这些模块 (

D) 可采用自顶向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 标准答案: D

34、以下叙述中正确的是 (

A) C程序中的注释只能出现在程序的开始位置和语句的后面 (

B) C程序书写格式严格,要求一行内只能写一个语句 ( C) 用C语言编写的程序只能放在一个程序文件中 (

D) C程序书写格式自由,一个语句可以写在多行上 标准答案: D

35、以下不合法的数值常量是 (

A) 1e1 ( B) 0xabcd ( C) 8.0E0.5 ( D) 011

标准答案: C

36、以下关于C语言数据类型使用的叙述中错误的是 (

A) 若只处理“真”和“假”两种逻辑值,应使用逻辑类型 (

B) 若要保存带有多位小数的数据,可使用双精度类型 ( C) 整数类型表示的自然数是准确无误差的 (

D) 若要处理“人员信息\"等含有不同类型的相关数据,应自定义结构体类型 标准答案: A 37、设有定义 intk=0;

以下选项的四个表达式中与其他三个表达式的值不相同的是 (

A) ++k ( B) k++ ( C) k+1 ( D) k+=1 标准答案: B

38、以下叙述中错误的是 (

A) C程序在运行过程中所有计算都以二进制方式进行( B) C程序在运行过程中所有计算都以十进制方式进行

( C) C程序中字符变量存放的是字符的ASCII值 ( D) 所有C程序都需要编译链接无误后才能运行 标准答案: B

39、以下关于C语言的叙述中正确的是 (

A) C语言中的注释不可以夹在变量名或关键字的中间 (

B) C语言中的变量可以再使用之前的任何位置定义

( C) 在C语言算数表达式的书写中,运算符两侧的运算数类型必须一致 - —4— (

D) C语言的数值常量中夹带空格不影响常量值的正确表示 标准答案: A

40、以下不合法的字符常量是 (

A) ‘\\018’ ( B) ‘\\\"’ ( C) ‘\\\\’ ( D) ‘\\xcc’ 标准答案: A

41、以下选项中正确的定义语句是 (

A) double a=7,b=7; ( B) doublea;b; ( C) double,a,b; ( D) double a=b=7; 标准答案: A

42、若有定义语句 inta=3,b=2,c=1;

以下选项中错误的赋值表达式是 (

A) a=(b=4)=3; ( B) a=1+(b=c=4); ( C) a=(b=4)+c; ( D) a=b=c+1; 标准答案: A

43、下列叙述中错误的是 (

A) 一个C语言程序只能实现一种算法 ( B) 一个C函数可以单独作为一个C程序文件存在

( C) C程序可以由一个或多个函数组成 ( D) C程序可以由多个程序文件组成 标准答案: A

44、 C语言源程序名的后缀是 (

A) 。c ( B) .cp ( C) 。obj ( D) 。exe 标准答案: A

45、以下选项中不能用作C程序合法常量的是 (

A) 123 ( B) ‘\\123’ ( C) “\\x7D” ( D) 1,234 标准答案: D

46、表达式a+=a—=a=9的值是

( A) 0 ( B) -9 ( C) 18 ( D) 9 标准答案: A

47、若有定义语句: intx=12, y=8, z; 在其后执行语句 Z=0。9+x/y; 则

z的值为 (

A) 2.4 ( B) 2 ( C) 1.9 ( D) 1 标准答案: D

48、以下选项中合法的标识符是 (

A) 1—1 ( B) 1__ ( C) 1_1 ( D) _11 标准答案: D

49、表达式3。6-5/2+1。2+5%2的值是 ( A) 4。8 ( B) 4.3 ( C) 3。8 ( D) 3.3 标准答案: C 50、有以下定义: inta; longb; doublex,y;

则以下选项中正确的表达式是 (

A) a=x<>y ( B) a%(int)(x-y) ( C) y=x+y=x 标准答案: B 51、有以下程序

D) (a*y)%b (#include Main() - -5—

{inta=0,b=0; /*给a赋值 b=20; /*给b赋值*/

printf(“a+b=%d\\n”,a+b); /*输出计算结果*/ }

程序运行后的输出结果 (

A) 出错 ( B) a+b=0 ( C) a+b=30 ( D) a+b=10 标准答案: D

52、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令,关于转换以下说法错误的是 (

A) 一条C语句可能会被转换成零条机器指令 (

B) 某种类型和格式的C语句被转换成机器指令的条数是固定的 ( C) 一条C语句可能会被转换成多条机器指令 (

D) 一条C语句对应转换成一条机器指令 标准答案: D

53、关于C语言的符号常量,以下叙述中正确的是 (

A) 符号常量在整个程序中其中都不会被重新定义 (

B) 符号常量的符号名是标识符,但必须大写 ( C) 符号常量的符号名必须是常量 (

D) 符号常量是指在程序中通过宏定义用一个符号名来代表一个常量 标准答案: D

54、若有以下程序 #include main() {

intb=10,a=—11; a%=b%=4;

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

则程序的输出结果是 (

A) 12 ( B) -12 ( C) 1-2 ( D) —1—2 标准答案: B

55、若有以下程序 #include{

inta=0,b=0, c=0;

c=(a—=++a),(a+=b,b+=4); printf(“%d,%d,%d\\n”,a,b,c); }

则程序的输出结果是 (

A) 0,4,0 ( B) 0,4,4 ( C) 1,4,4 ( D) 1,4,1 标准答案: A 56、若有以下程序 #include〈stdio。h> main() {

inta=0,b=0,c=0,d; c=(a+=b,,b+=a); /*第4行*/ d=c;; /*第5行*/ ; /*第6行*/ — -6—

printf(“%d,%d,%d\\n\,b,c); /*第7行*/ }

编译时出现错误,你认为出错的是 (

A) 第6行 ( B)第5行 ( C)第7行 ( D)第4行 标准答案: D

57、关于算法,以下叙述中错误的是 (

A) 一个算法对于某个输入的循环次数是可以事先估计出来的 (

B) 同一个算法对于相同的输入必须得出相同的结果 ( C) 某个算法可能会没有输入 (

D) 任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕 标准答案: D

58、关于C语言的变量,以下叙述中错误的是 ( A) 由三条下划线构成的符号名是合法的变量名 (

B) 所谓变量是指在程序运行过程中其值可以被改变的量( C) 程序中用到的所有变量都必须先定义后才能使用 (

D) 变量所占的存储单元地址可以随时改变 标准答案: D

59、若有以下程序 #include〈stdio.h> main() {

inta=-11,b=10; a/=b/=4;

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

A) 4 -3 ( B) 5 -3 ( C) -1—2 ( D) 5—2 标准答案: D

60、 #include〈stdio.h> main() {

inta=0,b=0,c=0;

c=(a+=++b,b+=4);

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

则程序的输出结果是 (

A) 1,5,1 ( B) —1,4,-1 ( C) -1,4,4 ( D) 1,5,5 标准答案: D

61、以下选项中不属于C语言标识符的是 (

A) 关键字 ( B) 预定义标识符 ( C) 用户标识符 ( D) 常量 标准答案: D

62、以下选项中不属于C语言程序运算符的是 (

A) && ( B) () ( C) sizeof ( D) <> 标准答案: D

63、若变量已正确定义并赋值,以下不能构成C语句的选项是 (

A) A=a+b; ( B) B++; ( C) A?a:b; ( D) a=a+b 标准答案: D

64、若有以下程序段 doublex=5。16894;

printf(“%f\\n“,(int)(x*1000+0.5)/(double)1000); 则程序段的输出结果是 (

A) 5.169000 ( B) 5.175000 ( C) 5.170000 ( D) 5.168000 — -7— 标准答案: A

65、以下不能用于描述算法的是 (

A) 文字叙述 ( B) 伪代码和流程图 ( C) 程序语句 ( D) E—R图 标准答案: D

66、以下叙述中合法的实型常量是 (

A) 2.0*10 ( B) .914 ( C) 0 ( D) 3.13e-2.1

标准答案: B

67、以下叙述中正确的是 (

A) 若有 int 4,b=9;执行了 a=b;b=a;之后, a的值为 9, b的值为 4 (

B) 在赋值表达式中,赋值号的右边可以是变量,也可以是表达式

( C) 若有 int 4,b=9;执行了 a=b后, a的值已由原值改变为 b的值, b的值变为 0 (

D) a是实型变量, a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数 标准答案: B

68、以下选项中合法的常量是 (

A) sizeof ( B) A% ( C) 5a ( D) _10_ 标准答案: D

69、不能正确表示数学式 的表达式是 (

A) a*b/c ( B) a*(b/c) ( C) a/c*b ( D) a/b*c 标准答案: D

70、 #include 〈stdio。h〉 main() {

int a=3;

printf(“%d\\n”,a+=a-=a*a); }

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

A) 9 ( B) —12 ( C) 0 ( D) 3 标准答案: B

71、以下叙述中正确的是 (

A) 结构化程序的三种基本结构是循环结构、选择结构、顺序结构 (

B) N-S流程图只能描述简单的顺序结构的程序

( C) 计算机可以直接处理 C语言程序,不必进行任何转换 (

D) 程序的算法只能使用流程图来描述 标准答案: A

71、以下叙述中正确的是 (

A) 书写源程序时,必须注意缩进格式,否则程序会有编译错误 ( B) 程序的主函数名除了 main外,也可以使用Main或_main ( C) 程序可以包含多个主函数,但总是从第一个主函数处开始执行 (

D) 在 C程序中,模块化主要是通过函数来实现的

标准答案: D

72、 C语言中 double类型数据占字节数为 (

A) 12 ( B) 8 ( C) 4 ( D) 16 标准答案: B

73、以下叙述中正确的是

( A) 用户自定义标识符必须“见名知意”,如果随意定义,则会出编译错误 (

B) 语言中的关键字不能作变量名,但可以作为函数名

( C) 标识符的长度不能任意长,最多只能包含 16个字符 (

D) 标识符总是有字母、数字和下划线组成,且第一个字符不得是数字 — -8— 标准答案: D

74、以下叙述中正确的是 (

A) 空语句就是指程序中的空行 (

B) 花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的 ( C) 复合语句在语法上包含多条语句,其中不能定义局部变量 (

D) 当用scanf从键盘输入数据时,每行数据在没有按下回车键( Enter键)前,可以任意修改 标准答案: D

75、以下叙述中正确的是 (

A) 程序必须包含所有三种基本结构才能成为一种算法 (

B) 如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达 ( C)只有简单算法才能在有限的操作步骤之后结束 (

D) 我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令 标准答案: D

76、以下叙述中正确的是 (

A) 在C语言程序设计中,所有函数必须保存在一个源文件中 (

B) 结构化程序必须包含所有的三种基本结构,缺一不可 ( C) 只要包含了三种基本结构的算法就是结构化程序 (

D) 在算法设计时,可以把复杂任务分解成一些简单的子任务 标准答案: D

77、以下叙述中正确的是 (

A) 预定义的标识符是C语言关键字的一种,不能另作他用 (

B) 只能在函数体内定义函数,其他地方不允许定义变量

( C) 常量的类型不能从字面形式上区分,需要根据类型名来决定 (

D) 整型常量和实型常量都是数值型常量 标准答案: D

78、以下叙述中正确的是 (

A) 八进制数的开头要使用英文字母o,否则不能与十进制区分开 (

B) 英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符 ( C) 在C程序中的八进制和十进制,可以是否点数 (

D) 整型变量可以分为int型、 short型、 long型、 unsigned型四种 标准答案: D

79、以下叙述中正确的是 (

A) C语言程序总是从main函数开始执行 ( B) C语言程序所调用的函数必须放在main函数的前面

( C) C语言程序中main函数必须放在程序开始位置( D) C语言程序总是从最前面的函数开始执行

标准答案: A

80、 C语言程序中,运算对象必须是整型数的运算符是 (

A) % ( B) / ( C) * ( D) && 标准答案: A

81、 #include〈stdio.h> main() {

intsum,pad,pAd; sum=pad=5;

pAd=++sum,pAd++,++pad; printf(“%d\\n”,pad); }

程序的输出结果是 (

A) 7 ( B) 5 ( C) 8 ( D) 6 标准答案: D — -9—

82、以下四个程序中,完全正确的是 (

A) #include 〈stdio。h> main();

{/*/ programming /*/

printf(\"programming!\\n”); } (

B) #include 〈stdio.h> main()

{/* programming */

printf(\"programming!\\n”); } ( C) #include 〈stdio.h〉 main()

{/*/* programming */*/

printf(”programming!\\n”); } (

D) include 〈stdio。h> main()

{/* programming */

printf(”programming!\\n”); } 标准答案: B 83、有以下程序 #include 〈stdio。h〉 main()

{ int a=1,b=0;

printf(\"%d,\); printf(\"%d\\n\*b); }

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

A) 1,0 ( B) 0,0 ( C) 1,2 ( D) 3,2 标准答案: C 84、有以下程序 #include 〈stdio.h> main()

{ char a,b,c,d;

scanf(\"%c%c\",&a, &b); c=getchar(); d=getchar();

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

当执行程序时,按下列方式输入数据(从第 1列开始,个字符) 12 34〈CR>

则输出结果是 (

A) 12 (

B) 12 3

( C) 12

D) 1234 标准答案: B 85、有以下程序 #include 〈stdio.h〉 main()

{ char c1,c2; c1='A’+'8’-’4’; c2=’A'+’8’-’5’;

printf( ”%c,%d\\n\",c1,c2); }

已知字母 A的ASCII 码为65,程序运行后的输出结果是 (

A)输出无定值 ( B) E,D ( C) D,69 ( D) E,68 10 标准答案: D 86、有以下程序 #include 〈stdio。h〉 main()

{ int a1,a2; charc1,c2;

scanf(”%d%c%d%c”,&a1,&c1,&a2,&c2); printf(\"%d,%c,%d,%c”,a1,c1,a2,c2); }

若想通过键盘输入, 使得a1的值为12, a2的值为34, c1的值为字符a, c2的值为字符b, 程序输出结果是:

12,a,34,b 则正确的输入格式是 (以下ㄩ代表空格, 代表回车) (

A) 12a34b〈CR〉 ( B) 12ㄩa34ㄩ b ( C) 12,a,34,b〈CR〉 ( D) 12ㄩaㄩ34 ㄩ b〈CR> 标准答案: A

87、若变量已正确定义为int型,要通过语句 Scanf(“%d,%d,%d”,&a,&b,&c);

给a赋值1、给b赋值2、给c赋值3,以下输入形式中语法错误的是(注: □代表一个空格符) (

A) □□□1,2,3〈回车〉 ( B) 1□2□3<回车>

( C) 1,2,3<回车〉 ( D) 1,□□□2,□□□3〈回车> 标准答案: B

88、设变量均已正确定义,若通过

scanf(\"%d%c%d%c”,&a1,&c1,&a2,&c2);

语句为变量a1和a2赋数值10和20,为变量c和c2赋字符X和Y, 以下所示的输入形式正确的是 (

A) 10□X<回车〉 20□Y<回车〉

( B) 10□X□20□Y〈回车〉 ( C) 10X<回车> 20Y<回车〉

(D) 10□X20□Y〈回车> 标准答案: C 89、设有定义 inta; floatb; 执行

scanf(“%2d%f\",&a,&b); 语句时,若从键盘输入 876 543.0<回车〉 则a和b的值分别是

( A) 76和543。0 ( B) 87和543。0 ( C) 876和543。0 ( D) 87和6。0 标准答案: D

90、有如下程序段: intx=12;

doubley=3.141593;

printf(“%d%8。6f\",x,y) 其输出结果是

(A) 123。141593 ( B) 123.141593 ( C) 123。1415930 ( D) 12,3.141593 标准答案: A 91、若有定义: inta,b; 11 通过语句

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

能把整数3赋值给变量a, 5赋值给变量b的输入数据是 (A) 35 ( B) 3 5 ( C) 3,5 ( D) 3; 5 标准答案: D 92、阅读以下程序 #include 〈stdio。h〉 main() { int case; float printF;

printf(“请输入 2个数: ”);

scanf(“%d %f”,&case,&printF); printf(“%d %f\\n”,case,printF); }

该程序在编译时产生错误,其出错原因是

( A) 定义语句出错, case是关键字,不能用作用户自定义标识符 (B) 定义语句出错, scanf不能作为输入函数使用 ( C) 定义语句出错, printf不能输出擦色的值

(D) 定义语句出错, printF不能用作用户自定义标识符 标准答案: A 93、若有定义

int a; float b; double c;

程序运行时输入: 3

4 5〈回车>

能把3输入给变量a、 4输入给变量b、 5输入给变量c的语句是 (A) scanf(“%d%f%f”,&a,&b,&c); (B) scanf(“%d%lf%lf”,&a,&b,&c);

( C) scanf(“%lf%lf%lf\",&a,&b,&c); (D) scanf(“%d%f%lf\&b,&c); 标准答案: D 94、设有定义 double a,b,c;

若要求通过分别给 a、 b、 c输入1、 2、 3, 输入形式如下( 注: 此处□代表一个空格) 则能进行正确输入的语句 是

( A) scanf(“%f%f%f”,&a,&b, &c); ( B) scanf(“%lf%lf%lf\",a,b,c);

( C) scanf(“%5.11lf%5.11lf%5.11lf”,&a,&b,&c); ( D) scanf(“%lf%lf%lf\",&a,&b,&c);

标准答案: D

95、以下叙述中正确的是 (

A) scanf和printf是 C语言提供的输入和输出语句 (

B) 由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定 ( C) 由 printf输出的数据都隐含左对齐 (

D) 赋值语句是一种执行语句,必须放在函数的可执行部分 标准答案: D

96、以下叙述中正确的是 (

A) 在使用 scanf函数输入整型或实数时,输入数据之间只能用空格来分隔 12 (

B) 在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上 ( C) 使用 printf函数无法输入百分号% (

D) 在 printf函数中,各个输出项只能是变量 标准答案: B

97、以下叙述中正确的是 (

A) 复合语句也被称为语句块,它至少要包含两条语句 (

B) 在scanf函数的格式中,必须有与输出项一一对应的格式转换说明

( C) scanf函数中的字符串,是提示程序员的。输入数据时不必管它 ( D) 只能在 printf函数中指定输入数据的宽度,而不能在 scanf函数中指定输入数据占的宽度 标准答案: B 13 14 15 16

116、 若有定义 intx, y; 并已正确给变量赋值, 则以下选项中与表达式( x-y) ?( x++):( y++) 中条件表达式 ( x-y)等价的是 A)( x—y〈0) ||x—y〉0) B) (x—y==0) C) ( x-y〈0) D)(x-y〉0)

标准答案: A 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 200、以下叙述中正确的是

A) if 语句只能嵌套一层 B)不能在else 子句中在嵌套if 语句

C)改变if—else 语句的缩进格式,会改变程序的执行流程 D) if 子句和else 子句中可以是任意合法的C 语句 标准答案: D

201、以下叙述中正确的是

A)对于“for(表达式1;表达式2;表达式3)循环体\",只在个别情况下才能换成while B))对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2 的值,以便决定 C)如果根据算法血药使用无限循环(即通常说的“死循环”),则只能使用while 语句 D)只要适当地修改代码,就可以将do—while 与while 相互转换 标准答案: D

202、以下叙述中正确的是

A)在while 语句和do-while 语句中无法使用continue 语句

B)当break 出现在循环体中的switch 语句体内时,其作用是跳出该switch 语句体,并终止循环

C) continue 语句的作用是:在执行完本次循环体中剩余语句后,终止循环 D)只能在循环体内和switch 语句体内使用break 语句 标准答案: D

203、以下叙述中正确的是

A) ‘\\”'是非法的 B) '\\0’表示字符0 C) ”a”表示一个字符常量 D)表达式: ’a’>’b’的结果是“假” 39 标准答案: D

204、以下叙述中正确的是

A)字符常量可以参与任何整数运算 B)转义字符用@符号开头

C)字符变量在定义时不能赋初值 D)同一英文字符的大写和小写形式代表的是同一字符常量 标准答案: A

205、若有定义语句: char a=’\\82’;则变量a

A)包含3个字符 B)包含2个字符 C)包含1个字符 D)说明不合法 标准答案: D 206、有以下程序 #include { char c1=’A', c2='Y’;

printf(\"%d, %d\\n”, c1, c2); }

程序输出结果是

A) A, Y B) 65,89 C) 65,90 D) 输出格式不合法, 输出出 错信息

标准答案: B

207、若变量已正确定义

for(x=0,y=0;(y!=99&& x〈4);x++) 则以上for循环 A)执行无限次 B)执行次数不定 C)执行3次 D)执行4次 标准答案: D

208、对于while(!E)s; 若要执行循环体s,则E的取值应为: A) E等于0 B) E等于1 C) E不等于1 D) E不等于0 标准答案: A

209、有以下程序 #include for(x=3;x<6;x++)

printf((x%2)?(“*%d”):(“#%d”), x); printf(“\\n\"); }

程序输出结果是

A) #3*4#5 B)*3#4#5 C)*3*4#5 D)*3#4*5 标准答案: D 210、有以下程序 #include 〈stdio.h> main() { int a,b;

for(a=1,b=1;a<=100;a++) { if(b>=20)break; if(b%3==1){b=b+3; continue;} b=b+5; }

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

程序输出结果是 A)10 B)8 C)7 D)9 标准答案: B

211、 C语言中 char类型数据所占字节数为 A) 3 B) 4 C) 2 D) 1 标准答案: D

212、下列关系表达式中,结果为“假\"的是 A)( 3<4) ==1 B) 3〈=4 C)( 3+4) 〉6 D)( 3! =4) 〉2 标准答案: D

213、若以下选项中的变量 a, b, y均已正确定义并赋值,则语法正确的 switch语句是 A) switch(a*a+b*b)

{ default :break; case 3:y=a+b; break; case 2:y=a—b; break; }

B) switch a*b { case10:y=a+b; default :y=a-b; }

C) switch (a+9) { case a:y=a-b; case b:y=a+b; }

D) switch (a+b)

{ case 1:case 3:y=a+b; break; case 0:case 4:y=a-b; }

标准答案: A 214、有以下程序 #include 〈stdio。h〉 main( )

{ int a= -2,b=0;

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

程序输出结果是

A) 1, 3 B) 1, 2 C) 0, 2 D) 0, 3 标准答案: B

215、设有定义: int x=0, *p; 紧接着的赋值语句正确的是 A) *p=NULL; B) *p=x; C) p=NULL; D) p=x; 标准答案: C

216、下列叙述中正确的是

A)可以对字符串进行关系运算 B)空字符串不占用内存,其内存空间大小是0

C)两个连续的双引号( ””)是合法的字符串常量 D)两个连续的单引号( '’)是合法的字符串常量

标准答案: C 217、有以下程序 #include 〈stdio.h> int f(int x); main()

{int n=1,m; m=f(f(f(n))); printf(”%d\\n”,m); }

intf(int x)

{return x*2; }

程序运行后的输出结果是________。 41 A) 8 B) 2 C) 1 D) 4 标准答案: A

218、下列叙述中错误的是

A)可以给指针变量赋一个整数作为地址值

B)当在程序的开头包含头文件stdio.h时,可以给指针变量赋 NULL C)函数可以返回地址值

D)改变函数形参的值,不会改变对应实参的值 标准答案: A

219、设已有定义: float x;,则以下对指针变量 p进行定义且赋初值的语句中正确的是 A) float *p=1024; B) float p=&x; C) int *p=(float)x; D) float *p=&x; 标准答案: D

220、以下数组定义中错误的是________。

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}}; 标准答案: D

221、有以下程序 void fun( int a[], int n) { int i, t;

for(i=0; i〈n/2; i++) { t=a[i]; a[i]=a[n-1—i]; a[n—1-i]=t; } }

main()

{ int k[10]={ 1,2,3,4,5,6,7,8,9,10},i; fun(k,5);

for(i=2; i<8; i++)printf(\"%d”,k[i]); printf(\"\\n\"); }

程序的运行结果是________.

A) 876543 B) 321678 C) 345678 D) 1098765 标准答案: B

222、有以下程序 #define N 4 void fun(int a[][N], int b[]) { int i;

for (i=0; ifun (x, y);

for (i=0; i程序运行后的输出结果是________。

A) -3,-1,1,3, B) —3,-3,—3,—3, C) —12,—3,0,0, D) 0,1,2,3, 标准答案: A

223、有以下程序 #include 〈stdio.h> intf(int x, int y)

{ if(x!=y) return ((x+y)/2) ; else return (x); 42 }

main()

{ int a=4, b=5, c=6;

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

程序运行后的输出结果是 A) 6 B) 8 C) 3 D) 12 标准答案: A 224、 有以下程序 #include int add(int a, int b){return(a+b);} main()

{ int k, (*f)(), a=5, b=10; f=add; .....。 }

则以下函数调用语句错误是

A) k=(*f)(a, b) B)k=f(a, b) C) k=add(a, b) D)k=*f(a, b) 标准答案: D 225、 有以下程序 main()

{int n,*p=NULL; *p=&&n;

printf(”Inputn:”); scanf(”%d”,&&p); printf(”outputn:\"); printf(\"%d\\n\

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是 A) printf(\"%d\\n\) scanf(”%d”,&p) C) *p=&n; D) int n,*p=NULL; 标准答案: D

226、 下列定义数组的语句中,正确的是 A) #define N 10 int x[N];

B) int x[0。。10]; C) int N=10; int x[N];

D) int x[]; 标准答案: A 227、 有以下程序 #include 〈stdio。h〉 main()

{ int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2)

{case0:switch(a[i]%2)

{case0:a[i]++;break; case1:a[i]--; }break;

case1:a[i]=0; }

for(i=0;i〈4;i++)printf(”%d\]);printf(”\\n”); } - —43—

程序运行后的输出结果是

A) 2 0 5 0 B) 0 3 0 4 C) 3 3 4 4 D) 3 0 4 0 标准答案: D 228、有以下程序 #include 〈stdio.h> main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0; i〈3; i++)

for(j=i;j<=i;j++) t+=b[i][b[j][i]]; printf(”%d\\n”,t); }

程序运行后的输出结果是 A) 3 B) 1 C) 9 D) 4 标准答案: D 229、有以下程序 #include int f(int x, int y){return (y-x)*x ;} main()

{ int a=3, b=4, c=5, d; d=f(f(a, b), f(a, c)); printf(”%d\\n\",d); }

程序运行后的输出结果是 A) 9 B) 7 C) 8 D)10 标准答案: A

230、 若有定义语句: double a, *p=&a ; 以下叙述中错误的是 A) 定义语句中的 * 号是一个说明符 B)定义语句中的 * 号是一个间址运算符

C)定义语句中, *p=&a把变量 a的地址作为初值赋给指针变量 p D)定义语句中的 p只能存放 double类型变量的地址 标准答案: B

231、若有定义语句: double x, y, *px, *py; 执行了 px=&x; py=&y;之后,入语句是

正确的输 A) scanf(”%lf%lf”,x, y); B) scanf(\"%f %f\", x, y);

C) scanf(”%f %f” &x, &y); D) scanf(\"%lf %le\, py); 标准答案: D

232、 以下定义数组的语句中错误的是

A) int num[][4]={1,2,3,4,5,6}; B) int num[][3]={ {1,2},3,4,5,6 }; C) int num[2][4]={ {1,2},{3,4},{5,6} }; D) int num[]={ 1,2,3,4,5,6 }; 标准答案: C 233、 有以下程序 #include t=a; a=b; b=t; } main()

{ int c[10]={1,2,3,4,5,6,7,8,9,0}, i; for (i=0; i<10; i+=2) fun(c[i],c[i+1]);

for (i=0;i〈10; i++) printf(”%d,”, c[i]); — —44- printf(”\\n”); }

程序的运行结果是

A) 2,1,4,3,6,5,8,7,0,9, B) 1,2,3,4,5,6,7,8,9,0,

C) 0,1,2,3,4,5,6,7,8,9, D) 0,9,8,7,6,5,4,3,2,1, 标准答案: B 234、 有以下程序 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]); }

若运行时输入: 24 6<回车>,则输出结果为 A) 2 4 6 B) 2 4 0 C) 2 0 0 D) 2 0 4 标准答案: D 235、 有以下程序 double f(double x) ; main()

{ double a=0; int i ;

for(i=0;i<30;i+=10) a+=f((double)i ); printf(”3.0f\\n\", a); }

double f(double x) { return x*x+1; } 程序的运行结果是

A)500 B)1404 C)401 D)503 标准答案: D

236、若有以下函数首部: int fun(double x[10], int *n) 则下面针对此函数的函数声明语句中正确的是

A) int fun(double x, int *n); B) int fun(double *, int *); C) int fun(double *x, int *n) D) int fun(double, int) 标准答案: B

237、 有以下程序 main()

{ double m=1, n=2, *p=&m, *q=&n, *r; r=p; p=q; q=r;

printf(\"%d, %d, %d, %d\\n”, m, n, *p, *q); }

程序的运行结果是

A) 2,1,2,1 B) 2,1,1,2 C) 1,2,1,2 D) 1,2,2,1 标准答案: D

238、若有以下定义: int x[10], *pt=x;则对数组元素的正确引用是 A) *&x[10] B)*(x+3) C) pt+3 D) *(pt+10) 标准答案: B 239、 有以下程序 main()

{ int i, s=0, t[]={1,2,3,4,5,6,7,8,9}; for(i=0;i<9;i+=2) s+=*(t+i); printf(”%d\\n\", s); } — —45—

程序的运行结果是

A)20 B) 25 C) 36 D) 45 240、有以下程序 #include void fun(int a[ ][N],int b[ ]) {

int i;

for(i=0;imain()

{ int x[ ][M]={{1,2,3},{4},{5,6,7,8},{9,10}}, y[N], i; fun(x, y);

for(i=0;i程序的运行结果是

A)1,4,5,9, B) 1,0,7,0, C) 3,4,8,10 D) 1,2,3,4 标准答案: B

241、关于return语句的叙述中正确的是

A)定义成 void类型的函数中可以带返回值的return语句

B)没有 return语句的自定义函数在执行结束时不能返回到调用处 C)一个自定义函数中可以根据不同情况设置多条 return语句 D)一个自定义函数中必须有一条 return语句 标准答案: C

242、已定义以下函数: int fun(int *p){return *p;} fun函数返回值是

A)一个整数 B)形参 p的地址值 C)形参 p中存放的值 D)不确定的值 标准答案: A

243、以下程序段完全正确的是

A) int k,*p=&k; scanf(“%d\", p); B) int *p; scanf(“%d”, p);

A) int k,*p=&k; *p=&k; scanf(“%d”, p); D) int *p; scanf(“%d”, &p); 标准答案: A

244、设有定义: double a[10], *s=a;以下能够代表数组元素 a[3]的是 A) *s[3] B)( *s) [3] C)*s+3 D)*(s+3) 标准答案: D 245、有以下程序 void f(int *q) { int i=0;

for(; i〈5;i++) (*q)++; }

main()

{ int a[5]={1,2,3,4,5}, i; f(a);

for(i=0;i<5;i++) printf(“%d,\",a[i]); }

程序运行后的输出结果是

A) 2,2,3,4,5, B) 6,2,3,4,5 C) 2,3,4,5,6, D) 1,2,3,4,5, - —46- 标准答案: B 246、有以下程序

int fun(int (*s)[4], int n, int k) { int m, i; m=s[0][k]; for(i=1;im) m=s[i][k]; return m; }

main()

{ int a[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}}; printf(“%d\\n”,fun(a,4.0)); }

程序的运行结果是

A) 4 B) 34 C) 31 D) 32

标准答案: C

247、以下叙述中错误的是

A)用户定义的函数中若没有return语句,则应当定义函数为 void类型 B)函数的 return语句中可以没有表达式 C)用户定义的函数中可以没有 return语句

D)用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值 标准答案: D 248、有以下程序

void fun(char *c, int d) {*c=*c+1; d=d+1;

printf(“%c, %c, ”, *c, d); }

main()

{ char b=’a’, a=’A'; fun(&b, a);

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

程序的运行结果是

A) a,B,B,a B)b,B,b,A C) a,B,a,B D) b, B, B,标准答案: B

249、下列选项中,能正确定义数组的语句是 A) int num[0。。.2008]; B)int num[ ];

C)int N=2008; int num[N]; C)#define N 2008; int num[N];标准答案: D

250、以下函数实现每行8个输出 w所指数组中的数据 void fun(int *w, int n) { int ;

for(i=0;i_________________ printf(“%d\", w[i]); }

printf(“\\n”); - —47— }

在横线处应填入的语句是

A) if(i/8==0)contion; B) if(i%8==0)contion; C) if(i%8==0)printf(“\\n”); C) if(i/8==0)printf(“\\n\"); 标准答案: C 251、有以下程序 void fun(char *c) { while(*c)

{ if(*c>='a’&& *c<=’z’) *c=*c—(‘a'—‘A');

A c++; } }

main()

{ char s[81]; gets(s); fun(s); puts(s); }

当执行程序时从键盘上输入HelloBeijing<回车〉,则程序的输出结果是 A) HELLOBEIJING B) hello beijing C)HelloBeijing D)hEllo Beijing 标准答案: A 252、有以下程序 main() { int a[4][4]={{1,4,3,2},{8,6,5,7},{3,72,5},{4,8,6,1}}; int i,j,k,t;

for(i=0;i〈4;i++) for(j=0;j〈3;j++) for(k=j+1;k〈4;k++) if(a[j][i]>a[k][i]) { t=a[j][i]; a[j][i]=a[k][i]; a[k][i]=t; /*排列排序*/ }

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

程序的运行结果是

A)1,6,2,1, B)4,7,5,2, C) 8,7,3,1, D)1,6,5,7, 标准答案: D

253、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是 A)函数的实参和其对应的形参共占同一存储单元 B) 形参知识形式上的存在,不占用具体存储单元 C)函数的形参和实参分别占用不同的存储单元 D) 同名的实参和形参占同一存储单元 标准答案: C

254、设有以下函数: void fun(int n,char *s){..。.。。} 则下面对函数指针的定义和赋值均正确的是

A) void *pf(); pf=fun; B)void ( *pf) (int, char);pf=&fun; C)void *pf(); *pf=fun; D) viod (*pf)(int , char*); pf=fun; 标准答案: D

255若要求定义具有10个int 型元素的一维数组a,则以下定义语句中错误的是 — -48- A) int a[5+5]; B) #define N 10 int a[N];

B) #define n 5 int a[2*n]; B) int n=10, a[n]; 标准答案: D 256、有以下程序

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) 3 6 9 B) 7 5 1 C) 7 5 3 D) 3 5 7 标准答案: D

A) 0987651234 B) 0987654321 C) 4321098765 D) 5678901234 标准答案: D — -49-

A) 2 B) 4 C) 1 D) 3 标准答案: D

A) 1,4 B) 1,2 C) 2,3 D) 1,3 标准答案: D

262、若有定义语句: int a[2][3], *p[3];则以下语句中正确的是 A) p[0]=&a[1][2]; B) p[1]=&a; C) p=a; D) p[0]=a; 标准答案: A

A) 1,2,3,4,5,6,7,8,9,10, B) 3,4,5,6,7,2,1,8,9,10, — -50- C)19,9,8,7,6,5,4,3,2,1, D) 5,4,3,2,1,6,7,8,9,10, 标准答案: B

A) 11 23 B) 433 2 C) 12 34 D) 234 4 标准答案: B

A) 5.00 B) 0.0 C) 5.21 D) 5 标准答案: A

A) 3,5,5,3 B) 5,3,5,3 C) 5,3,3,5 D) 3,5,3,5 - -51- 标准答案: D

A) 1,2,6,8,10,12,14,16,9,10, B) 1,2,3,4,5,6,7,8,9,10, C) 1,2,3,4,10,12,14,16,9,10, D) 1,2,6,8,10,12,7,8,9,10, 标准答案: D

A) 9 B) 5 C) 61490 D) 61 标准答案: D

272、 若有定义语句: int year=2009, *p=&year; 以下不能使变量year中的值增加至2010的语句是 — -52—

A) ++( *p) B) *p+=1 C)( *p) ++ D) *p++; 标准答案: D

273、若有定义语句: int a, b, c, *p=&c; 接着执行以下选项中的语句,则能正确执行的语句是

A) scanf(“%d\", &p); B) scanf(“%d”, a, b, c);

C) scanf(“%d%d%d”, a, b, c); D) scanf(“%d”, p); - —53— A)ABEJ B)ABCD C) abcd D)abej 标准答案: D

278、若有以下程序 (

A) 6,6,6 ( B) 6,3,6 ( C) 4,3,4 ( D) 4,3,3

标准答案: D

279、若有以下程序 则程序的输出结果是 (

A) 3,7,7,7,7,7 ( B) 3,3,3,7,7,7 ( C) 7,7,7,3,3,3 ( D) 7,7,7,3,7,7 标准答案: D

280、若有以下程序 则程序的输出结果是 (

A) 5,3,5,3,5 ( B) 3,5,5,3,5 ( C) 3,5,3,5,5 ( D) 5,3,3,5,5 标准答案: C

281若有以下程序 — -54- 则程序输出结果是 (

A) 1,2,3,4,13,14,15,16, ( B) 13,14,15,16,1,2,3,4, ( C) 1,5,9,13,4,8,12,16, ( D) 4,8,12,16,1,5,9,13, 标准答案: C 282若有以下程序 则程序的输出结果是 (

A) 1,10,3,8,5,6,7,4,9,2, ( B) 2,9,4,7,6,5,8,3,10,1, ( C) 10,9,8,7,6,5,4,3,2,1, ( D) 10,1,8,3,6,5,4,7,2,9, 标准答案: D

283、若有以下程序 则程序的输出结果是 (

A) 00000 ( B) 01496 ( C) 014916 ( D) 01234 标准答案: B

284、若有以下程序 则程序的输出结果是

( A) 9,4,9 ( B) 6,12,12 ( C) 6,4,4 ( D) 6,4,6 标准答案: D

285、若有以下程序

则程序的输出结果是 — —55- (

A) 7,5,7,3,5,7, ( B) 7,7,5,3,3,3, ( C) 7,5,7,3,3,3, ( D) 7,5,5,3,3,3, 标准答案: D

286、若有以下程序 #include int *f(int *s,int *t) { intk;

if(*s<*t){k=*s; *s=*t;*t=k} return s;

}

main()

{int i=3,j=5,*p=&I,*q=&j,*r; r=f(p,q);

printf(“%d,%d,%d, %d\\n”,i,j,*p,*q,*r) }

则程序的输出结果是 (

A) 5,3,3,5,5 ( B) 3,5,3,5,5 ( C) 3,5,5,3,5 ( D) 5,3,5,3,5 标准答案: D 287、有以下程序 #include void fun(int a[][M],int b[], int flag ) { inti,j;

for(i=0;ia[j][i]):( b[i]〈b[j][i]) ) b[i]=b[j][i]; } } main()

{ int x[N][N] ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},y[N],i; fun(x,y,1);

for(i=0;i〈N;i++) printf(“%d ”,y[i]); fun(x,y,0);

for(i=0;i则程序的输出结果是 (

A) 1,5,9,13,4,8,12,16, ( B) 13,14,15,16,1,2,3,4, ( C) 4,8,12,16,1,5,9,13, ( D) 1,2,3,4,13,14,15,16, 标准答案: D 288、有以下程序 #include

void fun(int a[],int n) { intt,i,j; for(i=0;i〈n;i++) for(j=j+2;jif(a[i]〉a[j]) {t=a[i];a[i]=a[j];a[j]=t;} } - —56— main()

{ intc[10]={10,9,8,7,6,5,4,3,2,1},i;

fun(c,10);

for(i=0;i〈10;i++) printf(“%d\[i]); printf(“\\n”); }

则程序的输出结果是 (

A) 1,10,3,8,5,6,7,4,9,2, ( B) 10,9,8,7,6,5,4,3,2,1,( C) 10,1,8,3,6,5,4,7,2,9, ( D) 2,9,4,7,6,5,8,3,10,1 标准答案: D 289、有以下程序 #include〈stdio.h> intfuna(inta,intb){ returna+b;} main()

{ intx=6,y=7,z=8,r; r=fun(fun(x,y),z-—); printf(“%d\\n”,r); }

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

A) 15 ( B) 21 ( C) 31 ( D) 20 标准答案: B

290、以下选项中函数形参不是指针的是 (

A) fun(int&p){…} ( B) fun(intp[]){…} ( C) fun(int&a){…} ( D) fun(inta[10]){…} 标准答案: A 291、有以下程序 #include〈stdio。h> main()

{ inty=1,x,a[6]={ 2,4,6,8,10},*p; p=&a[1];

for(x=0;x<3;x++) y=y+*(p+x); printf(“%d\\n”,y); }

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

A) 19 ( B) 18 ( C) 20 ( D) 17 标准答案: A 292、有以下程序 #include

voidfun(int*s,intn,int *k) { inti;

for(i=0,*k=i;i〈n;i++) if(s[i]〉s[*k]) ;

main()

{ inta[5]={1,6,2,8,0},k; fun(a,5,&k);

printf(“%d %d\\n\[k]); }

在横线处应填入的内容是 (

A) k=i—s ( B) *k=i-s ( C) k=i ( D) *k=i - —57— 标准答案: D 293、有以下程序 #include main() { inta[3][4] ={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i,j,k=0; for(i=0;i〈3;i++)

for(j=0;j〈2;j++) k=k+*(*(p+i)+j); printf(“%d\\n”,k); }

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

A) 60 ( B) 99 ( C) 108 ( D) 68 标准答案: A 294、有以下程序 #include〈stdio.h〉

intfuna(inta,intb){returna+b;} intfunb(inta,intb){returna-b;}

intsss(int(*t)(),intx,int y){return((*t)(x,y));} main() { intx;

x=sss(funa,9,3); x+=sss(funb,8,3); printf(“%d\\n\}

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

A) 17 ( B) 22 ( C) 24 ( D) 23 标准答案: A 295、有以下程序 #include〈stdio。h〉 voidfun(inta,int b,intc) {a=b;b=c;c=a;} main()

{ inta=10,b=20,c=30; fun(a,b,c);

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

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

A) 30,20,10 ( B) 0,0,0 ( C) 20,30,10 ( D) 10,20,30 标准答案: A 296、有以下程序 #include〈stdio.h> main()

{ intc[6]={10,20,30,40,50,60},*p,*s; p=a; s=&c[5]; printf(“%d\\n\—p); }

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

A) 5 ( B) 60 ( C) 6 ( D) 50 标准答案: A

297、有以下程序 #include main() — —58— { inta[3]={0},i,j,k=2; for(i=0;ifor(j=0;j程序运行后的输出结果是 (

A) 1 ( B) 2 ( C) 3 ( D) 0 标准答案: C

298、有以下程序 #include main()

{ inta[5]={2,4,6,8,10},*p,**k; p=a; k=&p;

printf(“%d”,*(p++)); printf(“%d\\n\",**k); }

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

A) 4 6 ( B) 4 4 ( C) 2 2 ( D) 2 4 标准答案: D 299、有以下程序 #include main()

{ intaa[3][3]={{2},{3},{6}},i,*p=&a[0][0]; for(i=0;i<2;i++)

{ if(i==0) aa[i][i+1]=*p+1; else ++p;

printf(“%d”,*p); } }

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

A) 46 ( B) 43 ( C) 26 ( D) 23 标准答案: D

300、 以下函数返回数组中最大值的下标 #include 〈stdio.h> int fun(int *s, int n) {

inti, k;

for( i=0,k=i;i〈n;i++)

if(s[i]〉s[k])___________;return (k); }

在横线处应填入的内容是 A) k=I B ++k C k++ D i=k 答案 A

301以下叙述中正确的是

A 实用的C语言源程序总是有一个或多个函数组成 B不同函数的形式参数不能使用相同名称的标识符

C 用户自定义的函数只能调用库函数 D 在C语言的函数内部,可以定义局部嵌套函数 答案: A

302 以下叙述中正确的是

A int*p1, int**p2, int*p3;都是合法的定义指针变量语句 — —59— B 语句 p==NULL;与 p==\\0是等价的语句

C p==NULL;执行后,指针 p指向地址为 0的存储单元 D 指针变量只能通过求指针运算符( &)获得地址值 答案:A

303 以下叙述中正确的是

A 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同 B指针变量之间不能用关系运算符进行比较

C 设置p是一个指针变量,则语句 p==0;是非法的,应使用 p==NULL; D 如果企图通过一个空指针来访问一个存储单元,将会得到一个错误信息 答案: D

304 以下叙述中正确的是

A 在引用数据元素时,下标表达式可以使用浮点数

B 数组说明符的一对方括号只能使用整型变量,不能使用表达式 C 一条语句定义一个数组

D 每一数组包含具有同一类型的变量,这些变量在内存中占连续的存储单元 答案: D

305 以下叙述中正确的是

A 数组下标的下限由数组中第 1个被赋值元素的位置决定 B 数组下标的下限是 1

C 数组元素的下标下限由第一个非零元素的位置决定 D charc1,c2,*c3,c4[40];是合法的变量定义语句 答案: D

306 以下叙述中正确的是

A 语句char a[3];a=”AB”;是合法的,因为数组有三个字符空间的容量,可以保存两个 B 语句 char a[2]={“A”,\"B”}; 定义了一个包含两个字符的数组 C 语句 int a[]={0};是不合法的,遗漏了数组的大小 D 语句 int a[8]={0};是合法的 答案: D

307 以下叙述中正确的是 A 函数名允许用数字开头

B 函数调用时不必区分函数名称的大小写

C函数调用时,函数名必须与被调用的函数名完全一致 D 在函数体中只能出现一次 return语句 答案: C

308 以下叙述中正确的是

A在对指针进行加减运算时,数字 1表示 1个存储单元的长度 B如果 p是指针变量*p+1和*( p+1)的效果一样 C如果p是指针变量,则&p是不合法的表达式 D如果p是指针变量,则*p是变量 p的地址值 答案: A

309 以下叙述中正确的是

A设有指针变量double *p,则p+1将指针 p移动 8个字节 B函数的形参类型不能使指针类型 C基类型不同的指针变量可以相互混用 D函数的类型不能是指针类型 答案: A 310 如果定义 floata[10],x;

则以下叙述中正确的是 - -60—

A三个表达式a[1]、 *( a+1)和*&a[1]表示的意思完全不同 B表达式*&a[1]是非法的,应该写成*( &a[1]) C表达式a+1是非法的 D表达式a=&x是非法的 答案: D

311 int *func( int a[10], int n) ;则以下叙述中正确的是 A 说明中的 a[10]改为 a[]或*a效果完全一样 B func函数中不能对 a进行移动指针(如 a++)的操作

C 只有指向 10个整数内存单元的指针,才能作为实参传递给形参 D 形参a对应的实参只能是数组名 答案: A

312 以下叙述中正确的是

A 语句 int a[][3]={1,2,4,5};是错误的初始化形式

B 在逻辑上可以把二维数组看成是一个具有行和列的矩阵或表格 C 语句int a[4][3]={{1,2},{4,5}};是错误的初始化形式 D 语句 int a[4][3]={1,2,45,};是错误的初始化形式 313 有以下程序 #include 〈stdio.h>

viod fun( int x , int y, int *c, int *d ) {

*c=x+y; *d=x-y; }

main() {

int a=4, b=3, c=0, d=0; fun(a,b,&c,&d);

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

程序的输出结果是 A 7 1 B 0 0 C 3 4 D 4 3 答案: A

314 有以下程序

#include 〈stdio。h〉 void fun(int *p, int *q) {

t=*p;*p=*q;*q=t;*q=*p; }

main()

{ int a=0, b=3; fun(&a,&b);

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

程序的输出结果是 A 9 0 B 0 9 C 0 0 D 9 9 答案: D

315 有以下程序 #include { int a[]={2,4,6,8,10},x*P,y=1; — -61— p=&a[1];

for(x=0;x<3;x++) y+=*(p+x); printf(“%d\\n”,y); }

程序的输出结果是 A 13 B 15 C 11 D 19 答案: D

316 有以下程序

#include 〈stdio。h〉 main()

{ int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i〈3;i++)

print(“%d ”,x[i][2—i]); printf(“\\n”); }

程序的输出结果是

A 3 6 9 B 1 4 7 C 1 5 0 D 3 5 7 答案: D

317 有以下程序 #include 〈stdio.h> main() {

inta[]={2,4,6,8},*p=a,i; for(i=0;i<4;i++) a[i]=*p++;

printf(“%d\\n”,a[2]); }

程序的输出结果是 A 8 B 2 C 4 D 6 答案: D

318 有以下程序 #include 〈stdio。h> char fun( char *c) {

if(*c<=’Z’&&*c>='A') *c=’A’—‘a'; returm*c; }

main() {

char s[81],*p=s; gets(s); while(*p) { *p=fun(p); putchar(*p); p++; printf(‘\\n’); } }

若从键盘输入 OPEN THE DOOR<回车〉,程序的输出结果是 — -62- A OPEN THE DOOR B Open The Door C oPEN tHE dOOR D open the door

答案: D

319 有以下程序 #include 〈stdio.h> main() {

char a=’H’;

a=(a>='A’&&a〈=’Z')?(a+32):a; printf(“%C\\n”,a); }

程序的输出结果是 A H B A C a D h 答案: D

320 有以下程序 #include int f(int x); main()

{ int a,b=0;

for(a=0;a〈3;a+=1)

{ b+=f(a); putchar(‘A’+b); } }

int f(int x) { return x*x+1; }

程序的输出结果是

A BDI B BCF C ABE D BCD 答案: A

321 设有定义: int x[2][3];

则以下关于二维数组x的叙述错误的是

A x[0]和 x[1]是数组名,分别代表一个地址常量

B 元素x[0]可以看作是由三个整形元素组成的一位数组 C 数组 x可以看作是由x[0]和 x[1]两个元素组成的一位数组 D 可以用 x[0]=0;的形式为数组所有元素赋初值0 答案: D

322 设p是指针变量,语句 p=NULL;等价于 A p=0 B p=’0’ C p=\"\" D p=’’ 答案: A

323 有以下程序 #include int a[]={10,20,30,40},*p=a,i;

for(i=0;i<=3;i++) {a[i]=*p;P++; } printf(“%d\\n”,a[2]);

}

程序的输出结果是

A 20 B 10 C 40 D 30 — —63- 答案: D

324 有以下程序

#include 〈stdio。h〉 #define N 3

viod fun( int a[][N], int b[]) { int i ,j;

for(i=0;i〈N;i++) {

b[i]=a[i][0]; for(j=1;jif(b[i]main() {

int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i ; fun(x,y);

for(i=0;i程序的输出结果是

A 3,6,9 B 1,3,5 C 3,5,7 D 2,4,8 答案: A

325 设有定义: char s[81]; int i=1;

以下不能将一行( 不超过80个字符) 带有空格的字符串正确读入的语句或语句组是 A do{scanf(“%c\);}while( s[i++]!=’\\n’); s[i]=’\\0’; B gets(s);

C while( (s[i++]=getchar()) !='\\n’); s[i]=’\\0'; D scanf(“%s”,s); 答案: D

326 设有定义:

char p[]={‘1’,’2’,’3’},*q=p;

以下不能计算出一个char型数据所占字节数的表达式是

A sizeof( p[0]) B sizeof( *p) C sizeof( char) D sizeof( p) 答案: D

327 有以下程序 #include #include 〈string.h> main()

{ char str[][20]={“One*world\*Dream!\"},*p=str[1];

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

程序的输出结果是

A 9, One*Dream! B 9,One*world C 10,One*world D 10,One*Dream! 答案: D

328 有以下程序 #include main() - —64—

{ char s[]=\"012xy\\08s34f4w2”; int I,n=0; for(i=0;s[i]!=0;i++) if(s[i]〉='0’&&s[i]<=’9’) n++; printf( “%d\\n“,n); }

程序的输出结果是 A 8 B 7 C 3 D 0 答案: C

329 有以下程序 #include 〈stdio.h> fun(int x,int y) { static intm=0,i=2;

i+=m+1;m=i+x+y;returnm; } main()

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

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

程序的输出结果是

A 11,5 B 5,11 C 11,11 D 5,5 答案: B

330 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 A auto和static B static和register C extern和register D auto和register 答案: D

331 以下语句中错误的是

A char *ss[6]; ss[1]=”right?\"; B char *ss[]={“right?”}; C char ss[6][20]; ss[1]=”right?”; D char ss[][20]={“right?”}; 答案: C

332 以下不能将s所指字符串正确复制到t所指存储空间的是

A do{*t++=*s++; }while( *s); B for( i=0, j=0; t[i++]=s[j++];); C while(*t=*s){t++;s++;} D for( i=0; t[i]=s[j];i++); 答案: A

333 有以下程序 #include void swap( char *x, char *y) { char t;

t=*x;*x=*y;*y=t; }

main()

{ char *s1=”abc”, *s2=”123”; swap(s1,s2); printf(“%s,%s\\n”,s1,s2); }

程序执行后的输出结果是

A 321,cba B abc,123 C 123,abc D 1bc,a23 答案: D

334、有以下函数

int fun( char *x, char *y) - —65- { int n=0;

while( ( *x==*y) &&*x! ='\\0') {x++;y++;n++;} return n; }

函数的功能是

A 统计x和y所指字符串中相同的字符个数 B 将y所指字符串赋给想、所指存储空间

C 统计x和y所指字符串中最前面连续相同的字符个数 D 查找x和y所指字符串中是否有'\\0’ 答案: C - —66- — -67- - —68- — —69—

350,若有定义语句: char *s1=\"OK\*s2=”ok\"; 以下选项中,能够输出”OK”的语句是 A

if (strcmp(s1,s2)==1) puts(s1); B

if (strcmp(s1,s2)!=1) puts(s2); C

if (strcmp(s1,s2)==0) puts(s1); D

if (strcmp(s1,s2)!=0) puts(s1); 标准答案: D 351,有以下程序 #include〈stdlo.h>

void fun( char **p) { ++p

printf( ”%s\n\) ; }

main() {

char *a[]={“Morning”,”Afternoon\,\"Night\"}; fun(a);

}

程序的运行结果是

A)Afternoon B) Evening C) Morning D) Afternoon 标准答案: D

352, 有以下程序,程序中库函数islower (ch)用以判断ch中的字母是否为小写字母 — —70- #include #includewhile(p[i]) {

if(p[i]==' ‘&& islower(p[i—1])) p[i-1]=p[i—1]—‘a'+’A'; i++; } }

main() {

char s1[100]=\"ab cdEFG !”; fun(s1);

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

程序运行后的输出结果是

A Ab Cd EFg ! B ab cd EFg ! C aB cD EFG ! D ab cd EFG ! 标准答案: C 353,有以下程序 #include〈stdio.h> Int f(int x) {

inty;

if(x==0 || x==1 ) return(3); y=x*x –f(x—2); return y; }

main() { intz; z

= f(3);

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

程序的运行结果是

A 9 B 8 C 0 D 6 标准答案: D 354, 有以下程序 #include〈stdio.h〉 intfun (int x[] ,int n) {

staticint sum=o,i;

for (i=0;i〈n;i++) sum+=x[i]; return sum; }

main() - —71- {

inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0; s=fun(a,5)+fun(b,4); printf(“%d\\n\",s); }

程序执行后的输出结果是 A 60 B 55 C 50 D 45 标准答案 A

355, 下程序( strcat函数用以链接两个字符串) #include main() {

char a[20]=”ABCD\\0EFG\\0”,B[]=”IJK”; strcat(a,b); printf(“%s\\n”,a) }

程序运行后的输出结果是

A ABCDIJK B ABCDE\\0FG\\0IJK C EFGIJK D IJK 标准答案 A 356, 下程序段 char name[20]; intnum

scanf(“name=%s num=%d\",name&num);

当执行上述程序段,并从键盘输入: name=Lili num=1001<回车>后,A Lili B name=Lili num=1001 C name=Lili D Lili num= 标准答案 A

357, 有以下程序 #includechar ch[]=”uvwxyz\; pc=ch;

name的值为 peintf(“%c\\n”,*(pc+5)); }

程序运行后的输出结果是

A z B 字符y的地址 C 元素ch[5]的地址 D 0 标准答案 A

358, 有以下程序

#include〈stdio。h〉 main() {

char s[]={“012xy”}; inti,n=0;

for(i=0;s[i]!=0;i++); if(s[i]〉=’a’&&s[i]〈='z’); printf(“%d\\n\;

程序运行后的输出结果是 A 2 B 0 C 3 D 5 — -72— 标准答案 A

359, 有以下程序 #include int fun(int n ) {

if (n==1) return 1; else

return(n+fun(n—1)); }

main() { int x;

scanf (“%d”,&n); x=fun(x);

printf(“%d\\n\; {

执行程序时,给变量 x输入10,程序的输出结果是 A 65 B 54 C 45 D 55 标准答案 D

360,有以下程序 #include int f(int m) { static int n==0; n+=m; return n; }

main()

{ int n=0;

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

程序运行后的输出结果是

A 1, 1 B 3, 3 C 2, 3 D 1, 2 标准答案 D

361, 以下选项中正确的语句组是 A char *s; s={“BOOK!”}; B char s[]; s=“BOOK!”; C char *s; s=“BOOK!\"; D char s[10]; s=“BOOK!”; 标准答案 C

362, 若是以下定义和语句 #include〈stdio。h〉

char s1[10]=”abcd!”, *s2=\"\\n123\\\\”; printf(“%d %d\\n”,strlen(s1),strlen(s2)); 则输出结果是

A 10 7 B 5 5 C 5 8 D 10 5 标准答案 B

363, 有以下程序 #include

void fun1(char *p) — -73— {

char *p q=p

while(*q!=‘、 0’) {

( *q) ++; q++; } }

main() {

char a[]={“Program”},*p; p=&a[3]; fun1(p);

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

程序执行后的输出结果是

A Progsbn B Prohsbn C Program D Prphsbn 标准答案 B

364, 有以下函数 intaaa(shar *s) { char*t=s; while(*t++);

t--;

return(t—s); }

以下关于aaa 函数功能叙述正确的是

A 将串s 复制到串t B 求字符串s 所占字节数 C 求字符串s 的长度 D 比较两个串的大小 标准答案 C

365, 有以下程序 #includeelse return(fun(—-a,——b)); }

main()

{ printf(“%d\\n”, fun(4,2));} 程序的运行结果是 A 1 B 4 C 2 D 3 标准答案 C

366, 以下选项中叙述错误的是

A C 程序函数中定义的自动变量,系统不自动赋确定的初值 B C 程序函数的形参不可以说明为static 型变量

C C 程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

D 在C 程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内 标准答案 C

367, 以下能正确定义字符串的语句是

A char str[]={‘\\064’}; B char str=\"\\x43”; - -74- C char str[]=\"\\0”; D char str=’‘; 标准答案 C

368,以下关于字符串的叙述中正确的是

A 两个字符串中的字符个数相同时才能进行字符串大小的比较 B C语言中有字符串类型的常量和变量 C 空串比空格打头的字符串小

D 可以用关系运算符对字符串的大小进行比较 标准答案 C

369,有以下程序 #include〈stdio。h〉

void fun(char *a, char *b) { while(*a==’*’)a++; while(*b=*a) {b++;a++:} }

main()

{ char*s=”*****a*b****\",t[80]; fun (s,t); puts(t); }

程序的运行结果是

A a*b**** B ab C *****a*b D a*b 标准答案 A

370,下列函数的功能是 void fun (char *a,char *b) {

while(*b=*a)!=’\\0’) { a++; b++; } }

A 将a所指字符串和b所指字符串进行比较 B 检查a和b所指字符串中是否有'\\0’ C 使指针b指向a所指字符串 D 将a所指字符串赋给a所指空间 标准答案 D 371,有以下程序

#include〈stdio。h> intfun(int x) {

int p;

if(x==0||x==1) return(3);

p=x-fun(x—2); return p; } main() {

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

执行后的输出结果是 A 3 B 0 C 7 D 2 标准答案 D

372,有以下程序

#include〈stdio.h> — —75— int fun()

{ static int x=1; x*=2; return x; }

main()

{ int i ,s=1;

for(i=1;i〈=2;i++) s=fun(); printf(“%d\\n”,s); }

程序运行后的输出结果 A 1 B 4 C 8 D 0 标准答案 B

373,若要求从键盘读入含有空格字符的字符串,应该使用函数

A getchar() B get() C scanf() D gets() 标准答案 D

374,设有如下程序段 #include〈stdio.h>

char s[20] =”Beijing”, *p; p=s;

则执行 p=s;语句后,以下叙述正确的是

A 数组 s中的内容和指针变量 p中的内容相同 B s数组中元素的个数和 p所指字符串长度相等

C s和 p都是指针变量 D 可以用*p表示 s[0] 标准答案 D 375,有以下程序 #include〈stdio.h〉 main()

{ char s[]=”abcde”; s+=2;

printf(“%d\\n”,s[0]); }

执行后的结果是

A 输出字符 c的 ASCII码 B 输出字符 a的 ASCII码 C 输出字符 c D 程序出错 标准答案 D

376,有以下程序 #include〈stdio。h〉 #include〈string.h〉

void fun (char *s [], int n) { char *t; int i, j;

for (i=0; i〈n—1;i++) for(j=j+1;jif(strlen(s[i]) > strlen(s[j])) { t= s[i]; s[i] = s[j]; s[j]= t;} }

main()

{ char *ss[]={“bcc\,”xy”,”aaaacc”,”aabcc”}; fun(ss, 5); printf(“%s,%s\\n”, ss[0], ss[4]); }

程序的运行结果是 — —76-

A aaaacc,xy B bcc,aabcc C aabcc,bcc D xy,aaaacc 标准答案 D 377,有以下程序

#includeint f(int n)

{ int t=0; staticint a=5;

if (n%2) {int a=6; t +=a++;} else {int a=7;t += a++;} return t + a++; } main()

{ int s=a, i=0;

for (; i〈2; i++) s+=f(i); printf(“%d\\n”, s); }

程序运行后的输出结果是 A 32 B 36 C 28 D 24 标准答案 C

378,有以下程序 #include{ int t=0; staticint a=5;

if (n%2) {int a=6; t +=a++;} else {int a=7;t += a++;} return t + a++; }

main()

{ int s=a, i=0;

for (; i〈2; i++) s+=f(i); printf(“%d\\n\", s); }

程序运行后的输出结果是 A 32 B 36 C 28 D 24 标准答案 D

379,以下正确的字符串常量是

A 01ympic Games B “\\\\\\” C ‘abc’ D “ “ 标准答案 D

380,下列选项中,能够满足“只要字符串s1等于字符串s2,则执行 STS”要求的是 A if (strcmp(s2,s1)==0) ST; B if (strcpy(s2,s1)==0) ST; C

if (s1==s2) ST; D if (s1-s2==0) ST; 标准答案 A

381,有以下程序 #include〈stdio。h〉 int fun(char p[][10]) { int n=0,i;

for(i=0;i〈7; i++) if(p[i][0]==’T') n++; return n; - —77- }

main()

{charstr[][10]={“Mon”,”Tue”,\"Wed”,”Thu”,”Fri”,\"Sat\}; printf(“%d\\n”,fun(str)); }

程序执行后的输出结果是 A 0 B 2 C 3 D 1 标准答案 B 382有以下程序 #includevoidfun(char *t, char *s) { while(*t!=0) t++; While((*t++=*s++)!=0); } main()

{ char ss[10=”acc”,aa[10]=”bbxxyy\"; fun(ss,aa);

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

程序的运行结果是

A acc,bbxxyy B accxyy,bbxxyy C accxxyy,bbxxyy D accbbxxyy,bbxxyy 标准答案 D

383, 有以下程序 #include{ s=*p1; *p1=*p2; *p2=s; P1++; p2--; } }

main()

{ char a[]=”123456”: fun(a, strlen(a)); puts(a); }

程序运行后的输出结果是

A 116611 B 654321 C 123456 D 161616 标准答案 B

384,有以下程序 #include〈stdio.h> intb=2; intfun(int*k)

{ b=*k+b;return(b);}

main()

{ inta[10]={1,2,3,4,5,6,7,8}, i;

for(i=2;i<4;i++){b=fun(&a[i]+b;printf(“%d”,b);} printf(“\\n”); - -78- }

程序运行后的输出结果是 A 10 28 B 10 16 C 8 10 D 10 12 标准答案 A

385,若有以下程序 #include{ inti, j=0;

char a[]=”Howareyou!”; for (i=0;a[i]; i++) if(a[i]!=‘‘) a[j++]=a[i]; a[j]='\\0’;

printf(‘%s\\n”,a); }

则程序的输出结果是

A Hay! B Howareyou ! C Howareyou D Howareyou! 标准答案 D

386,如有以下程序 #includechar b[]=\"Welcomeyou toChina!”; main()

{ int i, j=0; char *p;

for(i=0;b[i]!=‘\\0'; i++) {

if(*a==b[i]) {p=a;

for(j=i;*p!=‘\\0';i++) {

if(*p!=b[j]) break; P++; }

if(*p==‘\\0’) break; } }

Printf(“%s”,&b[i]); }

则输出结果是

A China! B meyoutoChina! C toChina! D youtoChina! 标准答案 D

387,若有以下程序 #include〈stdio。h〉 main()

{ char a[20],b[]=”Theskyisblue。”; int i; for(i=0; i〈7;i++) scanf(“%c”,&b[i]); gets(a); printf(“%s%s\\n”,a,b); }

执行时若输入:(其中〈Enter>表示回车符) Figflowerisred。A wer is red.fig flo is blue. B Fig floweris red。The sky is blue。 C wer isred,Fig flo D wer isred.The sky isblue。 标准答案 A

388,若有以下程序 #include{ char w[20], a[5][10]={”abcdef”,”ghijkl”,”mnopq”,\"rstuv”,\"wxyz”}; int p[6][2]={{0,1},{1,5},{0,0},{0,2},{1,4},{4,4}}, i; for (i=0; i<6; i++) w[i]=a[p[i][0]] [p[i][i]]; puts (w); }

则程序的输出结果是

A black B catis C ckbdl D ababj 标准答案 A

389, 若有以下程序 #includeif (x>= 10)

{ printf (“%d—”,x%10); f(x/10); else

printf(“%d\); }

main()

{ int z= 123456; f(z); }

则程序的输出结果是

A 6-5-4—3-2-1 B 1-2—3-4-5—6- C 6-5-4-3-2-1- D 1-2—3-4—5-6 标准答案 A

390若有以下程序 #include〈stdio。h〉 int a=2; int f(int m)

{ static int n; n=0; n++; a++; return n+m+a; }

main() { int k;

for (k=0; k<4; k++) printf(“%d,”, f(k)); }

则程序输出结果是

A 4, 7, 10, 13, B 4, 6, 8, 10, C 3, 5, 7, 9, D 4, 5,标准答案 B

391,若有以下程序 #include main() { int I, j=0;

char a[]=”How are you!”,b[10]; — -80— for(i=0; a[i]; i++)

if(a[i]== ‘ ‘) b[j++]=a[i+]; b[j]= ‘\\0’;

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

则程序的输出结果是

A Hay! B Howareyou! C Howareyou D ay 标准答案 D

392, 若有以下程序 #includechar *a=”you”,b[ ]=”welcome#you#to#China!”; main()

{ int i, j=0; char *p;

for(i=0; b[i]!= ‘\\0’; i++) { if(*a== b[i]) { p=&b[i];

for ( j=0;a[j]!= ‘\\0’; j++) { if(a[j]!= *p) break; p++; }

if(a[j] == ‘\\0’) break; }

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

则程序的输出结果是

A #you#to#China! B me#you#to#China! C #China! D #to#China!

6, 7, 标准答案 D

393,若有以下程序 #include〈stdio。h〉 main()

{ char a[20], b[]=”The sky isblue。”; int i; for (i=0; i<10; i++) scanf(“%c\",&a[i]); a[i]= ‘\\0'; gets(b);

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

执行时若输入: Figflower isred.<回车〉 则输出结果是

A Fig flower isred。isblue. B Fig floweris C Figflowerisred。 D Figflower isred。 标准答案 D

394,若有以下程序 #include〈stdio.h〉 main()

{ char w[20]=\"dogs”, a[5][10]={”abcdef”,”ghijkl”,”mnopq”,”rstuv”,”wxyz.”}; int i, j, k;

for (i=0;w[i]; i++) — -81- { for(j=0; j〈5; j++) {for(k=0;a[j][k];k++) if(w[i]==a[j][k]) break; if(w[i]==a[j][k]) break; }

Printf(“%d,%d,\"m j, k); } }

则程序的输出结果是

A 6,7,6,7,6,7,6,7, B 0,3,2,2,1,0,3,1, C 5,6,5,6,5,6,5,6,1,4,2,

标准答案 B

395 若有以下程序 #include〈stdio.h> Intf(int a[], int n) {

if(n〉1) {int t;

t=f(a, n—1);

return t>a[n—1] ? t:a[n-1]; } else

D 1,4,3,3,2, return a[0] }

main()

{ inta[]={8,2,9,1,3,6,4,7,5}; Printf(“%d\\n”,f(a,9)); }

则程序的输出结果是 A 5 B 1 C 8 D 9 标准答案 D - -82-

400)以下fun函数的功能是将形参s所指字符串内容颠倒过来 void fun( char *s ) { int i ,j ,k ;

for ( i=0,j= strlen(s)__________; i< j ;i++,j—— ) { k

= s [i]; s[i]=s [j];s[j]=k ;} }

在横线处应填入的内容是 A) -1 B) +1 C), k=0 D)+0 标准答案: A 401)有以下程序 #include

voidfun(char *p,int n)

{char b[6]=“ab=bcde”;inti;

for(i=0,p=b;imain()

{ chara[6]=“ABCDE”;

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

程序运行后的输出结果是

A) abcde B)EDCBA C)edcba D)ABCDE 标准答案: D 402) 有以下程序 #include〈stdio.h> fun(inta,intb) {

intstaticm=0,i=2; i=i+m+1;m=i+a+b; returnm; }

main()

{ intk=4,m=1,p; p=fun(k,m);

printf(“%d,”,p); p=fun(k,m);

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

} 程序运行后的输出结果是

A)8, 8 B)8, 17 C)7, 17 D)7, 16 标准答案: B 403)有以下程序 #include〈stdio。h〉 intfun(chars[]) {

char*p=s;

while(*p!=0) p++; return(p-s); }

main()

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

程序运行后的输出结果是 A) 1 B) 0 C) 6 D)7 标准答案: D

404)若有以下程序段 charstr[4][12]={“aa”,\"bbb”,”ccccc”,\"d”},*strp[4]; inti;

for(i=0;i<4;i++)strp[i]=str[i]; 不能正确引用字符串的选项是

A) *strp B)strp[3] C)strp D)strp[0] 标准答案: C 405) 有以下程序 #include

#include — -84- void fun ( char *s ) {

char a[10];

strcpy (a,”STRING”); s = a ; }

main() {

char *p=”P ROGRAM”; fun ( p ) ;

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

程序运行后的输出结果是(此处 代表空格)

A) STRING B) STRING C) STRING D) P ROGRAM

标准答案: D

406) 有以下程序 #include 〈stdio.h> void fun ( int n, int*s) { int f;

if ( n= =1) *s =n+1; else {

fun( n—1,&f) ; *s = f ; } }

main() {

int x=0;

fun (4,&x);

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

程序运行后的输出结果是 A) 3 B) 2 C) 1 D) 4 标准答案: B 407)有以下程序 #include main() {

char c[2][5]={“6938”,”8254”},*p[2]; int i,j,s=0;

for( i= 0; i < 2;i++) p[i]=c[i];

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

for(j=0;p[i][j]>0;j+=2)

s=10*s+p[i][j]—‘0’; — —85- printf(“%d\\n\",s); }

程序运行后的输出结果是

A) 9284 B) 6982 C) 9824 D) 6385 标准答案: D

408)有以下程序 #include void fun(int*s) {

staticint j=0;

dos[j]+=s[j+1];while(++j<2);

}

main() {

inti,a[10]={1,2,3,4,5}; for(i=1;i<3;i++)fun (a);

for(i=1;i<5;i++)printf(“%d”,a[i]); printf(“\\n”); }

程序运行后的输出结果是

A) 5795 B) 35745 C) 34756 D) 5745 标准答案: D

409)下面选项中的程序段,没有编译错误的是 A) char*sp,s[10];sp=\"Hello”; B) char str1[10] =\"computer”,str2= str1; C) char mark[];mark=”PROGRAM”; D) char*sp,s[10 ];s=”Hello”; 标准答案: A

410)以下叙述中正确的是

A)字符串常量“str1\"的类型是:字符串数据类型

B)有定义语句: char str1[] = “str1”;数组str1将包含4个元素

C)字符数组的每个元素可存放一个字符,并且最后一个元素必须是‘\\0’字符

D)下面的语句用赋初值方式来定义字符串,其中‘\\0’是必须的char str1[]={‘s’,’t’,'r',’1',’\\0'}; 标准答案: D

411)以下叙述中正确的是

A) char *ca[3]= {“A”,”B\是不合语法的 B) char ca[3][5]= {“A”,”B”,\"CCC”};是不合语法的

C) 字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组 D) char ca[][5] = {“A”,”B”,”CCC\;;是不合语法的 标准答案: D

412)以下叙述中正确的是

A)函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位) B)当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间 C)两个字符串可以用关系运算符进行大小比较

D) C语言本身没有提供对字符串进行整体操作的运算符 标准答案: D

413)以下叙述中正确的是

A)函数体中的语句不能出现对自己的调用

B)如果函数带有参数,就不能调用自己 - —86— C)函数名代表函数的入口地址

D)所有函数均不能接受函数名作为实参传入 标准答案: C

414)以下叙述中正确的是

A)只要是用户定义的标识符,都有一个有效的作用域 B)局部变量不能被说明为static

C)只有在函数内部定义的变量才是局部变量

D)只有全局变量才有自己的作用域,函数中的局部变量没有作用域 标准答案: A

415)以下叙述中正确的是

A)不能用字符串常量对字符数组名进行整体赋值操作

B)字符串常量“Hello”会被隐含处理成一个无名字符型数组,它有5个元素 C) char*str;str=“Hello”;与charstr[];str=“Hello”;效果是一样的 D) charstr[7]=”string!”;在语法上是合法的,运行也是安全的 标准答案:

416)以下叙述中正确的是

A)对于字符串常量”string!”;系统已自动在最后加入了‘\\0'字符,表示串结尾 B)对于一维字符数组,不能使用字符串常量来赋初值

C)语句charstr[10]=”string!”;和charstr[10] ={\"string!”};并不等价 D)在语句charstr[10]=”string!”;中,数组str的的大小等于字符串的长度 标准答案: A 417)设有定义

charstr[]=“Hello\"; 则语句

printf(“%d %d”,sizeof(str),strlen(str));的输出结果是 A) 6 6 B) 6 5 C) 5 6 D) 5 5 标准答案: B

418)在32位编译器上,设有定义 char*str1=“Hello”,str2[]=”Hello”; 则以下语句

printf( ”%d %d”,sizeof(str1),sizeof(str2)) ;的输出结果是 A) 5 6 B) 4 5 C) 6 6 D) 5 5 标准答案: B

419)以下叙述中正确的是

A)任何情况下都不能用函数名作为实参 B)简单递归不需要明确的结束递归的条件

C)函数的递归调用不需要额外开销,所以效率很高 D)函数既可以直接调用自己,也可以间接调用自己 标准答案: D

420)以下叙述中正确的是

A)在复合语句中不能定义变量

B)对于变量而言, “定义\"和“说明”这两个实际上同一个意思 C)函数的形式参数不属于局部变量 D)全局变量的存储类别可以是静态类 标准答案: D

421)设有定义语句:

char*aa[a]={“abcd\",”ABCD”}; 则以下叙述正确的是

A) aa是指针变量,它指向含有两个元素的字符型数组 — —87- B) aa数组的值分别是字符串“abcd\"和“ABCD”

C) aa数组的两个元素只能存放含有 4个字符的一维数组的首地址 D) aa[0]存放字符串“abcd”的首地址 标准答案: D 422)有以下程序 #include〈stdio.h〉 int fun(char *s) { char *p=s;

while(*p !=0) p++; return ( p=s); } main()

{ printf(“%d\\n”,fun(“goodbye!”));程序的输出结果是 A) 8 B) 7 C) 0 D) 6 标准答案: A 423)有以下程序 #include〈stdio.h〉 int fun(int n) {int a;

if (n = =1) return 1; a=n+fun(n-1); return ( a ); }

main()

{ printf( “%d\\n”,fun(5) );} 程序的输出结果是

A) 9 B) 14 C) 10 D) 15 标准答案: D 424)有以下程序 #include int d=1; { int d=5; d+=p++;

printf(“%d”,d); } main()

{ inta=3; fun (a); d+=a++;

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

程序的输出结果是

A) 9 6 B) 8 5 C) 8 4 D) 9 4 标准答案: C

} 425)有以下程序 #include〈stdio。h> int fun(int a) { int b=0; — —88- static int c=3; a=(c++,b++); return ( a );} main()

{ int a=2,i,k; for (i=0;i〈2;i++) k= fun(a++); printf(“%d\\n”,k); }

程序的输出结果是

A) 4 B) 0 C) 1 D) 2 标准答案: B 426) 有以下程序 #include main()

{ char c[2][5]=\"6934”,”8254”},*p[2]; int i,j,s=0;

for(i=0;i<2;i++) p[i]=c[i]; for(i=0;i<2;i++)

for(j=0;p[i][j]〉0&&p[i][j]〈='9’;j+=2) s=10*s+p[i][j]—‘0’; printf (“%d\\n\); 程序的输出结果是

A) 69825 B) 6385 C) 693825 D) 63825 标准答案: B

427) 有以下程序( strcpy为字符串复制函数, strcat为字符串连接函数) #include〈stdio.h> #include main()

{char a[10] =”abc\[10]=\"012\; strcpy (a+1,b+2); puts(strcat(a,c+1));} 程序的输出结果是

A) a2yz B) a12xyz C) 12yz D) bc2yz 标准答案: A

428)以下选项中,没有编译错误的是 有以下程序

#include 程序的输出结果是

A) char str1[5] =”pass”,str2[6],str2=str1; B) char str4[];str4=”hello world”;

C) char str3[]={‘d’,’e’,’b’,'u’,'g’,’\\0’}; D) char name[10];name=”china”; 标准答案: C 429) 有以下程序 #include{ char *s=”12134”; int k=0,a=0; while(s[k+1]) { k++; - —89- if (k%2 = =0)

{ a= a+(s[k]-‘0'+1); continue; }

a = a+(s[k]-‘0'); }

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

程序的输出结果是

A) k=4 a=12 B) k=6 a=11 C) k=3 a=14 D) k=5 a=15 标准答案: A

430) 有以下程序 #include〈stdio.h> main()

{char a[5][10] ={“one”,\"two”, ,”three\"”four”,”five\" }; int i,j; char t;

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

for(j=i+1;j〈5;j++) if( a[i][0]〉a[j][0]) { t=a[i][0];

a[i][0]=a[j][0]; a[j][0]=t; }

puts(a[1]); }

程序的输出结果是

A) two B) owo C) fwo D) fix 标准答案: C 431)有以下程序 #include int a=1,b=2;

void fun1(int a,int b)

{printf(“%d %d”,a,b);} void fun2()

{a=3; b=4;} main()

{ fun1(5,6); fun2 ( );

printf ( “%d %d\\n\",a,b); }

程序运行后的输出结果是

A) 5 6 1 2 B) 1 2 5 6 C) 3 4 5 6 D) 5 6 3 4 标准答案: D 432)有以下程序 #include void func (int n) { static int num =1; num+=n;

printf(“%d\ -90— }

main() {func(3); func(4); printf(“\\n\"); }

程序运行后的输出结果是

A) 34 B) 48 C) 35 D) 45 标准答案: B

433)下面结构体的定义语句中,错误的是

A) structord{intx;inty;intz}structorda; B)structord{intx;inty;intz;}a; C)struct{intx;inty;intz;}a; D)structord{intx;inty;intz;};structorda; 标准答案: A 434)有以下程序 #includetypedefstruct{intb,p;}A;

voidf(Ac)/*注意: c结构变量名*/ main() {inti; A a={1,2}; f(a);

printf(“%d,%d\\n”,a.b,a.p);} 程序运行后的输出结果是

A) 2,4 B) 1,4 C) 2,3 D) 1,2 标准答案: D

435)以下叙述中正确的是

A) #includeC)预处理命令行必须位于C源程序的起始位置 D)在C语言中,预处理命令行都以“#”开头 标准答案: D

436)有以下程序 #include #include〈stdlib.h> intfun(intn) {int*p;

p=(int*)malloc(sizeof(int)); *p=n;return*p; }

main() {inta; a

=fun(10);printf(“%d\\n”,a+fun(10)); }

程序运行后的输出结果是 A) 10 B) 出错 C) 20 D) 0 标准答案: C 437)有以下程序 #include{unsignedchara=8,c; c=a〉>3;\\ - —91— printf(“%d\\n”,c); }

程序运行后的输出结果是 A) 16 B) 0 C) 32 D) 1 标准答案: D

438)读取二进制文件的函数调用形式为: fread(buffer,size,count,fp); 其中buffer代表的是

A) 一个文件指针,指向待读取的文件

B) 一个内存块的首地址,代表读入数据存放的地址 C) 一个内存块的字节数

D) 一个整型变量,代表待读取的数据的字节数 标准答案: B

439)以下叙述中错误的是

A)用typedef可以为各种类型起别名,但不能为变量起别名 B)用typedef可以新的类型明后,原有类型名仍有效 C)可以通过typedef增加新的类型

D)可以用typedef将已存在的类型用一个新的名字来代表 标准答案: C 440)有以下程序 #include structS {int a,b;} data[2]={10,100,20,200};

main()

{structS p=data[1];

printf(“%d\\n”,++(p,a));} 程序运行后的输出结果是 A) 10 B) 20 C) 11 D) 21 标准答案: D 441) 有以下程序 #include #define PT 3。5;

#define S(x) PT*x*x; main()

{ inta=1,b=2;printf(“%4.1f\\n”,S(a+b));} 程序运行后的输出结果是

A) 31.5 B)程序有错无输出结果 C) 14。0 D) 7。5 标准答案: B 442)有以下程序 #include〈stdio.h> main()

{unsignedchar a=2,b=4,c=5,d; d

= a|b; d&=c;printf(“ %d\\n“,d);} 程序运行后的输出结果是 A) 3 B) 6 C) 5 D) 4 标准答案: D 443)有以下程序 #include

#include〈stdlib。h〉 - —92- main()

{ int*a,*b=2,*c;

a=b=bc=(int*)malloc(sizeof(int)); *a=1;*b=2,*c=3; a=b;

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

程序运行后的输出结果是

A) 2,2,3 B) 1,1,3 C) 1,2,3 D) 3,3,3 标准答案: D

444)以下叙述中正确的是

A)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

B)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据

C)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 D)C语言中的文件是流式文件,因此只能顺序存取数据 标准答案: A

445)设有定义: structcomplex

{intreal,unreal;} data1={1,8},data2; 则以下赋值语句中错误的是 A) data2=data1;

B) data2.real=data1。unreal; C) data2.real=data1.real D) data2=(2,6); 标准答案: D 446) 有以下程序 #include

structS{int n;inta[20];}; void f(structS*p) { inti,j,t;

for(i=0;ip。a[j]){t= p。a[i];p.a[i]= p。a[j];p。a[j]=t;} }

main()

{inti;structSs={10,{2,3,1,6,8,7,5,4,10,9}}; f(&s);

for(i=0;i程序运行后的输出结果是

A) 10,9,8,7,6,5,4,3,2,1 B) 10,9,8,7,6,1,2,3,4,5 C) 2,3,1,6,8,7,5,4,10,9 D) 1,2,3,4,5,6,7,8,9,10 标准答案: D 447) 有以下程序 #include〈stdio.h〉 #includetypedef struct{char name[9];char sex ;intscore[2];}STU; STUf(STU a)

{STUb={“Zhao”,‘m',85,90}; — -93- int i;

strcpy(a。name,b。name); a。 sex=b.sex;

for (i=0;i<2;i++) a。score[i] =b。score[i]; return a;} main()

{ STU c={“Qian”,’f',95,92},d; d= f(c);

printf(“%s,%c,%d,%d”,d。name,d.sex,d.score[0],d.score[1]);

printf(“%s,%c,%d,%d\\n\",c。name,c。sex,cscore[0],c。score[1]); }

程序运行后的输出结果是

A) Qian,f,95,92,Qian,f,95,92 B) Zhao,m,85,90, Qian,f,95,92

C) Qian,f,95,92, Zhao,m,85,90 D) Qian,f,95,92, Zhao,m,85,90 标准答案: B

448)以下关于宏的叙述中正确的是

A)宏替换没有数据类型限制 B)宏调用比函数调用耗费时间

C)宏名必须用大写字母表示 D)宏定义必须位于源程序中所有语句之前 标准答案: A

449)设有以下语句 int a=1,b=2,c; c=a(b<<2);

执行后, c的值为 A) 7 B)8 C) 6 D) 9 标准答案: D 450、有以下程序 #includeFILE *fp; int a[10]={1,2,3},i,n; fp=fopen(“d1。dat”,”w”);

for(i=0;i〈3;i++) fprintf(fp,”%d\); fprintf(fp,”\\n”); fclose(fp);

fp=fopen(“dl。dat”,”r”); fclose(fp);

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

程序运行的结果是

A、 12300 B、 123 C、 321 D、 1 标准答案: B

451、以下关于 typedef的叙述错误的是()

A、用 typedef可以为各种类型说明一个姓名,但不能用来为变量说明一个新名 B、用 typedef为类型说明一个新名,通常可以拯救程序的可读性 C、 typedef只是将已存在的类型用一个新的名字来代表 D、用 typedef可以增加新类型 标准答案: D

452、 程序中已构成如下图所示的不带点结点的单向链表结构, 指针变量 s、 p、确定义, 并用于指向链表结

点,指针变量 s总是作为头指针指向链表的第一个结点。 - -94- 若有以下程序段

q=s;s=s—>next;p=s;

while(p->next) p=p—〉next; p—>next=q;q—>next=NULL; 该程序段实现的功能是

q均已正 A) 尾结点成为首结点 B) 删除尾结点 C)首结点成为尾结点 D)删除首结点 标准答案: C 453、有以下程序 #include #define S(x) 4*(x)*x+1 main()

{ int k=5 , j=2; printf( “%d\\”,S(k+j)) }

程序运行后的输出结果是

A、 143 B、 28 C、 33 D、 197 标准答案: A

454、若有以下程序段 intr=8

printf(“%d\\n”,r〉>1); 输出结果是

A、 4 B、 2 C、 16 D、 8 答案A

455、以下叙述中错误的是

A、 fwrite函数用于以二进制形式输出数据到文件 B、 fputs函数用于把字符串输出到文件 C、 gets函数用于从终端读入字符串 D、 getchar函数用于从磁盘文件读入字符 答案: D

456、有以下程序 #include main() {

FILE *pf

char *sl=”china”,*s2=\"Beijing”; pf=fopen(“abc。dat”,\"wb+\"); fwrite(“s2,7,1,pf); rewind(pf);

fwrite(s1,5,1,pf); fclose(pf); }

以上程序执行后abc。dat文件的内容是

A)ChinaBeijing B)BeijingChina C)China D)Chinang 答案:D

457、有以下结构体说明、变量定义和赋值语句 Struct STD

{ char name[10]; int age; Char sex;

a b c NULL - —95— } s[5],*ps;

Ps=&s[0];

则以下 scanf函数调用语句有错误的是

A) scanf(“%d”,&s[0].age); B) scanf(%c”,&(ps—>sex)); C) scanf(“%s”,s[0]。name); D) scanf(“%d”,ps—〉age); 标准答案:D

458、若有以下语句 typedef struct S

{ int g; char h; }T; 以下叙述中正确的是

A) T是 struct S 类型的变量 B) 可用 S定义结构体变量 C) S是 srurct类型的变量 D)可用 T定义结构体变量 标准答案: D

459、 #include Struct A { int a;

char b[10] double c; };

structAf(stuctAt); mian() {

structAa={1001,”zhangda”,1098。0}; printf(“%d,%s,%6.1f\\n”,a。a,a。b,a。c); }

structAf(strucrAt) {

t.a=1002;

strcpy( t.b,”ChangRong\") ; t。c=1202。0 return t; }

程序运行后的输出结果是

A、 1002, ZhangDa, 1202.0 B、 1001, ChangRong, 1098。0 C、 1001, Zhangda, 1098.0 D、 1002, ChangRong, 1202.0 标准答案: D

460、设有宏定义:

#define IsDIV(k,n) ((k%n==)?1:0) 且变量 m已正确定义并赋值,则宏调用:

IsDIV( m,5) && IsDIV(m,7) 为真时所要表达的是

A) 判断 m被 5和 7整除是否都余 1 B) 判断 m是否能被 5和 7整除 C) 判断 m是否能被 5或者 7整除 D) 判断 m被 5或者 7整除是否余 1 标准答案 A

461、有以下程序 #include〈stdio。h> main() — —96— {

int a=1,b=2,c=3,x; x=(a^b)&c; printf(“%d\\n”,x); }

程序运行的结果是

A、 0 B、 1 C、 2 D、 3 标准答案: D 462、有以下程序 #include〈stdio.h〉 main() {

FILE *fp;

int k, n, a[6]={1,2,3,4,5,6}; fp=fopen(“d2。dat”,”w\"); fprintf(fp,”%d%d\\n”,a[0], a[1], a[2]); fprintf(fp,\"%d%d\\n\",a[3], a[4], a[5]); fclose( fp)

fp=fopen( “d2。dat”,”r”) ;

fscanf(fp,”%d%d”,&k,&n); printf(“%d%d\\n\", k,n); fclose( fp); }

程序运行后的结果是

A、 1 4 B、 1 2 C、 123 4 D、 123 456 标准答案: D

463、没有以下语句 tepedef struct TT

{ char c; int a[4]; } CIN; 则下面叙述正确的是

A) 可以用 TT定义结构体变量 B) 可以用 CIN定义结构体变量 C) CIN是 struct TT类型的变量 D) TT是 struct类型的变量 标准答案B

464、有以下程序 #include{ int x, y; } dt[2]={1,2,3,4}; main() {

struct ord *p=dt;

printf(“%d, “, ++( p—〉x) );

printf(“%d\\n,++( p-〉x) ); }

程序运行后的输出结果是

A、 2,3 B、 3,4 C、 4,1 D、 1,2 标准答案A

465、 #include〈stdio.h〉

#define SUB( a) ( a) —(a) - —97— main()

{ int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(“%d\\n”,d); }

程序运行后输出的结果是 A、 10 B、 0 C、 —12 D-20 标准答案D

466、有以下程序 #include main()

{ int a=2, b; b=a〈<2;

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

程序运行后的输出结果是 A、 6 B、 2 C、 4 D、 8 标准答案: D

467、下列关于c语言文件的叙述中正确的是

A、文件由结构序列组成,可以构成二进制文件或者文本文件 B、文件由一系列数据依次排列组成,只能构成二进制文件 C、文件由字符序列组成,其类型只能是文本文件

D、文件由数据序列组成,可以构成二进制文件或者文本文件 标准答案: D 468、有一下程序 #includeFILE *fp;

int a[10]={1,2,3,0,0},I; fp=fopen(“d2.dat”,”wb\"); fwrite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp)

fp=fopen( \"d2。dat”,”rb”) ; fread(a,sizeof(int), 10, fp); fclose( fp);

for( i=o;i<10;i++)

printf( “%d, “, a[i]) ; }

运行结果是

A、 1,2,3,1, 2,3,0,0,0,0, B、 1,2,3,0,0,0,0,0,0,0,0, C、 123,0,0,0,0,123, 0,0,0, 0 D、 1,2,3,0,0,1,2,3,0,0, 标准答案: D 469、有以下程序 struct st

{ int x, int *y; } *pt; int a[]={1,2},b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c; - —98—

以下选项中表达式的值为 11的是

A) pt->x B) (pt++)->x C) ++pt-〉x D) *pt—〉y 标准答案: c 470、有以下程序 #includestruct S{ int n; int a[20];}; void f(int *a, int n) { int i

for (i=0; i〈n-1;i++) printf(“%d,”,s。a[i]); }

程序运行后的输出结果是

A、 1,2,3,6,8,7,5,4,10,9 B、 2,4,3,9,12,12, 11,11,18,9, C、 3,4,2,7,9,8,6,5,11,10 D、 2,3,1,6,8,7,5,4,10,9 标准答案: B 471、有以下程序 #include〈stdio.h> #include〈string.h>

typedef struct{char name[9]; char sex ;float score[2];}STU; void f(STU a) {

STU b={“zhao\, 85.0,90。0}; int i;

strcpy( a。name,b。name) ; a. sex=b.sex;

b. for (i=0;i〈2;i++) a。 score[i]=b.score[i]; }

main() {

STU c={“Qian“,’f’,95.0,92.0}; f(c);

printf(“%s,%c,%2.0f,%2.0f\\n”,c。name,c。sex,c。score[0], c.score[1]); }

程序的运行结果是 A、 Qian,m,85,90 B、 Zhao,m,85,90 C、 Qian,f,95,92 D、 Zhao,f,95,92 标准答案:C 472、有以下程序

#includeint a=3,s,t; s=f(a+1); t=f(a+1);

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

程序运行后的输出结果是 A、 10,64 B、 64, 64 C、 10,10 D、 64,10 标准答案: A 473、有以下程序 #include main() {

chara=4;

printf(“%d\\n”,a=a〈〈1); }

程序的运行结果是

A、 8 B、 4 C、 40 D、 16 标准答案: A

474、 设文件指针fp已定义, 执行语句fp=fopen(“file”,”w”);后,操作叙述的选项中正确的是

A、写操作结束后可以从头开始读 B、可以随意读和写 C、只能写不能读

D、可以再原有内容后追加写 标准答案: C

475、以下结构体类型说明和变量定义中正确的是

file 以下针对文本文件A、 struct

{intn; char c; }REC; REC t1, t2; B、 typedef struct

{intn; char c; }REC; REC t1, t2; C、 struct REC {intn; char c; }; REC t1, t2;

D、 typedef struct REC;

{intn=0; char c=‘A’; } t1, t2; 标准答案: B

476、假定已建立以下链表结构,且指针p和q已指向如图所示的结点: 则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是 A、 p=q—〉next ;free(q); - —100- B、 (*p).next=(*q)。next; free(p); C、 p—〉next=q—>next; free(q); D、 p=q; free(q); 标准答案: C 477、有以下程序 #include 〈stfio.h〉 #include〈string。h> structA { int a; char b[10]; double c; };

viod f (structA t); main() {

StructA a={1001,”ZhangDa”,1098.0}; f(a);

printf(“%d,%s,%6。1f\\n”,a.a,a。b,a。c); }

viod f(structA t) {

t.a=1002;

strcpy(t.b,”ChangRong”); t.c=1202.0; }

程序运行后的输出结果是:

A、 1002, ChangRong, 1202。0 B、 1002, ZhangDa, 1202。0

C、 1001, ChangRong, 1098.0 D、 1001, ChangRong, 1098。0 标准答案: D 478、有以下程序 #include〈stdio。h〉 #define N 5 #define M N+1

#define f(x) (x+M) main() { int i1, i2; i1=f( 2); i2=f( 1+1)

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

程序的运行结果是 A、 12 7 B、 11 7 C、 11 11 D、 12 12

标准答案: B - -101- 479)有以下程序 #include main() {

inta=5,b=1,t; t=(a<<2)|b;

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

程序运行后的输出结果是 A、 11 B、 21 C、 6 D、 1

标准答案: B

480)设 fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof( fp) 的返回值为: A、 0

B、 NULL C、非0值 D、 ‘\\0’

标准答案: C

481)有以下定义和语句 structworkers

{intnum; char name[20];char c;

struct

{intday ;intmonth; intyear ;} s; };

structworkers w,*pw; pw=&w;

能给w中year成员赋1980的语句是 A、 pw->year=1980; B、 *pw.year=1980; C、 w.s.year=1980; D、 w。year=1980; 标准答案: C

482)以下叙述错误的是

A、可以通过typedef增加新的类型

B、用typedef定义新的类型名后,原有类型名仍有效

C、可以用typedef将已存在的类型用一个新的名字来代表 D、用typedef可以为各个类型其别名,但不能为变量起别名 标准答案: A 483)有以下程序

#include<。stdio。h> structtt

{ int x; struct tt *y;} *p;

struct tt a[4]={20,a+1,15,a+2,30,a+317,a}; main() {inti;

p=a; - —102-

for(i+1;i<=2;i++){printf(“%d,”,p—>x);p=p->y;} }

程序的运行结果是 A、 30, 17 B、 20, 30 C、 15, 30 D、 20, 15 标准答案: 10 484、有以下程序 #include〈stdio。h> main() {

structSTU{char name[9]; char sex;double score[2];}; structSTUa={“Zhao”,’m’85。0,90。0},b={“Qian”,’f’,95.0,92.0}; b=a;

printf(“%s,%c,%2.0f\\n”,b。name,b.sex,b.score[0],b.score[1]); }

程序的运行结果是 A、 Qiao, m, 85, 90

B、 Zhao, m, 85, 90 C、 Qian, f, 95, 92 D、 Zhao, f, 95, 92 标准答案: B

485)以下叙述错误的是

A、 C程序对预处理命令行的处理是在程序执行的过程中进行的 B、在程序中凡是以“#”开始的语句行都是预处理令行 C、 #defineMAX 是合法的宏定义命令行 D、预处理命令行的最后不能以分号表示结束 标准答案: A 486)有以下程序 #include〈stdio.h> main() {

FILE *f

f=fopen(“filea.txt\",’w’); fprintf(f,\"abc\"); fclose(f); }

若文本文件filea.txt中原有内容为: hello,则运行以上程序后,文件filea。txt中的内容为: A、 abc B、 helloabc C、 abchello D、 abclo 标准答案: A

487)设有定义:

struct{char mark[12];intnum1; doublenum2;} t1,t2; 若变量均已正确赋初值,则以下语句中错误的是 A) t2, mark=t1.mark; B) t2, num2=t1。num2; C) t1=t2 - -103-

D) t2。num1=t1.num1; 标准答案: A 488)有以下程序 #include〈stdio。h〉 #include〈string。h> structA

{inta;charb[10]; double c;}; void f(structAt) main()

{structA a={1001,”ZhangDa”,1098.0}; f(a);printf(“%d,%s,%6。1f\\n”, a.a, a。b, a.c); }

void f( structAt)

{t.a=1002; strcpy( t.b, “ChangRong”); t。c=1202.0; } 程序运行后的输出结果是

A、 1001, changRong, 1098。0 B、 1001, ZhaoDa, 1098。0 C、 1002, ZhaoDa, 1202。0 D、 1002, ChangRong. 1202。0 标准答案: B

489)有以下程序 #include #includetypedef struct{char name[9]; charsex; floatscore[2];}STU; STUf ( STUa)

{ STU b={“Zhao”, ‘m', 85。0,90。0}; int i; strcpy( a.name,b。name) ; a. sex=b.sex;

for(i=0;i<2;i++) a。score[i]=b。score[i]; returna; }

main()

{STUc={“Qian\", ’f’,95.0,92.0},d; d=f( c);

printf( “%s, %c, %2.0f, %2。0f\\n ”,d。name,d。sex,d。score[1]) ; }

程序的运行结果是

A、 Qian, m, 85, 90 B、 Zhao, f, 95, 92

C、 Qian, f, 95, 92 D、 Zhao, m, 85, 90 标准答案: D

490)若程序中有宏定义行: #defined N 100

则以下叙述中正确的是

A、 在运行时用100替换标识符N

B、 宏定义行中定义了标识符N的值为整数100 C、 上述宏定义实现将100赋值给标识符N

D、 在编译程序对C源程序进行预处理时用100替换标识符N — —104— 标准答案: D

491)若变量已正确定义,则以下语句的输出结果是 s=32; s^=32;

printf(“%d”,s); A、 0 B、 32 C、 1

D、 —1 标准答案: A

492)有以下程序 #incluede main() {

FILE *fp ; charstr[10];

fp=fopen(“myfile。dat”,“w\"); fputs( “abc”, fp); fclose( fp);

fp=fopen(“myfile.dat”,“a+”); fprintf( fp, %d, 28); rewind( fp);

fscanf( fp, “%s”, str); puts( str); fclose( fp); }

程序运行后的输出结果是 A、 因类型不一致而出错 B、 abc C、 28c D、 abc28 标准答案: D 493)若以下程序 #include〈stdio.h〉 #define S( x) x*x

#defineT( x) S( x) *S(x) main()

{int k=5,j=2;

printf(“%d,%d\\n”, S( k+j), T( k+j)}

则程序的输出结果是 A、 17, 37 B、 17, 289 C、 49, 289 D、 49、 2401 标准答案: A 494)有以下程序 #include #includestructstu{ char *name,gender; — -105- int score; };

) main()

{ struct stu a={NULL,'m’,290},b; a. name=(char *)malloc(10); strcpy(a.name,”Zhao\");

b=a; b.gender = ‘f’;b。score =350; strcpy(b.name,” Qian”)

printf(“%s,%c, %d”,a.name,a. gender,a。score); printf(“%s,%c, %d\\n”,b.name, b. gender,b.score); } }

程序运行后的输出结果是 A) Qian,m,290,Qian,f,350 B) Zhao, m,290, Qian, f,350 C) Zhao,m,290, Zhao, f,350 D) Qian, f,350, Qian, f,350 标准答案: A 495)有以下程序 #include #include〈stdlib.h> #includetype struct stu{ char *name,gender; int score; }STU;

void f(char * p) {

p=(char *)malloc(10); strcpy(p,\" Qian”); }

main()

{ STU a={NULL,’m’,290},b; a。name=(char *)malloc(10); strcpy(a.name,”Zhao”); b=a;

f(b。name);

b.gender = ‘f’;b.score =350;

printf(“%s,%c, %d”,a.name,a。 gender,a。score); printf(“%s,%c, %d\\n\。name, b. gender,b。score); } }

程序运行后的输出结果是

A) Zhao, m,290,Qian,f,350 B) Qian,f,350, Qian, f,350 C) Zhao,m,290, Zhao, f,350 D) Qian, m,290 Qian, f,350

标准答案: C — -106— 496 )若有定义 typedef int* T; T a[10];

则a的定义与下面哪个语句等价 A) int*a[10]; B) inta[10]; C) int(*a)[10]; D) int*a; 标准答案: A 497)如有以下程序: #include 〈stdio.h〉 main() {intc; c=10^5;

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

则程序的输出结果是 A、 5 B、 105 C、 10000 D、 15

标准答案: D

498、若有以下程序 #include main()

{FILE *fp;

inti;a[6]={1,2,3,4,5,6},k; fp=fopen(“data.dat\); for(i=0;i〈6;i++)

{fseek(fp,0L,0); fprintf(fp,”%d\\n”,a[i]);} rewind(fp); fscanf(fp,%d,&k); fclose(fp);

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

则程序的输出结果是 A、 6 B、 1

C、 123456 D、 21

标准答案: A

499、若有以下程序 #include

#defineS(x) (x)*(x) define T(x) S(x)/S(x)+1 main()

{intk=3,j=2;

printf(“%d,%d\\n\",S(k+j),T(k+j)); — -107- }

则程序的输出结果是 A、 11,12 B、 11,2 C、 25,2 D、 25,26 标准答案: D

500、若有以下程序 #includecharname[10],gender; intscore; }STU;

viodf(STUa,,STUb) {b=a;

printf(“%s,%c,%d,”,b。name,b.gender。b.score); } main()

{STUa={“Zhao”,’m’,290},b={“Qian”,’f',350}; f(a,b);

printf(“%s,%c,%d\\n”,b。name,b.gender,b.score); }

则程序的输出结果是

A、 Qiao, f, 350, Qian, f, 350 B、 Zhao, m, 290, Zhao, m, 290

C、 Zhao, m, 290, Qian, f, 350 D、 Zhao, m, 290, Zhao, f, 350 标准答案: C

501、若有以下程序 #include typedefstructstu{

charname[10],gender; intscore; }STU;

viod f(char *p)

{strcpy(p,”Qian”);} main()

{STUa={“Zhao”,’m’,290},b;

b=a;

f(b。name);

b。gender=’f’; b.score=350;

printf(“%s,%c,%d,”,a。name,a.gender,a。score); printf(“%s,%c,%d\\n”,b.name,b.gender,b.score); }

则程序的输出结果是

A、 Zhao, m, 290, Zhao, f, 350 B、 Zhao, m, 290, Zhao, m, 290

C、 Qian, f, 350, Qian, f, 350 - -108- D、 Zhao, m, 290, Qian, f, 350 标准答案: D 502)若有定义 typedef char T[10]; T *a;

上述定义中的a 的类型与下面选项中完全相同的是 A、 char *a;

B、 char ( *a) [10]; C、 char a[10]; D、 char *a[10]; 标准答案: D

503)若有以下程序 #include main() { intc; c=13|5;

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

则程序的输出结果是 A、 13 B、 5 C、 18 D、 15

标准答案: A

504、若有以下程序 #include FILE *fp;

int i , a[6]={1,2,3,4,5,6},k; fp=fopen(“data.dat\); for( i=0; i<6;i++) {fseek(fp,0L,0);

fwrite( &a[5—i],sizeof(int),1,fp) ;

rewinf(fp);

fread(&k,sizeof(int),1,fp); fclose(fp); printf(“%d”,k); }

则程序的输出结果是 A、 6 B、 21 C、 123456 D、 1

标准答案: D

505)为了建立如图所示的存储结构(即每个结点含两个域,点的指针域),则在【 】 处应填入的选项是

struct link { chardata; 【 】} node; - -109— data next

A、 link *next;

B、 struct link*next; C、 struct link next; D、 link next; 标准答案: B

506)以下结构体说明和变量定义中,正确的是 A、 typedef structabc{ intn; double m;} ABC; B、 struct ABC { int n; double m;} struct ABC x, y;

C、 struct abc{ int n; double m;} struct abc x, y;

D、 struct abc{ int n; double m;} abc x, y; 标准答案: A 507)有以下程序 #includeviod fun(int*p1, int*p2,int *s)

{ s=(int* )malloc(sizeof(int)); *s=*p1+*(p2++); }

main()

{ inta[2]={1,2},b[2]={10,20}, *s=a; fun(a,b,s); printf( “%d\\n”,*s) ; }

程序运行后的输出结果是 A、 2

data 是数据域,next 是指向结 B、 10 C、 11 D、 1

标准答案: D 508)以下程序依次把终端输入的字符存放到f 文件中,用#作为结束输入的标志,则在横线处应填入

#include〈stdio.h> main()

{FILE *fp; char ch; fp=fopen(“fname\",”w\"); while((ch=getchar())!=’#’)fputc( ); fclose(fp); }

A、 ch, “fname” B、 ch, fp C、 ch

D、 fp, ch 标准答案: B 509、有以下程序 #include#define M N+1 — -110—

#define NUM ( M+1) *M/2 main()

{printf( “%d\\n\) ;} 程序运行后的输出结果是 A、 4 B、 6 C、 9 D、 8

标准答案: D 510、有以下程序 #includeprintf( “%d\\n”,i) ; }

程序运行后的输出结果是 A、 1 B、 8 C、 0 D、 —1

标准答案: D

511)有以下程序段 int*p;

p=___________malloc(sizeof(int));

若要求使p指向一个int的动态存储单元,在横线处应填入的是 A) int* B)int C)(*int) D)(int*) 标准答案: D 512)有以下程序 #include#defineSUB(X,Y) (X+1)*Y main()

{inta=3,b=4;

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

程序运行后的输出结果是 A)25 B) 16 C)12 D)20 标准答案: B 513、有以下程序 #includechar c[2][5]={“6938”,”8254\"},*p[2]; int i,j,s=o;

for(i=0;i<2;i++) p[i]=c[i]; for(i=0;i<2;i++) for(j=0;p[i][j]〉0;j+=2) s=10*s+p[i][j]-‘0’ ; printf(“d%\\n,s); — —111— }

程序运行后输出的结果是

A、 4528 B、 9824 C、 6385 D、 6938 标准答案: C

514)若有以下程序段

struct st{intn;structst *next;};

struct st a[3]={5,&a[1],7,&a[2],9,'\\0’},*p; p=&a[0];

则以下选项中值为6的表达式是 A)( *p) 。n B)p——>n++ C)p—-〉n D)++(p-—〉n) 标准答案: D 515) 有以下程序 #include〈stdio.h〉 main() {inti=1; i=i^i;

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

程序运行后的输出结果是 A) 7 B) -1 C) 1 D) 0 标准答案: D

516)以下程序用来统计文件中字符的个数(函数feof用以检查文件是否结束,结束时返回非零) #include〈stdio。h> main()

{FILE*fp;longnum=0;

fp=fopen(“fname。dat\",\"r”); while(_________){fgerc(fp);num++;} printf(“num=%d\\n”,num); fclose(fp); }

程序运行后的输出结果是

A) !feof(fp) B) feof(fp) C) feof(fp)==NULL D) feof(fp)==0 标准答案: B

517)下面选项中关于编译预处理的叙述正确的是 A)预处理命令行不能出现在程序的最后一行

B)凡是以#号开头的行,都被称为编译预处理命令行 C)预处理命令行必须使用分号结尾

D)预处理命令行的作用域是到最近的函数结束处 标准答案: B

518)以下叙述中正确的是

A)使用typedef说明新类型名时,其格式是: typedef 新类型名 原类型名 B)在使用typedef改变原新类型的名称后,只能使用新的类型名 C)使用typedef说明新类型名时,后面不能加分号 D)在程序中,允许用typedef来说明一种新的类型名 标准答案: D

519)以下叙述中正确的是

A)结构体类型中各个成分的类型必须是一致的

B)在定义结构体类型时,编译程序就为它分配了内存空间

C)结构体类型中的成分只能是C语言中预先定义的基本数据类型 - —112— D)一个结构体类型可以由多个称为成员(或域)的成分组成 标准答案: D

520)以下叙述中正确的是

A)元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义 B)结构体类型中的各个成分均不能是数组或指针

C)使用typedef定义新类型名后,新类型名与原类型名实际上是等价的 D) 结构体类型的变量,不能在声明结构体类型组成时一起定义 标准答案: C

521下面选项中关于位运算叙述中正确的是 A)右移运算时,高位总是补0

B)位运算的对象只能是整型或字符型数据 C)左移运算的结果总是原操作数据2倍 D) 位运算符都需要两个操作数

标准答案: B

522)下面选项中关于“文件指针”概念的叙述正确的是

A) 文件指针就是文件位置指针,表示当前读写数据的位置

B)把文件指针传给fscaf函数,就可以向文本文件中写入任意的字符 C)文件指针指向文件在计算机中的存储位置 D) 文件指针是程序中用FILE定义的指针变量 标准答案: D

523)以下叙述中正确的是

A)在包含文件中,不得再包含其他文件

B) #include命令行不能出现在程序文件的中间

C)虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接 D)在一个程序中,允许使用任意数量的#include命令行 标准答案: D

524)以下叙述中正确的是

A)函数的返回值不能结构体类型

B)结构体数组不能作为参数传给函数

C)在调用函数时,可以将结构体变量作为实参传给函数 D)函数的返回值不能是结构体指针类型 标准答案: C

525)以下叙述中正确的是

A)结构体变量的地址不能作为实参传给函数 B)结构体数组名不能作为实参传给函数

C)即使是同类型的结构体变量,也不能进行整体赋值 D) 结构体中可以含有指向本结构体的指针成员 标准答案: D

526)设有如下的说明和定义 struct{ inta;

char*s;}x,*p=&x; x,a=4;

x,s=\"hello”;

以下叙述中正确的是

A)语句++p->a;的效果是使成员a增1

B)语句*p-〉s++;等价于( *p) ->s++;

C)(p++)-〉a与p++->a都是合语法的表达式,但二者不等价 D)语句++ p—>a;的效果是使p增1 — -113- 标准答案: A

527)下面关于位运算符的叙述,正确的是 A)||表示“按位或”的运算 B)~表示“按位异或\"的运算 C)# 表示“按位异或”的运算 D)& 表示“按位与”的运算 标准答案: D

528)下面关于“EOF”的叙述,正确的是

A) EOF的值等于 0

B) EOF是在库函数文件中定义的符号常量

C)对于文本文件, fgetc函数读入最后一个字符时,返回值是 EOF D)文本文件和二进制文件都可以用 EOF作为文件结束标志 标准答案: B 529)有以下程序 #include #define SQR(X) X*X main() {

int a=10,k=2,m=1;

a/= SQR(k+m)/ SQR(k+m); printf(“%d\\n\); }

程序运行后的输出结果是 A) 1 B) 9 C) 10 D) 0 标准答案: A 530)有以下程序 #include〈stdio。h〉 main()

{ char x=2,y=2,z; z=(y<〈1)&(x〉>1); printf(“%d\\n\}

程序运行后的输出结果是 A) 0 B) 1 C) 8 D) 4 标准答案: A

531、有以下程序 #include{ struct S a, *p=&a; a。 a=99;

printf(“%d\\n\"______)

程序要求输出结构体重成员a数据,以下不能填入横线处的内容是 A、*p.a B、p—>a C、(*p)。a D a.a 标准答案:A

532、有以下程序 - -114— #include〈stdio.h〉 #include〈stdlib。h〉

void fun( double *p1,double *p2,double *s)

{ double a[2]={1。1,2。2,},b[2]={10。0,20。0},*s=a; fun(a,b,s);

printf(“%5。2f\\n\",*s);

}

程序输出结果是

A、1.10 B、21.10 C、12.10 D、11。10 正确答案:A

533、若已建立以下链表结构,指针p、s分别指向如图所示结点 则不能将s所指结点插入到链表末尾的语句组是 A、 s—〉next=’\\0’;p=p—>next;p—〉next=s;

B、 p=( *p) .next;(*s)。next; (*p).next=s; C、 p=p->next; s—->next =p-〉next; p—>next=s D、 p=p—〉next; s——>next =p; p->next=s 标准答案D

534、若fp定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是

A、 EOF B、 0 C、非0 D、 —1 标准答案B

535、有以下程序 #includevoid fun( int *p1,int *p2,int *s) { s=(int*)calloc(1,sizeof(int)); *s=*p1,+*p2; free(s); }

main()

{ int a[2]={1,2},b[2]={40,50},*q=a; fun(a,b,q); printf(“%\\n”,*q); }

程序运行后的输出结果是 A、41 B、0 C、42 D、1 a b c NULL p s - —115- 标准答案: D 536、有以下程序

#include〈stdio。h〉

struct STU {char name[9]; char sex ;float score[2];}; void f(structSTU a[])

{ struct STU b={“zhao”,‘m’, 85,90}; a[1]=b; }

main()

{ struct STU c[2]={{“qian”,’f’,95,92},{“Sun”,'m’,98,99}}; f(c)

printf(“%s,%c,%d,%d”,c。[0]name, c[0]。sex, c[0].score[0], c[0]。score[1]);

printf(“%s,%c,%d,%d\\n”,c。[0]name, c[0]。sex, c[0]。score[0], c[0].score[1]); }

程序的运行结果是 A

因篇幅问题不能全部显示,请点此查看更多更全内容

Top