C语言练习题(谭浩强第四版)..附有答案 下载本文

高级语言程序设计综合练习一 学号: 姓名:

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(\,&x); if(x--<5)

printf(\,x); else

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

A) 10 9 8 B) 9 8 7

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

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

{ int i,j;

13

高级语言程序设计综合练习一 学号: 姓名:

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

printf(\

}

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()

14

高级语言程序设计综合练习一 学号: 姓名:

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

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

{ printf(\}

执行后输出结果是:( )

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

程序运行后的输出结果是:( ) 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、下列数组定义、初始化或赋值语句中,正确的是:( )。

15

高级语言程序设计综合练习一 学号: 姓名:

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.3 C.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[]=\,以下叙述中正确的是:( )。

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]=\

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

16