scanf("%d",&a);
}
printf("%d",max);
}
A.a==0B.aC.!
a==1D.!
a
7.下述循环的循环次数()。
intk=2;
while(k=0)
{printf(“%d”,k);
k--;
printf(“\n”);
}
A.无限次B.0次C.1次D.2次
8.有以下程序段
intx=1;
do{
x=x*x;
}while(!
x);
则循环执行的次数是()。
A.1次B.2次C.循环条件不全D.死循环
9.以下程序段,说法正确的是()。
intx=-1;
do
{
x=x*x;
}while(!
x);
A.是死循环B.循环执行二次C.循环执行一次D.有语法错误
10.下面程序的运行结果是():
#include
main()
{intnum=0;
while(num<=2)
{num++;
printf("%d\n",num);
}
}
A.1B.1C.1D.1
222
33
4
11.下面程序的输出结果是()。
main()
{charc=’A’;
intk=0;
do{
switch(c++){
case‘A’:
k++;break;
case‘B’:
k--;
case‘C’:
k+=2;break;
case‘D’:
k%=2;continue;
case‘E’:
k*=10;break;
default:
k/=3;}
k++;
}while(c<’G’);
printf(“k=%d”,k);
}
A.k=3B.k=4C.k=2D.k=0
12.若变量已正确定义,有以下程序段
inti=-1;
do
{printf(“%d,”,i);
}while(i++);
printf(“%d\n”,i);
其输出结果是()。
A.-1,0,0B.-1,0,1C.-1,0D.程序进入无限循环
13.下面程序的输出是()
main()
{inty=0;
while(y--);
printf("y=%d\n",y);
}
A.y=0B.while构成无限循环C.y=-1D.y=1
14.若运行以下程序时,输入2473↙,则程序的运行结果是()。
main()
{intc;
while((c=getchar())!
=’\n’)
switch(c-‘2’){
case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
printf(“\n”);
}
A.668977B.668966C.66778777D.6688766
15.下面有关for循环的正确描述是()。
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
16.对for(表达式1;;表达式3)可以理解为()。
A.for(表达式1;0;表达式3)B.for(表达式1;表达式1;表达式3)
C.for(表达式1;1;表达式3)D.for(表达式1;表达式3;表达式3)
17.若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;)printf(“%d”,i--);
A.无限次B.0次C.1次D.2次
18.对下Ⅰ,Ⅱ两个语句描述正确的是()。
Ⅰ.while
(1)Ⅱ.for(;;)
A.都是无限循环B.Ⅰ是无限循环,Ⅱ错误
C.Ⅰ循环一次,Ⅱ错误D.以上答案都错
19.下列程序段中,功能与其它程序段不同的是()。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;){p=1;p*=i;i++;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5)
20.有如下程序
main()
{inti,sum=0;
for(i=1;i<=3;sum++)sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是()。
A.6B.3C.死循环D.0
21.下面for循环语句()。
inti,k;
for(i=0,k=-1;k=1;i++,k++)
printf(“***”);
A.判断循环结束的条件非法B.是无限循环
C.只循环一次D.一次也不循环
22.执行语句for(i=1;i++<4;);后变量i的值是()。
A.3B.4C.5D.不定
23.以下for循环的执行次数是()。
for(x=0,y=0;(y=123)&&(x<4);x++);
A.无限循环B.循环次数不定C.4次D.3次
24.以下正确的描述是()。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.goto语句只能用于退出多层循环
25.下列程序段不是死循环的是()。
A.inti=100;while
(1){i=i%100+1;if(i>100)break;}B.for(;;)
C.intk=0;do{++k;}while(k==0);D.ints=36;while(s);--s;
26.以下程序的运行结果为()。
main( )
{intn;
for(n=1;n<=10;n++)
{if(n%3==0)continue;printf(“%d”,n);}
}
A.12457810B.369C.12D.12345678910
27.与以下程序段等价的是()。
while(a)
{if(b)continue;
c;
}
A.while(a)
{if(!
b)c;}
B.while(a)
{if(!
b)break;c;}
C.while(a)
{if(b)c;}
D.while(a)
{if(b)break;c;}
28.以下的程序输出的结果是()。
voidmain()
{inti;
for(i=0;i<=5;i++)
{if(i%2)putchar('<');
elsecontinue;
putchar('>');}
putchar('#');}
A.<><><>#B.><><><#
C.<><>#D.><><#
29.下面程序段,以下关于程序段执行情况的叙述,正确的是()。
for(t=1;t<=100;t++)
{scanf("%d",&x);
if(x<0)continue;
printf("%3d",t);}
A.当x<0时整个循环结束B.x>=0时什么也不输出
C.printf函数永远也不执行D.最多允许输出100个非负整数
30.有以下程序段
inti,n;
for(i=0;i<8;i++)
{n=rand()%5;
switch(n)
{case1:
case3:
printf("%d\n",n);break;
case2:
case4:
printf("%d\n",n);continue;
case0:
exit(0);
}
printf("%d\n",n);
}
以下关于程序段执行情况的叙述,正确的是()。
A.for循环语句固定执行8次
B.当产生的随机数n为4时结束循环操作
C.当产生的随机数n为1和2时不做任何操作
D.当产生的随机数n为0时结束程序运行
二、程序填空题
1.求100的阶乘100!
(100!
=1*2*……*100)。
#include
voidmain()
{inti;
;/*定义累乘器fact并初始化为1*/
for(______________)
______________;/*实现累乘*/
printf();/*输出最终结果*/
}
2.计算并输出1!
+2!
+3!
+…+10!
。
编程思路:
求出1…10每一项的阶乘后,将阶乘值累加到累加器中。
#include
voidmain()
{
floatsum=0,f;/*sum为累加和,f为阶乘积*/
inti,n;/*i和n均为循环变量*/
for()/*当n的值从1循环到10*/
{
f=1;/*每一项的阶乘初值均为1*/
for()/*求每一项的阶乘*/
;
;/*将求出的阶乘值累加到累加和*/
}
printf();/*输出累加和sum的值*/
}
3.打印出所有的“水仙花数”。
所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一水仙花数,因为153=13+53+33。
#include
main()
{
inti,j,k,n;
printf(“水仙花数为:
");
for()/*利用穷举法循环测试n的值*/
{
;/*求出该数n的百位数字*/
;/*求出该数n的十位数字*/
;/*求出该数n的个位数字*/
if()/*满足水仙花数的条件*/
;/*打印n的值*/
}
4.有一分数序列
…求出这个数列的前20项之和。
#include
main()
{inti,f1=1,f2=2;floats=0.0;
for()
{s=s+(float)f2/f1;
f2=f1+f2;
f1=;
}
printf("%f\n",s);
}
5.用“碾转相除法”计算两个整数m和n的最大公约数。
编程思路:
该方法的基本思想是计算m和n(m>n)相除的余数,如果余数r为0则结束,此时的被除数就是最大公约数。
否则,将除数作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等,请填空使程序完整。
#include
main()
{intm,n,r,t;
scanf(“%d,%d”,&m,&n);
if(mn*/
while()/*判断若余数为0,程序结束*/
{
;/*原除数作为新的被除数*/
;/*余数作为新的除数*/
;/*计算m和n相除的余数*/
}
printf(“%d”,n);
}
三、判断题
1.在while循环中允许使用嵌套循环,但只能是嵌套while循环。
()
2.在实际编程中,do-while循环完全可以用for循环替换。
()
3.continue语句只能用于三个循环语句中。
()
4.在不得已的情况下(例如提高程序运行效率),才使用goto语句。
()
5.语句标号与C语言标识符的语法规定是完全一样的。
()
6.for循环的三个表达式可以任意省略,while,do-while也是如此。
()
7.do-while允许从外部转到循环体内。
()
8.while的循环控制条件比do-while的循环控制条件严格。
()
9.do-while循环中,根据情况可以省略while。
()
10.do-while循环的while后的分号可以省略。
()
四、简答读程题
1.写出三种循环语句的一般格式。
2.#include
voidmain()
{inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%4d",i*j);
printf("\n");
}
}
运行结果:
3.#include
voidmain()
{
inti,j,k;
for(i=1;i<=3;i++)
{for(j=1;j<=3-i;j++)
printf(“”);
for(k=1;k<=2*i-1;k++)
printf(“*”);
printf(“\n”);
}
}
运行结果:
4.#include
main()
{intf1,f2,f,i;
f1=1;f2=1;
printf("%4d%4d",f1,f2);
for(i=3;i<=10;i++)
{
f=f1+f2;
printf("%4d",f);
f1=f2;
f2=f;
if(i%5==0)printf(“\n”);
}
}
运行结果:
5.#include
main()
{inta,b;
for(a=1,b=1;a<=100;a++){
if(b>=20)break;
if(b%3==1){b+=3;continue;}
b-=5;
}
printf(“%d\n”,a);
}
运行结果:
四、编程题
1.编写程序,输出从公元2000年至2020年所有闰年的年号,每输出5个年号换一行,判断公元年是否为闰年的条件是:
(1)公元年如能被4整除,而不能被100整除,则是闰年;
(2)公元年如能被400整除也是闰年;
2.打印1000以内所有的素数。
3.从键盘中输入若干个学生的期末成绩,当输入为负数时结束输入。
统计并输出这若干个学生的总分和平均分。
4.编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。
5.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。