C语言第6-7章试卷有答案

  • 格式:pdf
  • 大小:118.07 KB
  • 文档页数:13

C语⾔第6-7章试卷有答案

(6~7章)⼀、选择题1、能正确表⽰a和b同时为正或同时为负的逻辑表达式是

A) (a>=0‖b>=0)&&(a<0‖b<0) B) (a>=0&&b>=0)&&(a<0&&b<0)

C) (a+b>0)&&(a+b<=0) D) a*b>0

2、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是

A) a\bre\'hi\'y\\\bou B) a\bre\'hi\'y\bou C) re'hi'you D) abre'hi'y\bou

3、设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&&++y));的输出结果是A) 1 B) 0 C) -1 D) 2

4、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A) c=b=a;B) (a=c) ‖(b=c) ;C) (a=c) &&(b=c);D)a=c=b;

5、以下程序的输出结果是

main( )

{ int x=10,y=10,i;

for(i=0;x>8;y=++i)

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

}A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1 6、设有int x=11; 则表达式(x++ * 1/3) 的值是A) 3 B) 4 C) 11 D) 12 7、下列程序执⾏后的输出结果是main(){ char x=0xFFFF; printf("%d \n",x--); } A) -32767 B) FFFE C) -1 D)8、下列程序的输出结果是A) 3 B) 3.2 C) 0 D) 3.07

main()

{ double d=3.2; int x,y;

x=1.2; y=(x+3.8)/5.0;

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

}

9、下列程序执⾏后的输出结果是(⼩数点后只写⼀位)

main()

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

printf("%d %ld %f %f \n", i,e,f,d);}

A) 6 6 6.0 6.0 B) 6 6 6.7 6.7 C) 6 6 6.0 6.7 D) 6 6 6.7 6.0

10、设int x=1, y=1; 表达式(!x||y--)的值是A) 0 B) 1 C) 2 D) -1

11、以下循环体的执⾏次数是

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 12、以下叙述正确的是A) do-while语句构成的循环不能⽤其它语句构成的循环来代替。

B) do-while语句构成的循环只能⽤break语句退出。

C) ⽤do-while语句构成的循环,在while后的表达式为⾮零时结束循环。

D) ⽤do-while语句构成的循环,在while后的表达式为零时结束循环。

13、下列程序执⾏后的输出结果是A) G B) H C) I D) J

main( )

{ int x='f'; printf("%c \n",'A'+(x-'a'+1)); }

14、以下程序的输出结果是

main( )

{ int n=4;

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

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

15、以下程序运⾏后,如果从键盘上输⼊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 16、有以下程序

main( )

{ int i,n=0;

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

{ do

{ if(i%3) continue;

n++;

} while(!i);

n++;

}

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

}程序执⾏后的输出结果是A) n=5 B) n=2 C) n=3 D) n=4

17、以下程序的输出结果是

main( )

{ int a= -1,b=1,k;

if((++a<0)&& ! (b-- <=0))

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

}

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

18、运⾏下列程序时输⼊:123456789,输出结果是main( )

{ char s[100]; int c, i;

scanf("%c",&c); scanf("%d",&i); scanf("%s",s);

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

}

A) 123,456,789 B) 1,456,789 C) 1,23,456,789 D) 1,23,456 19、以下程序的输出结果是 main( )

{ int i ;

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

{ if(i%2){printf("#");continue ;}

printf("*");

}

printf("\n");

}A) #*#*# B) ##### C) ***** D) *#*#*20、以下程序的输出结果是

main( )

{ int i ;

for(i='A';i<'I';i++,i++) printf("%c",i+32);

printf(" \n");

} A) 编译不通过,⽆输出 B) aceg C) acegi D) abcdefghi 21、 有以下程序 main()

{ int m=3,n=4,x;

x=-m++;

x=x+8/++n;

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

}程序运⾏后的输出结果是 A)3 B)5 C)-1 D)-2

(23)以下程序段的执⾏结果是

int a=10, y=0;

do

{ a+=2; y+=a;

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

if(y>20) break;

} while(a=14); A) a=12 y=12 B) a=12 y=12 a=14 y=16 a=16 y=28 23、.有以下程序 main()

{ int i=0,x=0,int s=0;

for (;;){if(i==3||i==5) continue;

if (i==6) break;

i++;

s+=i;

}

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

}程序运⾏后的输出结果是 A)10 B)13 C)21 D)程序进⼊死循环

C) a=12 y=12 a=14 y=26 a=14 y=44 D) a=12 y=12 a=16 y=20 a=18 y=24

24、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是

A)for(i=1,p=1;i<=5;i++) p*=i; B)for(i=1;i<=5;i++){ p=1; p*=i;}

C)i=1;p=1;while(i<=5){p*=i; i++;} D)i=1;p=1;do{p*=i; i++; }while(i<=5);

25、下列程序的输出结果是_________。

main()

{int i;

for(i=1;i+l;i++)

{if(i>4){printlf("%d",i++);break;}

}

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

}A)55B)56 c)程序错误,没有输出D)循环条件永远为真,死循环

26、假定int类型变量占⽤两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是A) 3 B) 6 C) 10D) 20 27、执⾏下⾯的程序后,a的值为main(){ 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 28、以下程序的输出结果是A} 0650 B} 1470 C} 5430 D} 输出值不定

main()

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

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);

} 29、以下程序的输出结果是A)9 9 B)5 20 C)13 20 D)20 20

main(){ char st[20]= "hello\0\t\\\";

printf(%d %d \n",strlen(st),sizeof(st));

} 30、有以下程序

m ain()

{ int x[]={1,3,5,7,2,4,6,0},i,j,k;

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

for (j=2;j>=i;j--)

if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

for(j=4;j<7-i;j++)

if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

for(j=4;j<7-i;j++)

if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

for (i=0;i<8;i++) printf("%d",x);

printf("\n");

} 程序运⾏后的输出结果是:A)75310246B)01234567 C)76310462

D)13570246 31、有以下程序

main( )

{ char a[]=”abcdefg”,b[10]=”abcdefg”;

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

}执⾏后输出结果是A) 7 7 B) 8 8C) 8 10 D) 10 10 32、以下程序的输出结果是main ()

{ int y=18,i=0,j,a[8];

do

{ a[i]=y%2;i++;

y=y/2;

} while(y>=1);

for(j=i;j>=0;j--)printf(“%d",a[j]);

printf("\n");

} A)1000 B)10010 C)00110 D)10100

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

A)数组a和b的长度相同B)a数组长度⼩于b数组长度C)a数组长度⼤于b数组长度D)上述说法都不对34、有以下程序main()

{ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7) if(p[i]%2) j+=p[i];

printf("%d ",j);