C语言程序设计试题(2)1 下载本文

{ int a,b;

for (a=1,b=1;a<100;a++) {

if (b>=20) break; if (b%3==1)

{ b+=3; continue; } b-=5; } }

A) 7 B) 8 C) 9 D) 10 40. 读程序: main()

{ int num=0; while (num<=2)

{ num++; printf(\ }

上面程序的输出结果是:( C )

A) 1 B) 2 2 C) 1 2 3 D) 1 2 3 4 41. 以下循环体的执行次数是:( C ) main() { int i,j;

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

printf(\

}

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

42. 在C语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是:(A) switch B) continue C) break D) if

二、判断题:

1. ( F )用1作while循环的判断条件,则循环一次也不执行。 2. ( F )for循环表达式的括号内的3个表达式均不可以省略。 3. ( T )语句while(!E);中的条件!E等价于E==0。 4. ( T )语句while(E);中的条件E等价于E!=0。

5. ( F )若有for( ; ; ){??},是指循环体执行0次。 6. ( F )程序有死循环的时候,上机编译不能通过。 7. ( T )强制终止死循环可以使用CTRL+BREAK组合键。 8. ( F )执行for(I=0;I<3;I++);后I的值为2。

9. ( F )执行for(I=0,j=0;I<2;I++);j=j+1;后j的值为1。 10. ( T )所有类型的循环都可以进行嵌套使用。 11. ( T )利用break语句可以提前终止循环的执行。 12. ( F )利用continue语句可以提前终止循环的执行。

13. ( F )break语句和continue语句不可以同时出现在同一个循环体内。 14. ( F )switch语句中,每一个case的冒号后面都必须至少跟有一条语句。 15. ( F ) 关于if语句中,条件表达式只能是关系表达式或逻辑表达式 。

三、多选题

1、 关于if语句,下列叙述正确的是:( BCD )

C ) A.if语句中,条件表达式只能是关系表达式或逻辑表达式 B.if语句中,条件表达式的括号不可以省略

C.else子句不能作为一个独立的语句单独使用,必须是if语句的一部分。

D.if和else后面可以包含多个操作语句,此时要用一对大括号把这多个语句对括起来成为一个复合语句。

2、 以下4条语句,没有语法错误的是( ABC )

A.if (a>b) m =a; B.if (a);

C.if ((a=b)>=0) m=a; D.if ((a=b;)>=0) m=a;

3、 如果不加花括号表示else与if的配对关系,则else与if的匹配方法,不正确的是( ABC )

A.else与它上面最远的if配对 B.else与它上面最近的if配对 C.else与离它最近的if配对

D.else与它上面最近的且没有和其他else配对的if配对 4、 关于条件运算符的叙述正确的是( ABC )

A.条件运算符的优先级别比关系运算符和算术运算符都低 B.条件运算符是C语言中惟一的一个三目运算符 C.条件运算符的结合方向是“自右至左” D.条件运算符可以替代任何if语句的功能 5、 关于switch语句叙述正确的是( ABD )

A.语句中,case的冒号后面允许没有语句。

B.switch语句中,每一个case的冒号后面都允许跟有多条语句。

C.在与switch语句配套的case语句中所使用的表达式可以是变量或常量 D.switch语句中,可以没有default语句。

6、 在计数循环for(表达式1;表达式2;表达式3)中,可以省略的表达式是:( ABCD A.表达式1 B.表达式2 C.表达式3 D.三个表达式都可以 E.一个都不能少 7、 下列语句段是死循环的是( ABCDE )

A.n=100; B.s=33;

while(n) n=n0+1; while(s++%2+s%2) s++; C.for(;;); D.for(i=1;;)

if(--i)break; E.x=0; do{ x++;

}while(x>=0);

第7章 数组

一、选择题

1、若有以下说明语句:

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’,d,g; 则数值为4的表达式是:( D )。

A、a[g-c] B、a[4] C、a[‘d’-‘c’] D、a[‘d’-c] 2、假设int型变量占两个字节的存储单元,若有定义: int x[10]={0,2,4};

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

A、3 B、6 C、10 D、20 3、下列合法的数组定义是:( D )

A、int a[]=”string”; B、int a[5]={0,1,2,3,4,5}; C、char a=”string”; D、char a[]={0,1,2,3,4,5}; 4、若给出以下定义:

char x[]=”abcdefg”;

char y[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’}; 则正确的叙述为:( C )

A、数组x和数组y等价 B、数组x和数组y的长度相同 C、数组x的长度大于数组y的长度 D、数组y的长度大于数组x的长度 5、下面程序段的输出结果是:( C ) 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 6、下列程序运行后的输出结果是:( D ) main()

{ int n[3],t,j,k; for(t=0;t<3;t++) n[t]=0; k=2;

for(t=0;t

A、 2 B、 1 C、 0 D、3 7、有以下程序

main()

{ int p[7]={11,13,14,15,16,17,18}, i=0,k=0; while(i<7 && p[i]%2) { k =k+ p[i]; i++; } printf(\}

执行后输出结果是:( D )

A、58 B、56 C、45 D、24 8、以下能正确定义数组并正确赋初值的语句是:( D )

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}}; 9、有以下程序

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

}

执行后输出结果是:( C )

A、4 5 6 B、2 5 8 C、3 6 9 D、7 8 9 10、以下能正确定义一维数组的选项是:( C )

A、int num[]; B、int num[0..100]; C) #define N 100 D) int N=100;

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

11、下列选项中正确的语句组是:( D )

A、char s[8]; s={\、char *s; s={\C、char s[8]; s=\、char *s; s=\12、有以下程序段

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; b中的值是:( D )

A、5 B、6 C、8 D、9 13、有以下程序

main( )

{ char a[]=\

printf(\

}

执行后输出结果是:(C )

A、7 7 B、8 8 C、8 10 D、10 10 14、有以下程序的输出结果是:( B )

void swap1(int c[]) { int t;

t=c[0];c[0]=c[1];c[1]=t; }

void swap2(int c0,int c1) { int t;

t=c0;c0=c1;c1=t;} main( )

{ int a[2]={3,5},b[2]={3,5}; swap(a); swap2(b[0],b[1]);

printf(\

}

A、5 3 5 3 B、 5 3 3 5 C、3 5 3 5 D15、有以下程序

int f(int b[][4]) { int i,j,s=0; for(j=0;j<4;j++) { i=j;

if(i>2) i=3-j;

s+=b[i][j]; }

return s; }

、3 5 5 3