文档库 最新最全的文档下载
当前位置:文档库 › C语言练习题(谭浩强第四版)..附有答案 (1)

C语言练习题(谭浩强第四版)..附有答案 (1)

一、选择题

1、一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:()

A、任意

B、第一个函数必须是主函数,其他函数任意

C、必须完全按照执行的顺序排列

D、其他函数可以任意,主函数必须在最后

2、下列四个叙述中,正确的是:()

A、C程序中的所有字母都必须小写

B、C程序中的关键字必须小写,其他标示符不区分大小写

C、C程序中的所有字母都不区分大小写

D、C语言中的所有关键字必须小写

3、下列四个叙述中,错误的是:()

A、一个C源程序必须有且只能有一个主函数

B、一个C源程序可以有多个函数

C、在C源程序中注释说明必须位于语句之后

D、C源程序的基本结构是函数

4、下面不是C语言合法标识符的是:()

A、abc

B、5n

C、_4m

D、x3

5、以下叙述不正确的是:()

A. 分号是C语句的必要组成部分

B. C程序的注释可以写在语句的后面

C. 函数是C程序的基本单位

D. 主函数的名字不一定非用main来表示

6、C语言中允许的基本数据类型包括:()

A. 整型、实型、逻辑型

B. 整型、实型、字符型

C. 整型、字符型、逻辑型

D. 整型、实型、逻辑型、字符型

7、C语言中能用八进制表示的数据类型为:()

A、字符型、整型

B、整形、实型

C、字符型、实型、双精度型

D、字符型、整型、实型、双精度型

8、下列属于C语言合法的字符常数是:()

A、’\97’

B、”A”

C、’\t’

D、”\0”

9、在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:()

A、char

B、char=int

C、char

D、char=int=

10、若有以下定义语句char c1=’b’, c2=’e’;

printf(“%d,%c\n”,c2-c1,c2-‘a’+’A’);则输出结果是:()

A、2,M

B、3,E

C、2,E

D、输出项与相应的格式控制不一致,输出结果不确定

11、以下合法的赋值语句是:()

A、x=y=100

B、d--;

C、x + y

D、c = int(a+b);

12、在以下一组运算符中,优先级最高的是:()

A、<=

B、==

C、%

D、&&

13、下列能正确表示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

14、下列只有当整数x为奇数时,其值为“真”的表达式是:()

A、x%2==0

B、!(x%2==0)

C、(x-x/2*2)==0

D、!(x%2)

15、设a为整型变量,不能正确表达数学关系10

A、1 0< a < 15

B、!(a<=10 || a>=15)

C、a>10 && a<15

D、!(a<=10) && !(a>=15)

16、已知x=43, ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是:()

A、0

B、语法错

C、1

D、“假”

17、表达式17%4 /8的值为:()

A、0

B、1

C、2

D、3

18、一个可执行的C程序的开始执行点是:()

A. 程序中的第一个语句

B. 包含文件中的第一个函数

C. 名为main的函数

D. 程序中的第一个函数

19、组成C语句的一个必不可少的符号是:()

A. 逗号

B. 引号

C. 冒号

D. 分号

20、若将int、long、float等类型的数据进行混合运算,其结果的数据类型是:()

A. int

B. long

C. float

D. double

21、下述是C语言中有关变量定义的几个说法,正确的是:()

A. 变量可以不定义直接使用

B. 一个说明语句只能定义一个变量

C. 几个不同类型的变量可在同一语句中定义

D. 变量可以在定义时进行初绐化

22、与x * = y + z等价的赋值表达式是:()

A. x = y + z

B. x = x * y + z

C. x = x * (y + z)

D. x = x + y * z

23、当代电子计算机能够自动地处理指定的问题是因为:()

A.计算机是电动的B.有解决该问题的计算机程序

C.事先存储了解决该问题的程序D.以上都不是

24、以下叙述中最准确的是:()

A.计算机程序是处理某一问题所有指令的集合

B.计算机程序是处理某一问题所用到的所有数据的集合

C.计算机程序是处理某一问题的所有指令及其数据的集合

D.计算机程序是处理某一问题的所有指令及其数据的有序集合

25、目前编写计算机程序一般采用的是:()

A.机器语言B.汇编语言C.高级语言D.英语

26、设计一个计算机程序最基本的工作是:()

A.制定正确的算法B.选择合理的数据结构

C.制定正确的算法和选择合理的数据结构D.以上都不是

27、算法具有五个特性,以下选项中不属于算法特性的是:()

A.有穷性B.简洁性C.可行性D.确定性

28、下述哪一个不是结构化程序基本结构:()

A.顺序B.选择C.循环D.嵌套

29、C语言是一种:()

A.机器语言B.汇编语言C.高级语言D.以上都不是

30、C语言源程序的扩展名为:()

A..exe B..c C..obj D..cpp

31、C程序编译、连接后最终产生(即计算机执行)的文件的扩展名为( )

A..exe B..c C..obj D..cpp

32、构成C语言源程序的基本单位是:()

A.子程序B.过程C.文本D.函数

33、下列叙述正确的是:()

A.C语言源程序可以直接在DOS环境中运行

B.编译C语言源程序得到的目标文件可以直接在DOS环境中运行

C.C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行

D.C语言源程序可以直接在VC++环境中运行

34、某C程序由一个主函数main()和一个自定义函数max()组成,则该程序:()

A.写在前面的函数先开始执行B.总是从main()函数开始执行

C.总是从max()函数开始执行D.写在后面的函数先开始执行

35、以下叙述不正确的是:()

A.分号是C语句的必要组成部分B.C程序的注释可以写在语句的后面

C.函数是C程序的基本单位D.主函数的名字不一定用mian表示

36、以下为C语句的是:()

A.a=8 B.a++;C.if(a>8) D. #include

37、以下所列语句中,合法的语句是:( )

A.a=1,b=2 B.++a; C.a=a+1=5 D.y=int(a);

二、判断题

1.( T )C语言是严格区分大写和小写的,因此主函数不能写成main()以外的其他形式。

2.( F )C语言程序是从源文件的第一条语句开始执行的。

3.( F )C语言对其数据在内存中所占用的实际字节数是有明确规定的。

4.( F )C语言中/*..*/之间的注释内容是不能跨行的。

5.( F )C语言中多个以“;”结束的语句不能放在同一行。

6.( F )变量说明语句int a=b=c=23;是正确的。

7.( F )字符型数据不可以和整数数据一起进行算术运算。

8.( T )C语言中强制类型转换不会改变原变量的原有数据类型。

9.( F )表达式j=-i++和j=-(i++)不相等

10.( T )程序段:i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);其结果9,10,9,10.

11.( F )C语言中放在“”之间的内容都被视为字符串的一个构成部分,都可以在屏幕上

原样显示。

12.( T )计算机程序的执行过程实际上是对程序所表达的数据进行处理的过程。

13.( T )目前程序设计的理念已经从“面向过程的程序设计”向“面向对象的程序设计”

方面转变。

14.( T )有人曾提出:计算机程序=算法+数据结构。

15.( T )在程序设计中提到的算法就是“解决问题的方法和步骤”

16.( T )在程序设计中提到的数据结构就是“程序处理的对象的表示方法”

17.( T )计算机程序的算法就是解决“做什么”和“怎么做”的问题。

18.( T)结构化程序设计的基本理念是:将一个较大的问题细分成若干个较小问题的组合。

19.( F )C程序的执行是从程序的第一行开始,一直到程序的最后一行结束。

20.( T )C程序的执行是从主函数的第一行开始,一直到主函数的最后一行结束。

21.(T)设x、t均为int型变量,则执行语句"x = 10;t = x && x > 10;"后,t的值为0

22.( T )若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值

不变

23.( T )在C程序中,%是只能用于整数运算的运算符

24.( T )在C语言中,逻辑“真”等价于不等于0的数

25.( F )C语言中字符型、整型、实型都能用八进制表示

26.( T )变量的三要素是:变量名、变量类型、变量的值。

书上必会的题:课后题:第三章P83-4,6,7

一、选择题

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

A)C语言程序总是从第一个的函数开始执行

B)在C语言程序中,要调用函数必须在main()函数中定义

C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

2.算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性

的是()。

A)有零个输入或多个输入B)高效性

C)有穷性D)确定性

3.C语言中用于结构化程序设计的3种基本结构是

A)顺序结构、选择结构、循环结构B)if,switch,break

C)for,while,do-while D)if,for,continue

4.一个C程序的执行是从()。

A)main()函数开始,直到main()函数结束

B)第一个函数开始,直到最后一个函数结束

C)第一个语句开始,直到最后一个语句结束

D)main()函数开始,直到最后一个函数结束

5.组成C程序的基本单位是()。

A)函数B)标识符C)表达式D)语句

6.若有语句scanf(“%d%d”,&a,&b);要使变量a,b分别得到12和34;正确的输入

形式为()。

A)12<空格>34<回车> B)12,34<回车>

C)1234<回车> D)12:34<回车>

7.C语言中最简单的数据类型包括()。

A)整型、实型、逻辑型

B)整型、实型、字符型

C)整型、字符型、逻辑型

D)字符型、实型、逻辑型

8.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()。

A)必须为字母B)必须为下划线

C)必须为字母或下划线D)可以是字母,数字和下划线中任一字符

9.下列可用于C语言用户标识符的一组是()。

A)void, define, WORD B)a3_b3, _123,Car

C)For, -abc, IF Case D)2a, DO, sizeof

10.C语言中运算对象必须是整型的运算符是()。

A)%=B)/ C)= D)<=

11.设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据

类型为()。

A)int B)float C)double D)不确定

12.在C语言中,char型数据在内存中的存储形式是()。

A)补码B)反码C)原码D)ASCII码

13.设int类型的数据长度为2字节,则该类型数据的取值范围是( )。

A) 0至65536 B) 0至65535

C) -32767至32768 D) -32768至32767

14. x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

A)INPUT x、y、z;

B)scanf("%d%d%d",&x,&y,&z);

C)scanf("%d%d%d",x,y,z);

D)read("%d%d%d",&x,&y,&z);

15.调用getchar和putchar函数时,必须包含的头文件是

A)stdio.h B)stdlib.h C)define D)以上都不对

16.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是

A)a>=10 or a<=0 B)a>=0|a<=10

C)a>=10 &&a<=0 D)a>=10‖a<=0

17.若变量c为char类型,能正确判断出c为小写字母的表达式是

A)′a′<=c<=′z′ B)(c>=′a′)||(c<=′z′)

C)(′a′<=c)and(′z′>=c)D)(c>=′a′)&&(c<=′z′)

18.若运行时给变量x输入12,则以下程序的运行结果是

main()

{int x,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

printf("%d\n",y);

}

A)0B)22 C)12 D)10

19.已知char ch=′C′;则以下表达式的值是ch=(ch>=′A′ && ch<=′Z′)?(ch+32):ch;

A)A B)a C)Z D)c

20.请阅读以下程序:

main()

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

if(a=b+c)

printf("***\n");

else

printf("$$$\n");

}

以上程序

A)有语法错不能通过编译B)可以通过编译但不能通过连接

C)输出*** D)输出$$$

21.若int k=8;则执行下列程序后,变量k的正确结果是

main()

{int k=8;

switch(k)

{case 9:k+=1;

case 10:k+=1;

case 11:k+=1;break;

default:k+=1;}

printf("%d\n",k);}

A)12 B)11 C)10 D)9

22.阅读如下程序段

#include "stdio.h"

main()

{ int a=45,b=40,c=50,d;

d=a>30?b:c;

switch(d)

{ case 30 : printf("%d,",a);

case 40 : printf("%d,",b);

case 50 : printf("%d,",c);

default : printf("#");}}

则输出的结果是

A)40,50, B)50,# C)40,# D)40,50,#

二、填空题

1.用高级语言编写的程序称为(源)程序,它可以通过解释程序翻译一句执行一句的方式

执行,也可以通过编译程序一次翻译产生目标程序,然后执行。

2.C语言中的标识符只能由字母、下划线和(数字)组成。

3.C语言源程序注释符号有两种,(/*……*/ )用于块注释,(//)用于行注释。

4.源程序test.c经编译产生的目标文件是:( test.obj );经连接处理后,产生的可执

行文件是:( test.exe)。

5.C标准库函数中,数学函数的原型在(math.h )头文件中。

6.如下语句printf("%c\n",′B′+35);在执行后的输出结果是(e )。

7.下列程序的输出结果是 ( 1.300000,1.300000) 。

#include

#include

int main()

{ float a=-1.3;b=1.3;

printf("%f,%f",fabs(a),fabs(b));

return 0;

}

8.将以下程序写成三目运算表达式是( max = a>b ? a : b)。

if(a>b)max=a;

else max=b;

9.若从键盘输入58,则以下程序输出的结果是( 585858) 。

main()

{ int a;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);}

10.阅读下面的程序,当程序在执行时,如果输入的是′A′,则输出结果为( ABother) 。

#include "stdio.h"

main()

{ char a;

a=getchar();

switch(a)

{ case 65: printf("%c",′A′);

case 66: printf("%c",′B′);

default :printf("%s\n","other");

}

}

三、判断题

1.( F )一个程序只能由一个C程序文件组成。

2.( T )一个C程序文件是由一个或多个函数组成的。

3.( T )一个程序必须包含一个main函数。

4.( F )main函数必须写在一个C程序文件的最前面。

5.( F )C程序的执行从程序头开始。

6.( F )函数体不可以为空。

7.( F )C程序的注释只能是一行。

8.( F )C程序中的数据声明和语句必须用“。”结束。

9.( F )C程序一行只能写一条语句。

10.( F )在C程序中,符号“Sum”和“sum”相同。

第三章顺序结构

一、选择题

1.下面程序的输出是:()

main()

{ int k=11;

printf("k=%d,k=%o,k=%x\n",k,k,k);

}

A) k=11,k=12,k=13 B) k=11,k=13,k=13

C) k=11,k=013,k=oXb D) k=11,k=13,k=b

2.以下合法的C语言赋值语句是:()

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

3.以下程序的输出结果是:()

main()

{ int x=10,y=3;

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

}

A)0 B)1 C)3 D)不确定

4.若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是:()

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

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

5.执行下面程序段后,c3中的值是:()

int c1=1 , c2=2 , c3;

c3=c1/c2;

A)0 B)1/2 C)0.5 D)1

6.以下程序段的输出是:()

float a=57.666;

printf(“*%4.2f*\n”, a);

A)*57* B)*58* C)*57.66* D)*57.67*

7.若有以下定义和语句:()

int a=5,b

b=a++;

此处b的值是:()

A) 7 B) 6 C) 5 D) 4

8.以下程序的输出结果是:()

main()

{ int x=10,y=10;

printf("%d%d\n",x--,--y);

}

A) 10 10 B) 9 9 C) 9 10 D) 10 9

9.已知字符A的ASCII码为十进制的65,下面程序的输出是:()

main()

{

char ch1,ch2;

ch1='A'+'5'-'3';

ch2='A'+'6'-'3';

printf("%d,%c\n",ch1,ch2);

}

A) 67,D B) B,C

C) C,D D) 不确定的值

10.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是:() main()

{

int x;

scanf("%d",&x);

if (x++>5)

printf("%d",x)

else

printf("%d\n",x--);

}

A) 7和5 B) 6和3 C) 7和4 D) 6和4

11.若执行下面的程序从键盘输入3和4,则输出是:()

main()

{ int a,b,s;

scanf("%d%d",&a,&b);

s=a;

if (a

s=s*s;

printf("%d\n",s);

}

A) 14 B) 16 C) 18 D) 20

12.设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值

scanf("i=%d,f=%f",&i,&f);

为了把100和765.12分别赋给i和f,则正确的输入为:()

A) 100<空格>765.12<回车> B) i=100,f=765.12<回车>

C) 100<回车>765.12<回车> D) x=100<回车>,y=765.12<回车>

二、判断题

1.( F )在C语言中,实型数据在内存都中占4个字节。

2.( F)在C语言中,参加算术( +,-,*,/,% )运算的数据可以是任何类型的数据。

3.( F )若有定义和语句:int a;char c;scanf("%d,%c",&a,&c);当通过键盘输入:10,‘A’之后,则变量a中存放的是10,变量c中存放的是‘A’。

4.( F )C语言中,变量名只能是小写字母表示,符号常量名可用大写表示

5.( F )在C语言中,变量可以不要定义,直接使用

6.( T )一个C语言程序总是从主函数开始执行的

7.( F )注释语句必须用/*和*/括起来,且只能位于某一语句的后面

第四/五章选择结构与循环结构

一、选择题

1.有以下程序

main( )

{ int i;

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

switch ( i )

{ case 1 : printf("%d ", i);

case 2 : printf("%d ", i);

default : printf("%d ", i);

}

}

执行后输出结果是:()

A)011122 B)012 C)012020 D)120

2.以下程序的输出结果是:()

main()

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

printf("%d\n",d = a>b ? (a>c?a:c) : (b));

}

A) 5 B) 4 C) 6 D) 不确定

3.以下程序中,while循环的循环次数是:()

main()

{ int i=0;

while(i<10)

{ if(i<1) continue;

if(i==5) break;

i++;

}

}

A) 1 B) 10 C) 6 D) 死循环,不能确定次数

4.以下程序的输出结果是:()

main( )

{ int a=0,i;

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

switch(i)

{ case 0:

case 3: a+=2;

case 1:

case 2: a+=3;

default: a+=5;

}

printf("%d\n",a);

}

A) 31 B) 13 C) 10 D) 20

5.若执行以下程序时从键盘上输入9,则输出结果是:()

main()

{ int n;

scanf ("%d",&n);

if(n++<10)

printf ("%d\n",n);

else

printf("%d\n",n--);

}

A) 11 B) 10C) 9 D) 8

6.有以下程序段

int k=0;

while(k=1)

k++;

则while 循环执行的次数是:()

A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行1次

7.以下程序执行后sum的值是:()

main()

{ int i , sum;

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

printf("%d\n",sum);

}

A)15 B)14 C) 不确定D)0

8.以下程序输出结果是:()

main ()

{ int m=5;

if (m>5)

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

else

printf (“%d\n”,m--);

}

A )7

B )6 C)5 D)4

9.设有如下定义:

int a=1,b=2,c=3,d=4,m=2,n=2;

则执行表达式:(m=a>b)&&(n=c>d)后,n的值为:()

A)1 B)2 C)3 D)0

10.以下程序运行后,如果从键盘上输人5,则输出结果是:()

main( )

{

int x;

scanf("%d",&x);

if(x--<5)

printf("%d",x);

else

printf("%d",x++);

}

A、3

B、4

C、5

D、6

11.以下程序段的输出是:()

int i,j,m=0;

for (i=1;i<=15;i+=4)

for (j=3;j<=19;j+=4)

m++;

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

A)12 B)15 C)20 D)25

12.定义如下变量:int n=10;则下列循环的输出结果是:()

while (n>7)

{ n--; printf("%3d",n);

}

A) 10 9 8 B) 9 8 7

C) 10 9 8 7 D) 9 8 7 6

13.以下循环体的执行次数是:()

main()

{ int i,j;

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

printf("%d \n",i);

}

A) 3 B) 2 C) 1 D) 0

14.在C语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是:

()

A) switch B) continue

C) break D) if

二、判断题:

1.( F )用1作while循环的判断条件,则循环一次也不执行。

2.( F )for循环表达式的括号内的3个表达式均不可以省略。

3.( F )若有for( ; ; ){……},是指循环体执行0次。

4.( F )程序有死循环的时候,上机编译不能通过。

5.( F )执行for(I=0;I<3;I++);后I的值为2。

6.( T )所有类型的循环都可以进行嵌套使用。

7.( T )利用break语句可以提前终止循环的执行。

8.( F )利用continue语句可以提前终止循环的执行。

9.( F )break语句和continue语句不可以同时出现在同一个循环体内。

10.( F )switch语句中,每一个case的冒号后面都必须至少跟有一条语句

第6章数组

一、选择题

1、假设int型变量占两个字节的存储单元,若有定义:

int x[10]={0,2,4};

则数组x在内存中所占字节数为:()

A、3

B、6

C、10

D、20

2、下面程序段的输出结果是:()

int j;

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

for (j=0;j<3;j++)

printf(“%d ”,x[j][2-j]);

A、1 5 9

B、1 4 7

C、3 5 7

D、3 6 9

3、以下能正确定义数组并正确赋初值的语句是:()

A、int N=5,b[N][N];

B、int a[1][2]={{1},{3}};

C、int c[2][]= {{1,2},{3,4}};

D、int d[3][2]={{1,2},{3,4}};

4、有以下程序

main()

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

int i,j,k=2;

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

{ printf("%d ",m[k][i]); }

}

执行后输出结果是:()

A、4 5 6

B、2 5 8

C、3 6 9

D、7 8 9

5、以下能正确定义一维数组的选项是:()

A、int num[];

B、int num[0..100];

C) #define N 100 D) int N=100;

int num[N]; int num[N];

6、有以下程序

main()

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

int i,s=0;

for(i=0;i<4;i++) s+=aa[i][1];

printf("%d\n",s);

}

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

A、 11

B、 19

C、 13

D、、20

7、不能把字符串“Hello!”赋给数组b的语句是:()

A、char b[10]={‘H’,’e’,’l’,’l’,’o’,’!’};

B、char b[10];b=”Hello!”;

C、char b[10]; strcpy(b,”Hello!”);

D、char b[10]=”Hello!”;

8、函数调用strcat(strcpy(str1,str2),str3)的功能是_:()

A、将串str1复制到串str2中后在连接到串str3之后

B、将串str1连接到串str2之后再复制到串str3之后

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

D、将串str2连接到串str1中后再将串str1复制到串str3中

9、在C语言中,一维数组的定义方式为:类型说明符数组名()。

A.[常量表达式] B.[整型表达式]

C.[整型常量]或[整型表达式] D.[整型常量]

10、若有说明:int a[10];,则对a数组元素的正确引用是:()。

A.a[10] B.a[3.5] C.a(5) D.a[10-10]

11、在C语言中,引用数组元素时,其数组下标的数据类型允许是:()。

A.字符常量B.浮点型常量

C.整型常量或整型表达式D.任何类型的表达式

12、下列数组定义、初始化或赋值语句中,正确的是:()。

A.int x[5]={1,2,3,4,5,6}; B.int n=8; int score[n];

C.int a[8]; a[8]=100; D.int x[]={1,2,3,4,5,6};

13、已知int a[][3]={1,2,3,4,5,6,7};,则数组a的第一维的大小是:()。

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

14、若有说明:int a[3][4];,则对a数组元素的非法引用是:()。

A.a[0][2*1] B.a[1][3] C.a[4-2][0] D.a[0][4]

15、已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是:()。

A.数组a和数组b的长度相同B.a数组长度小于b数组长度

C.a数组长度大于b数组长度D.数组a和数组b等价

16、对两个数组a和b进行如下初始化:

char a[]=“ABCDEF”;

char b[]={…A?, …B?, …C?, …D?, …E?, …F?};

则以下叙述正确的是:()。

A.数组a与数组b完全相同B.数组a与数组b长度相同

C.数组a与数组b中都存放字符串D.数组a比数组b长度长

17、有下面的程序段:

char a[3],b[]=“China”;

a=b;

printf(“%s”,a);

A.运行后将输出China B.运行后将输出Ch

C.运行后将输出Chi D.编译出错

18、下面程序的运行结果是:()。

char c[5]={…a?, …b?, …\0?, …c?, …\0?};

printf(“%s”,c);

A.ab B.abc C.ab\0 D.ab\0c\0

19、设有数组定义:char array[]=“china”;,则数组array所占的空间为:()。

A.4个字节B.5个字节C.6个字节D.7个字节

20、判断字符串s1是否大于字符串s2,应当使用:()。

A.if(s1>s2) B.if(strcmp(s1,s2))

C.if(strcmp(s2,s1)>0) D.if(strcmp(s1,s2)>0)

21、下列语句中,不正确的是:()。

A.char str[5]="hello";

B.char str[]={'h','e','l','l','o','\0'};

C.char str[5]={"hi"};

D.char str[100]="";

22、下面错误的初始化语句是:()。

A.char str[]="hello";

B.char str[100]="hello";

C.char str[]={'h','e','l','l','o'};

D.char str[]={'hello'};

23、定义了一维int型数组a[10]后,下面错误的引用是:()。

A.a[0]=1;

B.a[10]=2;

C.a[0]=5*2;

D.a[1]=a[2]*a[0];

24、下面的二维数组初始化语句中,错误的是:()。

A.float b[2][2]={0.1,0.2,0.3,0.4};

B.int a[][2]={{1,2},{3,4}};

C.int a[2][]= {{1,2},{3,4}};

D.float a[2][2]={0};

25、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为:()。

A.24 B.25 C.18 D.17

26、下面程序的运行结果是:()。

main()

{

int a[][3]={1,2,3,4,5,6};

printf("%d",a[1][1]);

}

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

27、下面程序的运行结果是:()。

main()

{

char s1[20]="Good!";

char s2[15]="AB";

printf("%d",strlen(strcpy(s1,s2)));

}

A.20 B.15 C.5 D.2

28、下面程序的运行结果是:()。

main()

{

int x[]={22,33,44,55,66,77,88};

int k,y=0;

for (k=1;k<=4;k++)

if (x[k]%2==1)

y++;

printf("%d",y);

}

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

29、下面程序的运行结果是:()。

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

s+=a[i][j];

printf("%d",s);

}

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

30、下面程序的运行结果是:()。

main()

{

char s[]="ab1c2d4e";

int i;

i=0;

while(s[i]!='\0')

{

if(s[i]>='a'&&s[i]<='z')

printf("%c",s[i]);

i++;

}

}

A.ab B.ab1c2d4e C.abcde D.a

二、判断题:

1.( F )在程序中可以对数值数组中的数据进行整体使用。

2.( T )如果strcmp(s1,s2)的返回值为一个负数,则表明字符串s1一定小于字符串s2。

3.( T )用scanf函数输入的字符串不可以带空格。

4.( T )用gets函数输入的字符串可以带空格。

5.( F )实现两个字符串的复制可以使用str1=str2;语句。

6.( T )使用strcpy函数可以实现两个字符串的复制。

7.( T )使用strcat函数可以实现两个字符串的连接。

8.( F )使用strlen函数可以求出一个字符串的实际长度(包含‘\0’字符)。

9.( F )如有定义char a[20];则可以通过a=“I am a boy”;给a赋值。

10.( T )如有定义int a[3][4]={0}; 则数组a的所有元素初值均为0。

11.( F )构成数组的各个元素可以有不同的数据类型。

12.( F )若有说明:int a[10];,则可以a[10]引用数组a的第10个元素。

13.( T )引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式。

14.( T )若有int a[10]={6,7,8,9,10};,则是将5个初值依次赋给a[0]至a[4]。

15.( F )使用strcat函数可以实现两个字符串的复制。

第7章函数

一、选择题

1.在c语言中以下不正确的说法是:()

A.实参可以是常量、变量、或表达式

B.形参可以是常量、变量或表达式

C.实参可以为任意类型

D.形参应与其对应的实参类型一致

2.以下程序有语法性错误,有关错误原因的正确说法是:()

int main()

{ int G=5,k;

void prt_char();

……

k=prt_char(G);

……

}

A.语句void prt_char();有错,它是函数调用语句,不能用void说明

B.变量名不能使用大写字母

C.函数说明和函数调用语句之间有矛盾

D.函数名不能使用下划线

3.以下正确的说法是:()

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

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

C.函数的定义和调用均不可以嵌套

D.函数的定义和调用均可以嵌套

4.在一个函数内部定义的变量是:()

A、简单变量

B、局部变量

C、全局变量

D、标准变量

5.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:()

A)函数调用可以作为独立的语句存在

B)函数调用可以作为一个函数的实参

C)函数调用可以出现在表达式中

D)函数调用可以作为一个函数的形参

6.以下所列的各函数首部中,正确的是:()

A、 void play(var :Integer,var b:Integer)

B、 void play(int a,b)

C、 void play(int a,int b)

D、 Sub play(a as integer,b as integer)

7.当调用函数时,实参是一个数组名,则向函数传送的是:()

A、数组的长度

B、数组的首地址

C、数组每一个元素的地址

D、数组每个元素中的值

8.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:()

A、地址传递

B、单向值传递

C、由实参传给形参,再由形参传回实参

D、传递方式由用户指定

9.以下叙述中不正确的是:()

A)在不同的函数中可以使用相同名字的变量

B)函数中的形式参数是局部变量

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

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

10.有以下程序

void fun (int a,int b,int c)

{ a=456; b=567; c=678;}

int main()

{ int x=10, y=20,z=30;

fun (x,y,z);

printf("%d,/%d,%d\n",x,y,z);

return 0;

}

输出结果是:()

A、30,20,10

B、10,20,30

C、456,567,678

D、678,567,456

11.下述函数定义形式正确的是()。

A、int f(int x; int y)

B、int f(int x,y)

C、int f(int x, int y)

D、int f(x,y: int)

12.关于函数参数,说法正确的是()。

A、实参与其对应的形参各自占用独立的内存单元

B、实参与其对应的形参共同占用一个内存单元

C、只有当实参和形参同名时才占用同一个内存单元

D、形参是虚拟的,不占用内存单元

13.一个函数的返回值由()确定。

A、return语句中的表达式

B、调用函数的类型

C、系统默认的类型

D、被调用函数的类型

14.C语言中形参的默认存储类别是()。

A、自动(auto)

B、静态(static)

C、寄存器(register)

D、外部(extern)

15.以下正确的函数形式是()。

A、double fun(int x,int y)

{ z=x+y; return z; }

B、fun(int x,y)

{ int z; return z; }

C、fun(x,y)

{ int x,y; double z; z=x+y; return z; }

D、double fun(int x,int y)

{ double z; z=x+y; return z; }

16.在一个源程序文件中定义的全局变量的有效范围为()。

A、一个C程序的所有源程序文件

B、该源程序文件的全部范围

C、从定义处开始到该源程序文件结束

相关文档
相关文档 最新文档