scanf(“%d”,&a);}
printf(“%d”,max);}
A)a==0B)aC)!
a==1D)!
a
17、下面程序的运行结果是().
#include
main()
{intnum=0;
while(num<=2)
{num++;
printf(“%d\n”,num);}}
A)1B)12C)123D)1234
18、若运行以下程序时,从键盘输入2473(表示回车),则下面程序的运行结果是().
#include
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
19、C语言中while和do-while循环的主要区别是().
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
20、以下能正确计算1*2*3*……*10的程序是().
A)do{i=1;s=1;B)do{i=1;s=0;
s=s*i;s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
C)i=1;s=1;D)i=1;s=0;
do{s=s*i;do{s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
21、以下程序段().
x=-1;do{x=x*x;}while(!
x);
A)是死循环B)循环执行二次C)循环执行二次D)有语法错误
22、以下描述正确的是().
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。
C)在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。
D)do-while循环中,根据情况可以省略while
23、若有如下语句
intx=3;do{printf(“%d\n”,x-=2);}while(!
(--x));
则上面程序段().
A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环
24、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。
#include
main()
{intn,sum=0;n=2345;
do{sum=sum+【】;
n=【】;
}while(n);
printf(“sum=%d”,sum);}
【1】A)n%10B)(n%10)*(n%10)C)n/10D)(n/10)*(n/10)
【2】A)n/1000B)n/100C)n/10D)n%10
25、下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。
请选择填空。
#include
main()
{longintnum;
Scanf(“%ld”,&num);
do{if(【】)printf(“%ld”,num);
scanf(“%ld”,&num);
}while(【】);}
【1】A)num%100/10==3B)num/100%10==3C)num%10/10==3D)num/10%10==3
【2】A)!
numB)num>0==0C)!
num==0D)!
num!
=0
26、等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择题空。
#include
main()
{inta,q,n,sum;
a=1;q=2;n=sum=0;
do{【】;++n;a*=q;
}while(sum<100);
【】;
printf(“%d\n”,n);}
【1】A)sum++B)sum+=aC)sum*=aD)a+=sum
【2】A)n=n-2B)n=nC)n++D)n-=1
27、下面程序的功能是把316表示为两个加数分别能被13和11整除。
请选择填空。
#include
main()
{inti=0,j,k;
do{i++;k=316-13*i;}while(【】);
j=k/11;
printf(“316=13*%d+11*%d”,i,j);}
A)k/11B)k%11C)k/11==0D)k/11==0
28、下面程序的运行结果是().
#include
main()
{inty=10;
do{y--;}while(--y);
printf(“%d\n”,y--);}
A)-1B)1C)8D)0
29、若运行以下程序时,从键盘输入ADescriptor,
则下面程序的运行结果是(D).
#include
main()
{charc;
intv0=0,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’:
v+=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=7B)v0=8,v1=4,v2=8C)v0=11,v1=4,v2=11D)v0=12,v1=4,v2=12
30、下面程序运行结果是().
#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
二、填空题
1、 C语言三个循环语句分别是【】语句,【】语句和【】语句
2、 至少执行一次循环体的循环语句是【】
3、 循环功能最强的循环语句是【】
三、看程序写结果
1、 main()
{intk=1,n=263;
do{k*=n%10;n/=10;}while(n);
printf(“%d\n”,k);
}
2、 main()
{inti,j,p,s;
s=0;
for(i=1;i<=4;i++)
{p=1;
for(j=1;j<=i;j++)
p=p*j;
s=s+p;}
printf(“s=%d\n”,s);}
3、 main()
{inti=1,s=3;
do{s+=i++;
if(s%7==0)continue;
else ++i;
}while(s<15);
printf(“i=%d\n”,i);}
4、 main()
{ints=0,k;
for(k=7;k>=4;k--)
{switch(k)
{case1:
case4:
case7:
s++;break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2; break;}}
printf(“s=%d”,s);}
5、#include
main()
{inti;
for(i=1;i<=5;i++)
switch(i%2)
{case0:
i++;printf(“#”);break;
case1:
i+=2;printf(“*”);
default:
printf(“\n”);}}
6、#include
main()
{inti,j=4;
for(i=j;i<=2*j;i++)
switch(i%j)
{case0:
case1:
printf(“*”);break;
case2:
printf(“#”);}}
7、#include
main()
{inti,t,sum=0;
for(t=i=1;i<=10;)
{sum+=t;++i;
if(i%3==0)t=-i;}
printf(“sum=%d”,sum);}
8、#include
main()
{inta,b,m,n;
m=n=1;
scanf(“%d%d”,&a,&b);
do{if(a>0){m=2*n;b++;}
else{n=m+n;a+=2;b++;}
}while(a==b);
printf(“m=%dn=%d”,m,n);}
9、#include
main()
{inta,b,i;
a=1;b=3;i=1;
do{printf(“%d,%d,”,a,b);
a=(b-a)*2+b;
b=(a-b)*2+a;
if(i++%2==0)printf(“\n”);
}while(b<100);}
10、#include
main()
{inti,x,y;
i=x=y=0;
do{++i;
if(i%2!
=0){x=x+i;i++;}
y=y+i++;
}while(i<=7);
printf(“x=%d,y=%d\n”,x,y);}
11、#include
main()
{inti,j,k;
for(i=1;i<=6;i++)
{for(j=1;j<=20-2*i;j++)
printf("");
for(k=1;k<=i;k++)
printf("");
for(K=1;k<=i;k++)
printf("%4d",i);
printf("\n");}}
12、#include
main()
{inti,j,k;
for(i=1;i<=4;i++)
{for(j=1;j<=20-3*i;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("%3s","*");
printf("\n");}
for(i=3;i>0;i--)
{for(j=1;j<=20-3*i;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("%3s","*");
printf("\n");}}
四、编程题
1、 用while语句计算s=1+2+3+4+……+100
2、 求s=1+2+3+4+…….,直到s的值不小于28888,求此n的值为多少?
3、 判断m是否为素数
4、 求Fibonacci数列前40个数。
这个数列有如下特点:
第1、2两个数为1,1.从第3个数开始,该数是其前面两个数之和。
5、 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一个水仙花数,因为153=13+53+33
6、设计一个函数,输出整数n的所有素数因子。
7、编程计算1!
+2!
+3!
+···+n!
参考答案
一、 选择题
题号
1
2
3
4
5
6
7
8
9
10
答案
A
A
B
A
A
C
A
C
D
B
题号
11
12
13
14
15
16
17
18
19
20
答案
D
C
B
CA
DC
B
C
A
A
C
题号
21
22
23
24
25
26
27
28
29
30
答案
C
C
B
BC
BC
BD
B
B
D
B
二、填空题
1、while do-while for
2、do-while
3、for
三、看程序写结果
1、362、s=333、i=84、s=45、*,#6、****#7、sum=19
8、m=4,n=29、1,3,7,15,31,6310、x=1,y=20
11、1
22
333
4444
55555
666666
12、*
***
*****
*******
*****
***
*
四、编程题
1、#include
main()
{inti,s;
s=0;
i=1;
while(i<=100)
{s=s+i;
i++;}
printf(“s=%d\n”,s);}
2、#include
main()
{inti,s=0;
for(i=1;;i++)
s=s+i;
if(s>=28888)break;}
printf(“\ni=%d”,i);}
3、#include“stdio.h”
main()
{intm,n;
scanf(“%d”,&m);
for(n=2;n<=m-1;n++)
if(m%n==0)break;
if(n>m-1)printf(“\n%disaprimenumber!
\n”,m);
elseprintf(“\n%disnotaprimenumber!
\n”,m);
}
4、 main()
{longintf1,f2;
inti;
f1=1;f2=1;
for(i=1;i<=20;i++)
{printf(“%12ld%12ld”,f1,f2);
if(i%2==0)printf(“\n”);
f1=f1+f2;
f2=f2+f1;}}
5、main()
{intn,i,j,k;
for(n=100;n<1000;n++)
{i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf(“%d\n”,n);}}
6、#include
intprime(intn)
{inti,flag=1;
for(i=2;i<=n/2;i++)
if(n%i==0)
{flag=0;
returnflag;}
returnflag;}
voidfactor(intn)
{inti;
i=2;
while(i<=n)
{if((n%i==0)&&prime(i))
{printf("%d",i);
n=n/i;
continue;}
i++;}}
main()
{intnum;
printf("Enternum:
");
scanf("%d",&num);
printf("primefactoris:
\n");
factor(num);}
7、#include
main()
{longs=0,t=1;
inti,n;
printf("Enterintegern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{t*=i;
s+=t;}
printf("s=%ld\n",s);}