C语言习题与答案1

更新时间:2024-01-05 06:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

5.1选择题

【题5.1】设有程序段

int k=10;

while(k=0) k=k-1;

则下面描述中正确的是 。

A)while循环执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次

【题5.2】设有以下程序段

int x=0,s=0;

while(!x!=0) s+=++x; printf(\则 。

A)运行程序段后输出0 B)运行程序段后输出1 C)循环的控制表达式不正确 D)程序段执行无限次

【题5.3】语句while(!E);中的!E等价于 。

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

【题5.4】下面程序段的运行结果是 。

a=1;b=2;c=2;

while(a

A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1

【题5.5】下面程序段的运行结果是 。

x=y=0;

while(x<15) y++,x+=++y;

printf(\

A)20,7 B)6,12 C)20,8 D)8,20

【题5.6】下面程序段的运行结果是 。

int n=0;

while(n++<=2); printf(\

A)2 B)3 C)4 D)语法错误

【题5.7】设有程序段

t=0;

while(printf(\{t++;

if(t<3) break; }

下面描述正确的是 。

A)其中循环控制表达式与0等价 B)其中循环控制表达式与'0'等价 C)其中循环控制表达式是不合法的 D)以上说法都不对

【题5.8】下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输

入一对相等数时结束循环,请选择填空。 #include main() {int a,b,t;

scanf(\while( ) {if (a>b)

{t=a;a=b;b=t;}

printf(\scanf(\} }

A)!a=b B)a!=b C)a==b D)a=b

【题5.9】下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m

和小写字母的个数n,并输出m,n中的较大者 #include main()

{ int m=0,n=0; char c; while ((【1】)!='\\n') { if(c>='A'&&c<='Z') m++;

if (c>='a'&&c<='z') n++;

}

printf(\【2】); }

【1】A)c=getchar() B)getchar()

C) getchar() D)scanf(\【2】A) n:m B)m:n

C)m:m D)n:n

【题5.10】下面程序的功能是将小写字母变成对应大写字母后的第二个字母,

其中y变成A,z变成B。请选择填空。 #include \main() { char c;

while ((c=getchar())!='\\n') { if (c>='a'&&c<='z')

{【1】; if (c>'Z') 【2】; }

printf(\} }

【1】A)c+=2 B)c-=32 C)c=c+32+2 D)c-=30

【2】A)c='B' B)c='A' C)c-=26 D)c=c+26

【题5.11】下面程序的功能是在输入一批正整数中求出最大者,输入0结束循环,

请选择填空 。 #include \main()

{int a,max=0; scanf(\while ( ) {if (max

printf(\

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

【题5.12 】下面程序的运行结果是 。

#include main()

{int num=0; while(num<=2) {num++;

printf(\} }

A)1 B)1 C)1 D)1

2 2 2 3 3 4

【题5.13】若运行以下程序时,从键盘输入2473(表示回车),则下面程

序的运行结果是 。 #include \{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);

default:putchar(c+2);break; }

printf(\}

A)668977 B)668966 C)66778777 D)6688766

【题5.14】以下程序的功能是计算一个整数的各位数字之和,请选择填空。 int n,m=1;

scanf(“%d”,&n);

for( ;n!=0;) { m【】; n/=10; }

printf(“%d”,m);

A) +=n B) =n C) +=n D) =n/10

【题5.15】以下能正确计算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);

【题5.16 】以下程序段 。

x=-1; do

{x=x*x;} while(!x);

A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误

【题5.17】以下描述中正确的是 。

A)while,do-while,for循环中的循环体语句都至少被执行一次 B)do-while循环中,在while(表达式)后面的分号可以省略

C) while循环体中,一定要有能使while后面表达式的值变为零(\假\的操作

D)do-while循环中,根据情况可以省略while。

【题5.18】若有语句如下,则程序段的输出是 。

int x=3;

do {printf(\A)1 B)1和-2 C)3和0 D)死循环

【题5.19】下面程序的功能是计算正整数2345的各位数字平方和。

#include \main()

{int n,sum=0; n=2345;

do {sum=sum+【1】;

n=【2】; } while(n);

printf(\

【1】A)n B)(n)*(n)

C)n/10 D)(n/10)*(n/10)

【2】A)n/1000 B)b/100

C)n/10 D)n

【题5.20】下面程序是从键盘输入学号,然后输出学号中百位数是3的学号,

输入0时结束循环。请选择填空。 #include main()

{long int num; scanf(\do

{if(【1】) printf(\ scanf(\}while(【2】); }

【1】A)num0/10==3 B)num/100==3 C)num/10==3 D)num/10==3

【2】A)!num B)num>0==0

C)!num==0 D)!num!=0

【题5.21】等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和

小于100的最大n,请选择填空。 #include main()

{int a,q,n,sum; a=1;q=2;n=sum=0; do

{【1】; ++n;a*=q;

}while(sum<100); 【2】;

printf(\}

【1】A)sum++ B)sum+=a C)sum*=a D)a+=sum 【2】A)n=n-2 B)n=n C)n++ D)n-=1

【题5.22】下面程序的功能是把316表示为两个加数的和,使两个加数分别能

被13和11整除。请选择填空。 #include main()

{ int i=0,j,k;

do{i++;k=316-13*i;}while( ); j=k/11;

printf(\}

A)k/11 B)k C)k/11==0 D)k/11==0

【题5.23】下面程序的运行结果是 。

A) 将属出## B) 将输出##* C) 是死循环

D) 含有不合发的控制表达式

【题5.47】以下是死循环的程序段是【 】

A) for (i=1; ; )

{ if (++i%2= =0) continue; if ( ++i%3= =0) break; }

B) i=32767;

do { if (i<0) break;} while(++i); C) for (i=1; ; ) if(++i<10) continue; D) i=1;

while (i--);

【题5.48】以下描述正确的是【 】

A) goto语句只能用于退出多层循环

B) switch语句中不能出现continue语句 C) 只能用continue语句来终止本次循环 D) 在循环中break语句不能独立出现

【题5.49】与下面程序段等价的是【 】 for(n=100;n<=200;n++) { if(n%3= =0) continue; printf(“M”,n); }

A) for(n=100; (n%3&&n<=200;n++) printf(“M”,n); B) for (n=100;(n%3) | | n<=200;n++) printf(“M”,n); C) for (n=100;n<=200;n++) if(n%3!=0) printf(“M”,n); D) for(n=100;n<=200;n++)

{ if(n%3) printf(“M”,n); else continue; break; }

【题5.50】下面程序的功能是将从键盘输入的偶数写成两个素数之和。请选择

填空【】

#include #include main()

{ int a,b,c,d;

scanf (“M”,&a); for (b=3;b<=a/2;b+=2)

{ for(c=2;c<=sqrt(b);c++) if(b%c= =0) break; if(c>sqrt(b)) d=【】; else break;

for(c=2;c<=sqrt(d);c++) if(d%c= =0) break;

if (c>sqrt(d)) printf (“%d=%d+%d\\n”,a,b,d); } }

A) a+b B) a-b C) a*b D) a/b

【题5.51】下面程序的运行结果是【 】 #include main()

{ int k=0;char c=’A’; do

{ switch(c++)

{ case ‘A’: k++;break; case’B’: k--;

case’C’: k+=2;break; case’D’: k=k%2;continue; case’E’: k=k*10;break; default: k=k/3; } k++;

} while(c<’G’); pintf(“k=%d\\n”,k); }

A) k=3 B) k=4 C) k=2 D) k=0

【题5.52】若运行以下程序时,从键盘输入3.6 2.4 <回车>,则下面程序的运

行结果是【】

#include #include main()

{ float x,y,z;

scanf(“%f%f”,&x&y); z=x/y;

while(1)

if(fabs(z)>1.0) { x=y;y=z;z=x/y} else break;

printf(“%f\\n”,y); }

A) 1.500000 B) 1.600000 C) 2.000000 D) 2.400000

【题5.53】下面程序的运行结果是【 】 #include 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); }

A) 7 B) 8 C) 9 D) 10

【5.54】 下面程序的运行结果是【 】 #include main()

{ int i,j,x=0;

for (i=0;i<=2;i++) { x++;

for(j=0;j<=3;j++) { if (j%2) continue; x++; }

x++;

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

A) x=4 B) x=8 C) x=6 D) x=12

【题5.55】 下面程序的运行结果是【 】

#include main() { int i;

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

{ if(i%2) printf(“*”); else continue; printf(“#”); }

printf(“$\\n”); }

A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$

【题5.56】下面程序的运行结果是【 】 main()

{ int i,j,a=0;

for(i=0;i<=2;i++) { for(j=0;j<=4;j++) { if( j%2) break a++; } a++; }

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

A) 4 B) 5 C) 6 D) 7

5.2填空题

【题5.57】下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符

结束循环。请填空。

int n=0,c; c=getchar(); while(【1】)

{ if(【2】) n++; c=getchar(); }

【题5.58】下面程序的功能是用公式:π2/6≈1/12+1/22+1/32+...+1/n2求π的

近似值,直到最后一项的值小于10-6为止,请分析程序填空。

#include #include

main()

{long i=1; 【1】pi=0;

while(i*i>=1e6) {pi=【2】;i++;} pi=sqrt(6.0*pi);

printf(\}

【题5.59】有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两

个,下面的

程序统计卖完所需的天数。请填空. #include main()

{int day,x1,x2; day=0;x1=1020;

while(【1】){x2=【2】;x1=x2;day++;} printf(\}

【题5.60】下面程序的功能是用辗转相除法求两个正整数的最大公约数。请填

空【】 #include

main()

{ int r,m,n;

scanf(“%d%d”,&m,&n); if( m

while(r) { m=n;n=r;r=【2】; } printf(%d\\n”,n); }

【题5.61】当运行下列程序时,从键盘键入“right?<回车>”,则下面程序的

运行结果是【】

#include main() { char c;

while((c=getchar())!=’?’) putchar(++c); }

【题5.62】下面程序的运行结果是【 】 #include main()

{ int a,s,n,count;

main()

{ int i,j,k; n=0;

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

for(k=0;k<=8; 【1】) if(k!=i)

for(j=0;j<=9;j++) if【2】) n++; printf(“n=%d\\n”,n); }

【题5.87】下面程序的功能是输出1——100之间满足每位数的乘积大于每位数

的和的数。请填空。

#include main()

{ int n,k=1,s=0,m; for(n=1;n<=100;n++) { k=1;s=0

【1】;

while(【2】) { k*=m; s+=m; 【3】; }

if(k>s) printf(“%d”,n); } }

【题5.88】下面程序的功能是求1000以内的所有完全数。请填空。(说明:一

个数如果恰好等于它的因子之和(除自身外),则称该数为完全数。例如:6=1=2+3,6是完全数)

#include main()

{ int a,i,m;

for(a=1;a<=1000;a++)

{ for(【1】;i<=a/2;i++) if(!(a%i)) 【2】; if(m==a) printf(“M”,a);

} }

【题5.89】下面程序的功能是完成用100元人民币换成1元,2元.5元的所有

兑换方案。请填空。 #include main()

{ int i,j,k,l=1;

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

for(j=0;j<=50;j++) { k=【1】; if(【2】)

{ printf(“- - -”,i,j,k); l=l+1;

if(1%5==0) printf(“\\n”); } } }

【题5.90】下面程序的功能是从3个红球.5个白球.6个黑球中任意取出8个球,

且其中必须有白球,输出所有可能的方案。请填空。

#include main()

{ int i,j,k;

printf(“\\n gong bai hei\\n”); for(i=0;i<=3;i++)

for(【1】;j<=5;j++) { k=8-i-j ;

If(【2】) printf(“= = =\\n”,i,j,k); } }

【题5.91】若从键盘输入65 14<回车>,则下面程序的运行结果是【】。 #include main()

{ int m,n;

printd(“Enter m,n:”); scanf(“%d %d”,&m,&n); while(m!=n)

{ while(m>n) m-=n;

While(n>m)n-=m; }

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

【题5.92】下面程序的运行结果是【】。 #include main()

{ int y,a; y=2;a=1;

while(y--!=-1)

{ do{a*=y; a++} while(y--);} printf(“%d,%d”,a,y); }

【题5.93】下面程序的运行结果是【】。 #include

main() int i,j;

for(i=0;i<=3;i++) { for(j=0;j<=5;j++)

if(i= =0||j= =0||i= =3||j= =5) printf(“*”); else printf(“ ” ); printf(“\\n”); } }

【题5.94】下面程序的运行结果是【】。 #include main() {int i,j;

for(i=4;i>=1;i--)

{ for j=1;j<=i;j++} putchar(‘#’); for j=1;j<=4-i;j++} putchar(‘*’); putchar(‘\\n’); } }

【题5.95】下面程序的运行结果是【】。 #include main()

{int i,k=0;

for(i=1; ;i++) { k++;

while(k

if(k%3= =0) goto loop; }

}

loop:printf(“%d %d”,i,k); }

【题5.96】下面程序的运行结果是【】。 i=1;s=3; do

{ s+=i++;

if(s%7= =0) continue; else ++I; } while(s<15); printf(“%d”,i);

【题5.97】用0——9之间不同3个数构成一个3位数,下面程序将统计出共有

多少种方法。请填空。

#include main()

{ int i,j,k,count=0; for(i=1;i<=9;i++) for(j=0;j<=9;j++)

if(【1】) coutinue; else

for(k=0;k<=9;k++) if(【2】) count++; printf(“%d”,count); }

【题5.98】下面程序的功能是计算100——1000之间有多少个数其各位数字之

和是5。请填空。

#include main()

{ int i,s,k,count=0;

for(i=100;i<=1000;i++) { s=0;k=i;

While(【1】) {s=s+k; k=【2】;} if(s!=5) 【3】; else count++; }

Printf(“%d”,count); }

【题5.99】下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整

除的数。若找到,7出此数;若未找到,打印not exit。请填空。

#include main() { int i,a;

for(i=1;i<=10;i++) { scanf(“%d”,&a); if(a%7= =0) 【1】; }

if【2】printf(“%d\\n”,a); else printf(“not exit\\n”); }

【题5.100】下面程序的功能是打印100以内个位数为6且能被3整除的所有数。

请填空。

#include main()

{ inti,j;

for(i=0; 【1】;i++) { j=i*10+6;

if(【2】) continue;

printf(“%d”,j);

} }

【题5.101】下面程序的运行结果是【】。 #include main()

{ int i=1;

while(i<=15)

if(++i%3!=2) continue; else printf(“%d”,i); printf(“\\n”); }

【题5.102】下面程序的运行结果是【】。 #include main()

{ int i,j,k=19; while(i=k-1) { k-=3;

if(k%5= =0) {i++;continue;} else if(k<5) break; i++; }

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

【题5.103】下面程序的运行结果是【】。 #include main() { int a,y; a=10;y=0; do

{ a+=2;y+=a; if(y>50) break; } while(a=14);

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

【题5.104】下面程序的运行结果是【】。 #include main()

{ int i=5; do

{ switch(i%2)

{ case4:i--;break; Case6:i--;continue; }

i--;i--;

printf(“%d”,i); } while(i>0); }

5.3 编 程 题

【题5.105】每天苹果0.8元,第一天买2个苹果;从第二天开始,每天买前一

天的2倍,直至购买的苹果数达到不超过100的最大值,编写程序求每天平均花多少钱。

【题5.106】试编程序,找出1——99之间的全部同构数,同构数是这样一组数;

出现在平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是构数。

【题5.107】假设x,y是整数,编写程序求xy的最后3位数,要求x,要从键盘输入。

【题5.108】编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。

第五章 循环结构

5.1选择题

【题5.1】C 【题5.2】B 【题5.3】A 【题5.4】A 【题5.5】D 【题5.6】C 【题5.7】B 【题5.8】B 【题5.9】【1】C【2】A 【题5.10】【1】D 【2】C

【题5.11】B 【题5.12】C 【题5.13】A 【题5.14】A 【题5.15】C 【题5.16】C

【题5.17】C 【题5.18】B 【题5.19】【1】B 【2】C 【题5.20】【1】B 【2】C 【题5.21】【1】B 【2】D

【题5.22】B 【题5.23】D 【题5.24】D

【题5.25】B 【题5.26】D 【题5.27】B

【题5.28】B 【题5.29】C 【题5.30】A

【题5.31】C 【题5.32】D 【题5.33】C 【题5.34】C 【题5.35】D 【题5.36】D 【题5.37】【1】B 【2】C

【题5.38】B 【题5.39】D 【题5.40】C 【题5.41】【1】C 【2】D 【题5.42】【1】C 【2】A

【题5.43】D 【题5.44】B 【题5.45】D 【题5.46】C 【题5.47】C 【题5.48】C

【题5.49】C 【题5.50】B 【题5.51】B

【题5.52】B 【题5.53】B 【题5.54】B

【题5.55】A 【题5.56】A

5.2填空题

【题5.57】【1】c!=’\\n’ 【2】c>=’0’&&c<=’9’ 【题5.58】【1】double 【2】pi+1.0/(i*i) 【题5.59】【1】x1 【2】x1/2-2 【题5.60】【1】r=m,m=n,n=r 【2】m%m 【题5.61】sjhiu 【题5.62】s=254 【题5.63】5,5 【题5.64】36 【题5.65】3 【题5.66】* * 【题5.67】a=-5 【题5.68】【1】i%3= =2&&i%5= =&&i%7= =2 【2】j%5= =0 【题5.69】【1】n 【2】max=t 【题5.70】sum%4= =0 【题5.71】【1】s 【2】s/10 【题5.72】k=14 n=-1 【题5.73】x=1,y=20 【题5.74】1,3,7,15, 31,63, 【题5.75】m=4 n=2 【题5.76】i<=x

【题5.77】2*x+4*y= =90 【题5.78】-1 【题5.79】【1】1 【2】3 【题5.80】【1】t=t*i 【2】t=t-t/i 【题5.81】【1】(b-a)/n 【2】sin(a+i*h)*cos(a+i*h) 【题5.82】【1】e=1.0 【2】new>=1e-6 【题5.83】sum=19 【题5.84】* #

【题5.85】* * * * # 【题5.86】【1】k+=2 【2】j!=i&&j!=k 【题5.87】【1】m=n 【2】m 【3】m/=10 【题5.88】【1】m=0,i=1 【2】m+=i 【题5.89】【1】100-i*5-j*2 【2】k>=0 【题5.90】【1】j=1 【2】k>=0&&k<=6 【题5.91】m=1 【题5.92】1,-2

【题5.93】* * * * * *

* *

* * * * * * * * 【题5.94】# # # # # # # * # # * * # * * * 【题5.95】2,3 【题5.96】8 【题5.97】【1】i= =j 【2】k!=i&&k!=j 【题5.98】【1】k 【2】k/10 【题5.99】【1】break 【2】i<=10 【题5.100】【1】i<=9 【2】j%3!=0 【题5.101】2 5 8 11 14 【题5.102】i=6,k=4 【题5.103】a=16 y=60 【题5.104】3 1 -1

5.3编程题

【题5.105】#include main( )

{ int day=0,buy=2; float sum=0.0, ave; do

{ sum+=0.8*buy; day++; buy*=2; } while(buy<=100); ave=sum/day;

printf(“%f”,ave); }

【题5.106】#include main( ) { int i;

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

if(i*i= =i| |i0= =i) printf(“=”,i); } 或:

#include main( ) { int i;

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

if(i*i= =i) printf(“=”,i);

else if(i*i0= =i) printf(“=”,i);

3】continue 【 }

【题5.107】#include main( )

{ int i,x,y; long last=1;

printf(“Input xand y:”); scanf(“%d%d”,&x,&y); for(i=1;i<=y;i++) last=last*x00;

printf(“The last 3 digits:\\n”,last); }

【题5.108】#include main( ) { int i,j;

float g,sum,ave; for(i=1;i<=6;i++) { sum=0;

for(j=1;j<=5;j++) { scanf(“%f”,&g); sum+=g; }

ave=sum/5;

printf(“No.%d ave=%5.2f\\n”,I,ave); } }

键盘输入 95 70 73 67 64<回车> 60 65 77 86 90<回车> 71 93 63 80 90<回车> 87 83 91 95 89<回车>

100 93 89 92 85<回车>

52 63 66 70 71<回车> 运行结果No.ave=73.80 No.ave=75.60 No.ave=79.40 No.ave=89.00 No.ave=91.80 No.ave=64.40

本文来源:https://www.bwwdw.com/article/qf8x.html

Top