{
x+=5;
continue; }
x- =3;
}
15. 执行下列程序后,a的值为 8 。 8 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;
}
printf(―%d\\n‖,a); }
16. 以下程序的输出结果是 a=41 。 a=41
main( ) {
i a a=a+2 a=a+3 a=a+5 int a=0,i;
0 0 2 5 10 for(i=0;i<5;i++)
1 10 13 18 {
2 18 21 26 switch(i)
3 26 28 31 36 { case 0:
4 36 41 case 3:a+=2;
case 1:
case 2:a+=3; default:a+=5; } }
printf(\}
17. 仔细分析下列程序或程序段,写出执行结果 。 *
#include
int i; i i%2 i++ i=i+2 printf for (i=1;i<=5;i++) 1 1 3 *\\n switch(i%2) 4 0 5 #break 6
26
{
case 0: i++; printf(―#‖);break; case 1: i+=2; printf(―*‖); default: printf(―\\n‖);
}
}
18. 下面程序的运行结果是 。 2,3
#include
int i,k=0;
for(i=1; ;i++) {
k++;
while(k
if(k%3= =0) goto loop; } }
loop:printf(―%d,%d‖,i,k); }
19. 下面程序的运行结果是 。 8,-2
#include
int i,b,k=0;
for (i=1;i<=5;i++) {
b=i%2;
while(b-->=0) k++; }
printf(―%d,%d‖,k,b); }
20. 下面程序的运行结果是 。 4
main( ) {
int i,j,a=0;
for(i=0;i<2;i++) {
for(j=0;j<4;j++) {
if(j%2) break; a++; }
27
i k k++ i*i k++ k%3 1 0 1 1 2 1 2 4 3 0 goto i b k b=i%2 b>=0 b-- k++ 1 0 1 1>=0T 0 1 0>=0T -1 2 -1>=0F -2 2 -1 2 0 0>=0T -1 3 -1>=0F -2 3 -1 3 1 1>=0T 0 4 0>=0T -1 5 -1>=0F -2 4 -1 5 0 0>=0T -1 6 -1>=0F -2 5 -1 6 1 1>=0T 0 7 0>=0T -1 8 -1>=0F -2 i j a j%2 a++ a++ 0 0 0 0 1 1 1 1 break 2 1 0 2 0 3 1 1 1 break 4 2 a++; }
printf(―%d\\n‖,a);
}
21. 下面程序的输出结果是 。1 i j m n j>i m=1 n++ main( ) 0 0 0 0 0>0F { 1 0 0 1>0T 1 1 int i,j,m=0,n=0; 2 for(i=0;i<2;i++) 1 0 1 1 0>1F for(j=0;j<2;j++) 1 1 1 1>1F if(j>i) { m=1; n++; } 2 printf(\2 } 三、程序填空题
1. 下面程序段是从键盘输入的字符中统计数字字符的个数,用‘#‘结束循环。
int n=0,c; c=getchar( );
while ( c!=‘#‘ ① ) c!=‘#‘ {
if( ②c>=‘0‘&&c<=‘9‘) c>=‘0‘&&c<=‘9‘
n++; c=getchar( ); }
2. 下面程序的功能是计算0-2+4-6+……..-98+100的值。
#include
int i,t= -1,s=0;
for(i=2;i<=100;i+=2)
{ t=t*i ① ; s=s+t; t=-t/i ② ;} t= -t/i printf(―%d\\n‖,s); }
3. 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请
选择填空。
#include
int a,max=0;
scanf(―%d‖,&a);
while( ① ) a!=0 or a { if(max
② ; max=a scanf(―%d‖,&a); }
28
printf(―%d‖,max);
}
4. 下面程序的功能是打印100以内个位数为5且能3整除的所有数。
#include ,stdio.h> main() {
int i,j;
for(i=0; ① ;i++) i<10 {
j= ② ; i*10+5 if(j%3!=0) continue; printf(―%d‖,j); } }
5. 下面程序的功能是求1000以内的所有完数。(说明:一个数若恰好等于它的
因子之和,则称该数为完数,例如:6=1+2+3,6为完数)
#include
int a,i,m;
for(a=1;a<=1000;a++) {
for( ① ; i<=a/2; i++) i=1,m=0 if( ② ) !(a%i) or a%i= =0
m=m+i; if(m= =a)
printf(―M‖,a);
} }
6. 下面程序的功能是完成用一元人民币换成一分、两分、五分的所有兑换方案。
每5种方案为一行。
#include
{ int i,j,k,l=1;
for (i=0;i<=20;i++) for(j=0;j<=50;j++) {
k= ① ; 100-5*i-j*2 if(k>=0) {
printf(― ---‖,I,j,k); l=l+1;
if( ② ) l%5= =0
printf(―\\n‖);
29
} }
}
7. 下面程序的功能是用do—while语句求1至1000之间满足“用3除余2;用
5除余3;用7除余2”的数,且一行只打印五个数。
#include
int i=1,j=0; do {
if ( ① ) i%3= =2&&i%5= =3&&i%7= =2 {
printf(―M‖,i);
② ; j=j+1 if(j%5= =0)
printf(―\\n‖);
}
i=i+1;
}while (i<1000); }
8. 下面程序段是找出整数的所有因子,请填空。
scanf(―%d‖,&x); i=1;
for( ; ① ; ) i<=x/2 {
if( ② ) x%i= =0
printf(―=‖,i); i++; }
9. 对于终端上输入的正文分别进行字符、字、行统计,并输出统计结果。请填
空。
如: I am a student.
You are a teacher. Bye.#
结果显示:line=3 word=9 character=39
#include \main( ) {
int n_line=0,n_word=0, n_chara=0, inword=0; char c;
while (( c=getchar( ))!='#' ) {
++n_chara;
30