C语言习题 答案讲解 联系客服

发布时间 : 星期六 文章C语言习题 答案讲解更新完毕开始阅读da29723ab94ae45c3b3567ec102de2bd9605dec5

printf(“%d,%d,%d”,a,b,c); A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1 8、下面程序的运行结果是( C )。 #include main() { int num=0; while(num<=2) { num++; printf(“%d\\n”,num); } } A)1 B)1 C)1 D)1 2 2 2 3 3 9、以下能正确计算1×2×3×…×10的程序段是( C )。 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); 10、下面程序的运行结果是( D )。 #include main() { int y=10; do{ y--; }while(--y); printf(“%d\\n”,y--); } A)-1 B)1 C)8 D)0 11、已知int i=1,j=0;执行下面语句后j的值是( D )。

while(i) switch(i)

{ case 1: i+=1;j++;break; case 2: i+=2;j++;break; case 3: i+=3;j++;break; default: i--;j++;break; }

A) 1 B) 2 C) 3 D) 死循环

12、若运行以下程序时,从键盘输入2473<回车>,则下面程序的运行结果是( #include main() { int c; while((c=getchar())!=‘\\n’) switch(c-‘2’) { case 0: case 1: putchar(c+4); case 2: putchar(c+4); break; case 3: putchar(c+3);

17 / 44

A )。 default: putchar(c+2); break; } printf(“\\n”); } A)668977 B)668966 C)66778777 D)6688766 二、填空题

1、执行下面程序段后,k值是 36 。 k=1; n=263; do{ k*=n; n/=10; }while(n); 2、下面程序的运行结果是 s=254 。 #include main() { int a,s,n,count; a=2; s=0; n=1; count=1; while(count<=7) { n=n*a; s=s+n; ++count; } printf(“s=%d”,s); }

3、下面程序段的运行结果是 * * 。 x=2; do{ printf(“*”); x--; }while(!x==0); 4、运行以下程序时,从键盘键入China#代表回车),则下面程序的运行结果是 5,5 。 #include main() { int v1=0,v2=0; char ch; while((ch=getchar())!=‘#’) switch(ch) { case ‘a’: case ‘h’: default: v1++; case ‘o’: v2++; } printf(“%d,%d\\n”,v1,v2); } 三、编程:

1、 编程求1*3*5*7*9的值

2、编写程序计算下列算式的值:

直到某一项A<=0.000001时为止。输出最后C的值。

3、从键盘输入的字符中统计数字字符的个数,用换行符结束循环。 1、参考答案: main() { int i;

long p=1; do { p=p*i; i=i+2;

} while (i<=9);

18 / 44

printf(“1*3*5*9=%ld\\n”,t); }

2、参考答案: #define E 0.000001 main()

{ float x,y=1,s=0;

printf(\; scanf(\; while(1/y>E) { s=s+1/y; y=y*x; }

printf(\; }

3、参考答案: main() { int n=0; char c; c=getchar(); while(c!=’\\n’ )

{ if(c>=’0’&&c<=’9’) n++; c=getchar(); }

printf(“%d\\n”,n); }

能力提高(B)

一、选择填空题

1、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,

并输出m、n中的较大者,请选择填空。 #include main() {

int m=0,n=0; char c;

while(( A )!=‘\\n’) { if(c>=‘A’&&c<=‘Z’) m++; if(c>=‘a’&&c<=‘z’) n++; }

printf(“%d\\n”,m

(1) A)c=getchar() B)getchar() C)scanf(“%c”,c) (2) A)n:m B)m:n C)m:m D)n:n

2、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。 #include main() { int a,max=0; scanf(“%d”,&a); while( B ) { if(max

19 / 44

scanf(“%d”,&a); } printf(“%d”,max); }

A)a==0 B)a C)!a==1 D)!a

3、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include main() { int n,sum=0; n=2345; do{ sum=sum+ B ; n= C ; }while(n); printf(“sum=%d”,sum); }

(1) A)n B)(n)*(n) C)n/10 D)(n/10)*(n/10) (2) A)n/1000 B)n/100 C)n/10 D)n 二、读懂程序,并按照程序的功能将程序补充完整

1、下面程序的功能是用“辗转想除法”求两个正整数的最大公约数。请填空。 #include main() { int r,m,n; scanf(“%d %d”,&m,&n); if(m

2、下面程序的功能是用do-while语句求1至1000之间满足“用3除余2;用5除余3;用7除

余2”的数,且一行只打印五个数。请填空。 #include main() { 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); }

3、等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有

的和。请填空。 #include main() { int a,d,sum; a=2; d=3; sum=0; do{ sum+=a;

20 / 44