C语言课堂练习习题集 联系客服

发布时间 : 星期一 文章C语言课堂练习习题集更新完毕开始阅读2e653d27af45b307e8719716

8.下列循环中哪一个不是无限循环

A) for(i=1;;i++) B) i=1;while(i--)

printf(“%d”,i); {printf(“%d”,i++);} C) i=1 D) for(i=0;i;i++) do printf(“%d”,i);

{printf(“%d”,i); i++;}while(--i);

9.有以下程序段:

int i,j;

for(i=0;i<5;++i) for(j=i;j<5;++j) printf(“*”);

则执行以上的程序片段后,输出‘*’个数是 A)15 B)10 C)25 D)20 10.有以下程序段:

int i,j; i=0;j=0;

while(i++<5) {j=0; do

{printf(“*”);} while(++j<4);}

则执行以上的程序片段后,输出‘*’的个数为

A)15 B)10 C)25 D)20 11.下面的程序段不能实现求阶乘8!(8!=1*2*3*4*5*6*7*8,结果存放在p中)的是 A)p=1; B)p=2;

for(i=1;i<9;i++) for(i=8;i>3;i--) p=p*i; p=p*i; C)p=1;i=1; D)p=1;i=8; while(i<9) do

p=p*i++ ; {p=p*i--;} while(i>1);

12.有下列程序段: char ch; int s=0;

for(ch=’A’;ch<’Z’;++ch) if(ch%2= =0)s++;

printf(“%d”,s);

则执行上述片段后,程序的输出结果是 A)13 B)12 C)26 D)25 13.有下面的程序:

main()

{int i,n,k;

13

n=15496;k=2;

for(i=1;i

n=n;

printf(“%d”,n);} 则执行后的输出结果是

A)9 B)6 C)2 D)1 14.有以下程序:

main()

{int a[10]={4,3,3,4,3,8,4,2,8,3}; int i,j,b[10]; for(i=0;i<10;++i) {b[i]=0;

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

if(a[j]= =a[i])b[i]=b[i]+1;} j=0;

for(i=1;j<10;++i) if(b[i]>b[j])j+I; printf(“%d”,a[j]);} 执行程序后的输出结果是

A)8 B)4 C)3 D)2

15.语句while(!e= =0);是什么时候将会陷入死循环

A) e==0 B) e!=0 C) e!=1 D)e!= -1 16.以下程序的输出结果是 14

#include main()

{int i;

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

{if(i%2) printf(“*”);

else continue;printf(“#”);}printf(“$”);} A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$ 17.有以下程序片段 int k=5;

while(k=1)k--;

执行此程序片段,则描述正确的是

A)while循环执行4次 B)循环体执行一次 C)循环体一次也不执行 D)死循环 18.下面程序的运行结果是 #include main()

{int i=1;

do{i--;}while(i++); printf(“%d”,i--);}

A) -1 B) 0 C) 1 D)陷入死循环 19.以下说法中正确的是

A)continue语句的作用是结束整个循环的执行 B)break语句应出现在switch语句和循环语句中

C)利用goto语句可以使程序的执行从一个函数跳到另一个函数

D)循环语句中break语句不能单独出现 填空题:

1.执行下属程序片段后的输出结果为____. int a=6;

while(a--)

printf(“%d”,a--);

2.有以下程序,其功能是将从键盘上输入的小写字母转换成大写字母输出,当输入为‘#’时,结束转换,请在下划线处填上合适的语句。 #include main()

{char c; scanf(“%c”,&c); while(______)

{if((c>=’a’)&&(c<=’z’)) printf(“%c”,______); scanf(“%c”,&c);} }

3.为输出入下图形,请在程序中的下划线处填入合适的内容 *

** *** * * * * * * * * *

15

* main()

{int i,j;

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

{for(j=0;j<______;j++)

print(“ ”);

for(j=0;j<______;j++) printf(“*”); printf(”\\n”);}

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

{for(j=0;j

printf(“ “); for(j=0;j<3-i;j++) printf(“*”);

printf(“\\n”);} }

4.现有已知长度为n的整型数组a,其前n-1个元素中已有数据,并且数据按从小到大的顺序排列,函数insert要完成的功能是:把任意整数i填入数组a中,并使插入数据后的数组依然保持从小到大的顺序(函数参数的意义分别是:i为需插入的数据,n为数组a的长度,a为数组名)。

insert(int i,int n,int a[ ]) { int k; k=n-1;

while((k>0)&&(______))

{ a[k]=a[k-1];

k=k-l;}

a[k]=______;} 5.已知e=l++

1!112!+

13!+?+

1n!,试用此公式求e的近似值,要求累加所有不小于1e-6的项值,

请在程序中下划线处填上合适内容,完成程序功能。 #include main()

{ int i; float e,n; e=1.0;i=1; n=1.0;

while(______)

{ n=1.0 / tun(i);i++;

e+=n; } } fun(int i)

{ int j,k; k=l;

for(j=1; ____;++j) k=k*j;

return(k); }

6. 下面程序可从键盘上输入一个大于0且小于1000的整数,然后输出此整数的所有整数因子。如:输入12,输出l,2,3,4,6,12。请在下划线处填上合适的内容,完成该程序。 16

main()

{int a,k;

scanf(”%d,&a); if((a>0)&&(a<1000)) {printf(\%d\,a); for(k=1; ;++k)

if(______)printf(\%d\,k);} }

7. 现有一等差数列,已知第一项a=1,公差b=4,下面程序的功能是输出满足前n项之和小于100的n最大值,请填空完成该程序。 #include main()

{ int a=1,b=4,sum=1,n=1; while(______) { a=a+b; sum=sum+a; n++; }

printf(\%d\,n-1); }

8.以下程序的输出结果是______。 #incude main()

{ int i;

for(i=0;i<=20;i=i+5) switch(i/5)