C语言程序设计第23章习题答案魏为民.docx

上传人:b****3 文档编号:4008714 上传时间:2022-11-27 格式:DOCX 页数:20 大小:27.57KB
下载 相关 举报
C语言程序设计第23章习题答案魏为民.docx_第1页
第1页 / 共20页
C语言程序设计第23章习题答案魏为民.docx_第2页
第2页 / 共20页
C语言程序设计第23章习题答案魏为民.docx_第3页
第3页 / 共20页
C语言程序设计第23章习题答案魏为民.docx_第4页
第4页 / 共20页
C语言程序设计第23章习题答案魏为民.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言程序设计第23章习题答案魏为民.docx

《C语言程序设计第23章习题答案魏为民.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第23章习题答案魏为民.docx(20页珍藏版)》请在冰豆网上搜索。

C语言程序设计第23章习题答案魏为民.docx

C语言程序设计第23章习题答案魏为民

习题2参考答案

一、基础题

1.若二维数组a有m列,则在a[i][j]前的元素个数为:

A)j*m+iB)i*m+j

C)i*m+j-1D)i*m+j+1

B

2.在C语言中(以16位PC机为例),五种基本数据类型存储空间长度的排列顺序是:

A)char

B)char=int

C)char

D)char=int=longint<=float

A

3.在C语言的变量类型说明中,int,char,float等类型的长度是:

A)固定的B)由用户自己定义的

C)任意的D)与机器字长有关的

D

4.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f的数据类型是:

A)int型B)float型C)double型D)不确定

C

5.C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符:

A)必须为字母B)必须为下划线

C)必须为字母或下划线D)可以是字母,数字或下划线中的任意一种

C

6.设a=1,b=2,c=3,d=4,则表达式a

a:

c

a:

d的值是:

A)4B)3C)2D)1

D

7.以下程序的输出结果是:

main()

{inta=12,b=12;

printf("%d,%d\n",--a,++b);

}

A)10,10B)12,12C)11,10D)11,13

D

8.若有代数式(3ae)/(bc),则下面不正确的C语言表达式是:

A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*3

C

9.已知x=43,ch='A',y=0,则表达式(x>=y&&ch<'B'&&!

y)的值是:

A)0B)语法错C)1D)"假"

C

10.下面程序的输出结果是:

main()

{inta=-1,b=4,k;

k=(a++<=0)&&(!

(b--<=0));

printf("%d,%d,%d\n",k,a,b);

}

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

B

11.已知字母A的ASCII码为十进制的65,下面程序的输出是:

main()

{charch1,ch2;

ch1='A'+'5'-'3';

ch2='A'+'6'-'3';

printf("%d,%c\n",ch1,ch2);

}

A)67,DB)B,CC)C,DD)不确定的值

A

12.下面程序的输出的是

main()

{intx=10,y=3;

printf("%d\n",y=x/y);

}

A)0B)1C)3D)不确定的值

C

二、程序设计题

1.从键盘上输入一个小写字母,编程输出其对应的大写字母以及它们的十进制ASCII码。

程序如下:

#include

voidmain()

{

charch;

printf("Pleaseinputalowercharacter:

");

ch=getchar();

printf("Loweris%c,ASCIIis%d\n",ch,ch);

printf("Upperis%c,ASCIIis%d\n",ch-32,ch-32);

}

2.一个水分子的质量约为3.0×10-23g,1夸脱水大约950g。

编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少水分子。

程序如下:

#include

voidmain()

{

doubleq,m;

printf("Pleaseinputthequalityofwater(quart):

");

scanf("%lf",&q);

m=q*950.0/(3.0e-23);

printf("Themoleculusof%fquartwateris%e\n",q,m);

}

3.写出下列程序的运行结果:

#include

voidmain()

{

charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;

printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);

printf(“\t\b%c%c\n”,c4,c5);

}

运行结果:

aabbccabc

AN

4.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'。

写出程序,使之输出下面的结果。

a=3b=4c=5

x=1.200000,y=2.400000,z=-3.600000

x+y=3.60y+z=-1.20z+x=-2.40

u=51274n=127865

c1=‘a’orc1=97

c2=‘b’orc2=98

程序如下:

#include

voidmain()

{

inta=3,b=4,c=5;

doublex=1.2,y=2.4,z=-3.6;

unsignedintu=51274,n=128765;

charc1='a',c2='b';

printf("a=%db=%dc=%d\n",a,b,c);

printf("x=%f,y=%f,z=%f\n",x,y,z);

printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);

printf("u=%un=%u\n",u,n);

printf("c1='%c'orc1=%d\n",c1,c1);

printf("c2='%c'orc2=%d\n",c2,c2);

}

5.用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。

说明在键盘上如何输入数据。

#include

voidmain()

{

inta,b;

floatx,y;

charc1,c2;

scanf(“a=%db=%d”,&a,&b);

scanf(“x=%fy=%e”,&x,&y);

scanf(“c1=%c,c2=%c”,&c1,&c2);

}

输入数据:

a=3b=7x=8.5y=7.182e1c1=A,c2=a<回车>

验证程序:

#include

voidmain()

{

inta,b;

floatx,y;

charc1,c2;

scanf("a=%db=%d",&a,&b);

scanf("x=%fy=%e",&x,&y);

scanf("c1=%c,c2=%c",&c1,&c2);

printf("a=%db=%d\n",a,b);

printf("x=%.2fy=%.2f\n",x,y);

printf("c1=%c,c2=%c\n",c1,c2);

}

6.编写程序,输入一个华氏温度,求出相应的摄氏温度(输出结果保留两位有效数字)。

公式为:

程序如下:

#include

voidmain()

{

floatf,c;

printf("Pleaseinputf=");

scanf("%f",&f);

c=5.0/9*(f-32);

printf("f=%0.2f,c=%0.2f\n",f,c);

}

习题3

一、基础题

1.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的表达式是

A)'a'&&'b'B)a<=b

C)a||b+c&&b-cD)!

((a

c||1)

D

2.设x.y.z.t均为int型变量,则执行以下语句后,t的值为

x=y=z=1;

t=++x||++y&&++z;

A)不定值B)4C)1D)0

C

3.若运行下面程序时,给变量a输入15,则输出结果是()。

main()

{inta,b;

scanf("%d",&a);

b=a>15?

a+10:

a-10;

printf("%d\n",b);

}

A)5B)25C)15D)10

A

4.下面程序的输出结果是

#include

main()

{inta=2,b=7,c=5;

switch(a>0)

{case1:

switch(b<0)

{case1:

printf("@");break;

case0:

printf("!

");break;

}

case0:

switch(c==5)

{case0:

printf("*");break;

case1:

printf("#");break;

default:

printf("%%");break;

}

default:

printf("&");

}printf("\n");

}

A)&B)!

#&C)%%D)@*&

B

5.以下程序的运行结果是()。

main()

{inta=0,b=1,c=0,d=20,x;

if(a)d=d-10;

elseif(!

b)

if(!

c)x=15;

elsex=25;

printf("%d\n",d);

}

A)15B)25C)20D)10

C

6.若k是int型变量,且有下面的程序片段:

k=8;

if(k<=0)

if(k==0)printf("####")

elseprintf("&&&&");

elseprintf("****");

上面程序片段的输出结果是

A)####B)&&&&C)****D)有语法错误,无输出结果

D(第一个printf语句少分号)

7.假定所有变量均已正确说明,下列程序段运行后x的值是

a=b=c=0;x=35;

if(!

a)x--;

elseif(b);

if(c)x=3;

elsex=4;

A)34B)4C)35D)3

B

8.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是

for(i=5;i;i--)

for(j=0;j<4;j++){...}

A)20B)25C)24D)30

A

9.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为

for(i=0,j=10;i<=j;i++,j--)k=i+j;

A)12B)10C)11D)9

B

10.有以下程序段

intk=0;

while(k=1)k++;

while循环执行的次数是

A)无限次B)有语法错,不能执行C)一次也不执行D)执行一次

A

11.C语言中while和do-while循环的主要区别是()。

A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比do-while的循环控制条件严格

C)do-while允许从外部转到循环体内

D)do-while的循环体不能是复合语句

A

12.以下叙述正确的是()。

A)continue语句的作用是结束整个循环的执行

B)只能在循环体内和switch语句体内使用break语句

C)在循环体内使用break语句或continue语句的作用相同

D)从多层循环嵌套中退出时,只能使用goto语句

B

13.对下面程序段,描述正确的是()。

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

{scanf("%d",&x);

if(x<0)continue;

printf("%d\n",t);

}

A)当x<0时,整个循环结束B)当x>=0时,什么也不输出

C)printf函数永远也不执行D)最多允许输出100个非负整数

D

14.以下程序的输出结果是()。

#include

main()

{inti;

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

if(i%2)

printf("*");

elsecontinue;

printf("#");

printf("$\n");

}

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

A

15.以下程序的输出结果是()。

#include

main()

{intcount,i=0;

for(count=1;count<=4;count++)

{i+=2;printf("%d",i);}

}

A)20B)246C)2468D)2222

C

16.下面程序的输出结果是()。

main()

{unsignedintnum,k;

num=26;k=1;

do{

k*=num%10;

num/=10;

}while(num);

printf("%d\n",k);

}

A)2B)12C)60D)18

B

17.下面程序的输出结果是()。

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x--,y);

}

A)10192B)9876C)10990D)101091

D

18.设有以下程序

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!

=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序运行后,如果从键盘上输入1298,则输出结果为(8921)。

8921

19.下面程序的运行结果是()。

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",--i);

}

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

B

20.以下程序运行后的输出结果是()。

#include

main()

{ints=0,k;

for(k=7;k>=0;k--)

{switch(k)

{

case1:

case4:

case7:

s++;break;

case2:

case3:

case6:

break;

case0:

case5:

s+=2;break;}

}

printf("s=%d\n",s);

}

A)s=5B)s=1C)s=3D)s=7

D

21.下面程序的功能是:

计算1到10之间奇数之和及偶数之和,请填空。

#include

main()

{inta,b,c,i;

a=c=0;

for(i=0;i<=10;i+=2)

{a+=i;

______;

c+=b;

}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);

}

A)i+=2B)i++C)b=b+1D)b=i+1

D

22.运行以下程序后,如果从键盘上输入12,8<回车>,则输出结果为()。

main()

{inta,b,n1,n2,t;

scanf("%d,%d",&n1,&n2);

if(n1>n2)

{t=n1;n1=n2;n2=t;}

a=n1;b=n2;

while(b!

=0)

{t=a%b;

a=b;

b=t;}

printf("%d,%d\n",a,n1*n2/a);

}

A)2,6B)4,24C)4,12D)8,96

B

二、程序设计题

1.输入一个实数x,计算并输出下式的值,直到最后一项的绝对值小于10-5(保留两位小数)。

程序如下:

#include

#include

main()

{

floatx;

intn=1;

floats=0.0,term;

printf("Pleaseinputthex:

");

scanf("%f",&x);

term=1.0*x/n;

while(fabs(term)>10e-5)

{

s=s+term;

n=n+1;

term=term*x/n;

}

printf("Theresultis:

%.2f\n",s);

}

2.输入园的半径r,求该圆的周长、面积。

结果保留两位小数。

程序如下:

#include

voidmain()

{

floatpi=3.14,s,c,r;

printf("请输入圆的半径:

");

scanf("%f",&r);

s=pi*r*r;

c=2*pi*r;

printf("圆的面积为:

%f,周长为:

%f\n",s,c);

}

3.有一分数序列,求出这个数列前20项之和。

程序如下:

#include

voidmain()

{

inti,n=20;

doubles=0,a,b,c;

for(a=2,b=1,s=0,i=1;i<=n;i++){

s+=a/b;

c=b,b=a,a=a+c;//调整下一项的分子分母

}

printf("s=%f\n",s);

}

4.百钱买百鸡问题:

鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。

凡百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

程序如下:

#include

voidmain()

{

intCock,Hen,Chick;

for(Cock=0;Cock<=20;Cock++){

for(Hen=0;Hen<=33;Hen++){

Chick=100-Cock-Hen;

if(Cock*5+Hen*3+Chick/3.0==100){

printf("Cock=%d,Hen=%d,Chick=%d\n",Cock,Hen,Chick);

}

}

}

}

5.输入两个正整数m和n,求其最大公约数和最小公倍数。

提示:

求最大公约数的算法如下:

(1)将两个数中较大的放在变量m中,较小的放在n中;

(2)求出m被n除后的余数;

(3)若余数为0,转步骤(7),否则转步骤(4);

(4)把除数作为新的被除数,余数作为新的除数;

(5)求出新的余数;

(6)重复步骤(3)~(5);

(7)输出n,即为最大公约数。

最小公倍数=(m×n)÷最大公约数。

程序如下:

#include

main()

{

intp,r,n,m,temp;

printf("请输入两个正整数n,m:

");

scanf("%d,%d",&n,&m);

if(n

{

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!

=0)

{

r=n%m;

n=m;

m=r;

}

printf("它们的最大公约数为:

%d\n",n);

printf("它们的最小公倍数为:

%d\n",p/n);

}

6.编程求Sn=a+aa+aaa+…+aaa…a的值,其中a和n的值从键盘上输入。

例如当a=2,n=4时,Sn=2+22+222+2222=2468。

程序如下:

#include

main()

{

inta,n,i=1,sn=0,tn=0;

printf("a,n=");

scanf("%d,%d",&a,&n);

while(i<=n)

{

tn=tn+a;

sn=sn+tn;

a=a*10;

i++;

}

printf("a+aa+aaa+....=%d\n",sn);

}

7.编写一程序,功能是输入一个整数,将它反向输出。

例如,输入12345,则输出54321。

程序如下:

#include

voidmain()

{

intx;

printf("inputx:

");

scanf("%d",&x);

while(x>0){

printf("%d",x%10);

x=x/10;

}

}

8.编程解决数学题:

有一长阶梯,若每步跨2阶,最后剩1阶;若每步跨3阶,最后剩2阶;若每步跨5阶,最后剩4阶;若每步跨6阶,最后剩5阶;只有每步跨7阶,最后才正好1阶不剩。

问这条阶梯共有多少阶?

程序如下:

#include

voidmain()

{

intStep=0;

while

(1)

{

if((Step%2==1)&&(Step%3==2)&&(Step%5==4)&&(Step%6==5)&&(Step%7==0))break;

Step++;

}

printf("TheStepis%d\n",Step);

}

9.编程解决三色球问题。

若一个口袋中放有12个球,其中3个红色球,3个白色球,6个黑色球,从中任取8个球,问共有多少种不同的颜色搭配?

程序如下:

#include

main()

{

intwhite,red,black,count=0;

for(white=1;white<=3;white++)

for(red=1;red<=3;red++)

{

black=8-white-red;

if(black<=6){

count=count+1;

printf("white\t%d\tred\t%d\tblack\t%d\n",white,red,black)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1