C语言考试题.docx

上传人:b****5 文档编号:8005017 上传时间:2023-01-27 格式:DOCX 页数:14 大小:19.72KB
下载 相关 举报
C语言考试题.docx_第1页
第1页 / 共14页
C语言考试题.docx_第2页
第2页 / 共14页
C语言考试题.docx_第3页
第3页 / 共14页
C语言考试题.docx_第4页
第4页 / 共14页
C语言考试题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C语言考试题.docx

《C语言考试题.docx》由会员分享,可在线阅读,更多相关《C语言考试题.docx(14页珍藏版)》请在冰豆网上搜索。

C语言考试题.docx

C语言考试题

循环控制试题

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。

6.1对表达式for(表达式1;;表达式3)可理解为

A)for(表达式1;0;表达式3)

B)for(表达式1;1;表达式3)

C)for(表达式1;表达式1;表达式3)

D)for(表达式1;表达式3;表达式3)

6.2在下列选项中,没有构成死循环的是

A)inti=100;

while

(1)

{i=i+1;

if(i>100)break;

}

B)for(;;);

C)intk=10000;

do{k++;}while(k>10000);

D)ints=36;

while(s)--s;

6.3下面有关for循环的正确描述是

A)for循环只能用于循环次数已经确定的情况

B)for循环是先执行循环体语句,后判断表达式

C)在for循环中,不能用break语句跳出循环体

D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

6.4若inti,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是

A)9

B)8

C)3

D)2

6.5阅读下列程序段,则程序的输出结果是

#include"stdio.h"

main()

{inta=10,b=10,k;

for(k=0;a>8;b=++k)

printf("%d,%d,",a--,--b);

printf("\n");}

A)10,10,10,0,

B)10,9,9,0,

C)10,10,9,1,

D)9,9,9,1,

6.6有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。

下面程序是求这堆零件总数,请选择填空。

#include

main()

{inti;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!

((i-3)%7))

if(_______)

printf("%d",i);

}

A)i%9=5

B)i%9!

=5

C)(i-5)%9!

=0

D)(i-5)%9==0

6.7下列程序的输出结果是

#include"stdio.h"

main()

{inti,a=0,b=0;

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

{if(i%2==0)

{a++;

continue;}

b++;}

printf("a=%d,b=%d",a,b);}

A)a=4,b=4

B)a=4,b=5

C)a=5,b=4

D)a=5,b=5

6.8阅读下列程序,则执行结果是

#include"stdio.h"

main()

{inta=0,b=0,c=0,i;

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

switch(i)

{case0:

a=i++;

case1:

b=i++;

case2:

c=i++;

case3:

i++;}

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

A)0,1,3,4

B)1,2,3,4

C)0,1,2,5

D)0,2,3,4

6.9阅读下列程序,程序的输出结果是

#include"stdio.h"

main()

{

intm,n;

floatk;

for(m=6;m>2;m--)

{k=0;

for(n=m;n>1;n--)

k=k+m*n;

}

printf("%f\n",k);

}

A)5.000000

B)15.000000

C)25.000000

D)35.000000

6.10下面程序的运行结果是(代码有错误)

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!

(k_))printf("\n");

for(i=2;iif(!

(j%i))break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

A)5359

B)5953

C)3595

D)9535

6.11已知

intt=0;

while(t=1)

{...}

则以下叙述正确的是

A)循环控制表达式的值为0

B)循环控制表达式的值为1

C)循环控制表达式不合法

D)以上说法都不对

6.12设有以下程序段

intx=0,s=0;

while(!

x!

=0)s+=++x;

printf("%d",s);

A)运行程序段后输出0

B)运行程序段后输出1

C)程序段中的控制表达式是非法的

D)程序段执行无限次

6.13下列程序的输出结果是

#include"stdio.h"

main()

{inti=6;

while(i--)

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

printf("\n");}

A)531

B)420

C)654321

D)死循环

6.14对下Ⅰ,Ⅱ两个语句描述正确的是

Ⅰ.while

(1)Ⅱ.for(;;)

A)都是无限循环

B)Ⅰ是无限循环,Ⅱ错误

C)Ⅰ循环一次,Ⅱ错误

D)以上答案都错

6.15以下程序段的描述,正确的是

x=-1;

do

{x=x*x;}

while(!

x);

A)是死循环

B)循环执行两次

C)循环执行一次

D)有语法错误

6.16若有如下语句

intx=3;

do{printf("%d\n",x-=2);}while(!

(--x));

则上面程序段

A)输出的是1

B)输出的是1和-2

C)输出的是3和0

D)是死循环

6.17下面程序的运行结果是

#include

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

A)a=3,b=11B)a=2,b=8C)a=1,b=-1D)a=4,b=9

6.18若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是#include

main()

{charc;

intv0=1,v1=0,v2=0;

do{switch(c=getchar())

{case′a′:

case′A′:

case′e′:

case′E′:

case′i′:

case′I′:

case′o′:

case′O′:

case′u′:

case′U′:

v1+=1;

default:

v0+=1;v2+=1;}

}while(c!

=′\n′);

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A)v0=7,v1=4,v2=7

B)v0=8,v1=4,v2=8

C)v0=11,v1=4,v2=11

D)v0=13,v1=4,v2=12

6.20C语言中while和do-while循环的主要区别是

A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比do-while的循环控制条件更严格

C)do-while允许从外部转到循环体内

D)do-while的循环体不能是复合语句

6.21下列说法中错误的是

A)只能在循环体内使用break语句

B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环

C)在while和do…while循环中,continue语句并没有使整个循环终止

D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断

二、填空题(请将每一个空的正确答案写在答题卡相应序号后。

6.22设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【1】。

10

for(i=0,j=10;i<=j;i++,j--)k=i+j;

6.23下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。

(x%2!

=0)

main()

{inti,x,y=1;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if【2】{y=0;break;}

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

}

6.24以下程序的输出结果是【3】。

8,5,3

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}

}

6.25阅读下面程序段,则执行后的输出结果为【4】。

2,7,12

#include"stdio.h"

main()

{inta=1;

for(;a<=15;)

if(++a%5!

=2)continue;

elseprintf("%d",a);

printf("\n");}

6.26阅读下面语句,则执行后的输出结果为【5】(代码有错误)

#include"stdio.h"

main()

{chara,b;

for(a=′0′,b=′9′;aprintf("%c%c",a,b);

printf("\n");}

6.27阅读下面程序,则执行后程序的结果为【6】15,16

#include"stdio.h"

main()

{inta=0,b=0;

while(a<15)a++;

while(b++<15);

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

三、编程题

(来自于经典C语言编程100例)

【程序1】

题目:

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少?

程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去

      掉不满足条件的排列。

#include"stdio.h"

main()

{

inti,j,k;

for(i=1;i<5;i++)//三层循环嵌套,

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

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

if(i!

=j&&i!

=k&&j!

=k)//三个位上的数都不重复则输出

printf("%d%d%d\t",i,j,k);

return0;

}

【程序4】题目:

输入某年某月某日,判断这一天是这一年的第几天?

程序分析:

以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

      情况,闰年且输入月份大于3时需考虑多加一天。

#include"stdio.h"

main()

{

intday,month,year,sum;

do//判断用户的输入是否有误

{

printf("请输入年月日");

scanf("%d%d%d",&year,&month,&day);

if(month<1||month>12)

printf("输入的月份有误,请重新输入!

\n");

if(year<=0)

printf("输入的年份有误,请重新输入!

\n");

if(day<0||day>31)

printf("输入的日期有误,请重新输入!

\n");

}while(year<=0||month<1||month>12||day<0||day>31);

switch(month)//计算各月份的天数

{

case1:

sum=0;break;

case2:

sum=31;break;

case3:

sum=59;break;

case4:

sum=90;break;

case5:

sum=120;break;

case6:

sum=151;break;

case7:

sum=181;break;

case8:

sum=212;break;

case9:

sum=243;break;

case10:

sum=273;break;

case11:

sum=304;break;

case12:

sum=334;break;

default:

printf("dataerror");break;

}

sum=sum+day;//加上某天

if(year%400==0||(year%4==0&&year%100!

=0))//判断是不是闰年

if(month>2)//如果是闰年则判断月份是否大于2

sum++;

printf("%d年%d月%d日是那一年的第%d天!

\n",year,month,day,sum);

}

【程序5】

题目:

输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析:

我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,

      然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

#include

intmain()

{

intx,y,z,temp;

printf("请输入三个数:

");

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

if(x>y)//如果x>y,把x和y对调

{

temp=x;

x=y;

y=temp;

}

if(x>z)//如果x>z,把x和z对调,始终保持x最小

{

temp=x;

x=z;

z=temp;

}

if(y>z)//如果y>z,把y和z对调,

{

temp=x;

x=z;

z=temp;

}

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

}

【程序8】题目:

输出9*9口诀。

程序分析:

分行与列考虑,共9行9列,i控制行,j控制列。

#include

intmain()

{

for(inti=1;i<=9;i++)

{

for(intj=1;j<=i;j++)

printf("%dx%d=%d\t",j,i,i*j);

printf("\n");

}

}

 

【程序12】

题目:

判断101-200之间有多少个素数,并输出所有素数。

程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,

      则表明此数不是素数,反之是素数。

#include

#include

intmain()

{

printf("101-200之间的素数有:

");

for(inti=101;i<=200;i++)

{

ints=(int)sqrt(i);

for(intj=2;j<=s;j++)

{

if(i%2==0)

break;

if(j==s)

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

}

}

printf("\n");

return0;

}

 

【程序20】

题目:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在

   第10次落地时,共经过多少米?

第10次反弹多高?

#include

main()

{

floats=100.0,h=s/2;

intn;

for(n=2;n<=10;n++)

{

s=s+2*h;//共进过的米数

h=h/2;//反弹的高度

}

printf("第十次落地时经过的米数%f\n",s);

printf("第十次反弹的高度为:

%f\n",h);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1