C语言程序设计第23章习题答案魏为民Word格式.docx
《C语言程序设计第23章习题答案魏为民Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第23章习题答案魏为民Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
!
y)的值是:
A)0B)语法错C)1D)"
假"
10.下面程序的输出结果是:
{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
11.已知字母A的ASCII码为十进制的65,下面程序的输出是:
{charch1,ch2;
ch1='
+'
5'
-'
3'
;
ch2='
6'
%d,%c\n"
ch1,ch2);
A)67,DB)B,CC)C,DD)不确定的值
12.下面程序的输出的是
{intx=10,y=3;
%d\n"
y=x/y);
A)0B)1C)3D)不确定的值
二、程序设计题
1.从键盘上输入一个小写字母,编程输出其对应的大写字母以及它们的十进制ASCII码。
程序如下:
#include<
>
voidmain()
{
charch;
Pleaseinputalowercharacter:
"
);
ch=getchar();
Loweris%c,ASCIIis%d\n"
ch,ch);
Upperis%c,ASCIIis%d\n"
ch-32,ch-32);
2.一个水分子的质量约为×
10-23g,1夸脱水大约950g。
编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少水分子。
doubleq,m;
Pleaseinputthequalityofwater(quart):
scanf("
%lf"
&
q);
m=q*;
Themoleculusof%fquartwateris%e\n"
q,m);
3.写出下列程序的运行结果:
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=,y=,z=,u=51274,n=128765,c1='
,c2='
b'
。
写出程序,使之输出下面的结果。
a=3b=4c=5
x=,y=,z=
x+y=y+z=z+x=
u=51274n=127865
c1=‘a’orc1=97
c2=‘b’orc2=98
inta=3,b=4,c=5;
doublex=,y=,z=;
unsignedintu=51274,n=128765;
charc1='
c2='
a=%db=%dc=%d\n"
a,b,c);
x=%f,y=%f,z=%f\n"
x,y,z);
x+y=%y+z=%z+x=%\n"
x+y,y+z,z+x);
u=%un=%u\n"
u,n);
c1='
%c'
orc1=%d\n"
c1,c1);
c2='
orc2=%d\n"
c2,c2);
5.用下面的scanf函数输入数据,使a=3,b=7,x=,y=,c1='
说明在键盘上如何输入数据。
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=y==A,c2=a<
回车>
验证程序:
a=%db=%d"
x=%fy=%e"
c1=%c,c2=%c"
a=%db=%d\n"
a,b);
x=%.2fy=%.2f\n"
x,y);
c1=%c,c2=%c\n"
c1,c2);
6.编写程序,输入一个华氏温度,求出相应的摄氏温度(输出结果保留两位有效数字)。
公式为:
floatf,c;
Pleaseinputf="
%f"
f);
c=9*(f-32);
f=%,c=%\n"
f,c);
习题3
1.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的表达式是
A)'
B)a<
=b
C)a||b+c&
b-cD)!
((a<
b)&
c||1)
2.设x.y.z.t均为int型变量,则执行以下语句后,t的值为
x=y=z=1;
t=++x||++y&
++z;
A)不定值B)4C)1D)0
3.若运行下面程序时,给变量a输入15,则输出结果是()。
main()
{inta,b;
%d"
&
a);
b=a>
15a+10:
a-10;
b);
A)5B)25C)15D)10
4.下面程序的输出结果是
{inta=2,b=7,c=5;
switch(a>
0)
{case1:
switch(b<
@"
break;
case0:
}
switch(c==5)
{case0:
*"
case1:
#"
default:
%%"
break;
}printf("
\n"
A)&
B)!
#&
C)%%D)@*&
5.以下程序的运行结果是()。
{inta=0,b=1,c=0,d=20,x;
if(a)d=d-10;
elseif(!
b)
if(!
c)x=15;
elsex=25;
d);
A)15B)25C)20D)10
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
8.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是
for(i=5;
i;
i--)
for(j=0;
j<
4;
j++){...}
A)20B)25C)24D)30
9.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为
for(i=0,j=10;
i<
=j;
i++,j--)k=i+j;
A)12B)10C)11D)9
10.有以下程序段
intk=0;
while(k=1)k++;
while循环执行的次数是
A)无限次B)有语法错,不能执行C)一次也不执行D)执行一次
11.C语言中while和do-while循环的主要区别是()。
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
12.以下叙述正确的是()。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
13.对下面程序段,描述正确的是()。
for(t=1;
t<
=100;
t++)
{scanf("
x);
if(x<
0)continue;
t);
A)当x<
0时,整个循环结束B)当x>
=0时,什么也不输出
C)printf函数永远也不执行D)最多允许输出100个非负整数
14.以下程序的输出结果是()。
{inti;
for(i=1;
=5;
i++)
if(i%2)
elsecontinue;
$\n"
A)***#$B)#*#*#*$C)*#*#*#$D)**#*$
15.以下程序的输出结果是()。
{intcount,i=0;
for(count=1;
count<
=4;
count++)
{i+=2;
i);
A)20B)246C)2468D)2222
16.下面程序的输出结果是()。
{unsignedintnum,k;
num=26;
k=1;
do{
k*=num%10;
num/=10;
}while(num);
k);
A)2B)12C)60D)18
17.下面程序的输出结果是()。
{intx=10,y=10,i;
for(i=0;
x>
8;
y=++i)
%d%d"
x--,y);
A)10192B)9876C)10990D)101091
18.设有以下程序
{intn1,n2;
n2);
while(n2!
{n1=n2%10;
n2=n2/10;
n1);
程序运行后,如果从键盘上输入1298,则输出结果为(8921)。
8921
19.下面程序的运行结果是()。
{ints=0,i=1;
while(s<
=10)
{s=s+i*i;
i++;
--i);
A)4B)3C)5D)6
20.以下程序运行后的输出结果是()。
{ints=0,k;
for(k=7;
k>
=0;
k--)
{switch(k)
{
case4:
case7:
s++;
case2:
case3:
case6:
case5:
s+=2;
s=%d\n"
s);
A)s=5B)s=1C)s=3D)s=7
21.下面程序的功能是:
计算1到10之间奇数之和及偶数之和,请填空。
{inta,b,c,i;
a=c=0;
=10;
i+=2)
{a+=i;
______;
c+=b;
偶数之和=%d\n"
a);
奇数之和=%d\n"
c-11);
A)i+=2B)i++C)b=b+1D)b=i+1
22.运行以下程序后,如果从键盘上输入12,8<
,则输出结果为()。
{inta,b,n1,n2,t;
%d,%d"
n1,&
if(n1>
n2)
{t=n1;
n1=n2;
n2=t;
a=n1;
b=n2;
while(b!
{t=a%b;
a=b;
b=t;
%d,%d\n"
a,n1*n2/a);
A)2,6B)4,24C)4,12D)8,96
1.输入一个实数x,计算并输出下式的值,直到最后一项的绝对值小于10-5(保留两位小数)。
floatx;
intn=1;
floats=,term;
Pleaseinputthex:
term=*x/n;
while(fabs(term)>
10e-5)
s=s+term;
n=n+1;
term=term*x/n;
Theresultis:
%.2f\n"
2.输入园的半径r,求该圆的周长、面积。
结果保留两位小数。
#include<
voidmain()
{
floatpi=,s,c,r;
请输入圆的半径:
r);
s=pi*r*r;
c=2*pi*r;
圆的面积为:
%f,周长为:
%f\n"
s,c);
3.有一分数序列,求出这个数列前20项之和。
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;
..=%d\n"
sn);
7.编写一程序,功能是输入一个整数,将它反向输出。
例如,输入12345,则输出54321。
voidmain()
intx;
inputx:
"
scanf("
while(x>
0){
%d"
x%10);
x=x/10;
8.编程解决数学题:
有一长阶梯,若每步跨2阶,最后剩1阶;
若每步跨3阶,最后剩2阶;
若每步跨5阶,最后剩4阶;
若每步跨6阶,最后剩5阶;
只有每步跨7阶,最后才正好1阶不剩。
问这条阶梯共有多少阶
intStep=0;
while
(1)
if((Step%2==1)&
(Step%3==2)&
(Step%5==4)&
(Step%6==5)&
(Step%7==0))break;
Step++;
TheStepis%d\n"
Step);
9.编程解决三色球问题。
若一个口袋中放有12个球,其中3个红色球,3个白色球,6个黑色球,从中任取8个球,问共有多少种不同的颜色搭配
intwhite,red,black,count=0;
for(white=1;
white<
=3;
white++)
for(red=1;
red<
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);
}
Thetotalis%d\n"
count);
10.一位百万富翁遇到一位陌生人,陌生人找他谈一个换钱计划:
我每天给您10万元,而您第1天只需要给我1分钱,第2天我仍然给您10万元,您只需要给我2分钱,第3天我仍然给您10万元,您只需要给我4分钱……您每天给我的钱是前一天的2倍,直到30天后,计划终止。
请编写一个程序,如果按计划执行,计算30天后富翁给了陌生人多少钱,陌生人给了富翁多少钱。
intn;
doublet=,MillionairePay=,StrangerPay=;
for(n=1;
n<
=30;
n++)
StrangerPay=StrangerPay+;
MillionairePay=MillionairePay+t;
t=t*2;
Millionairepay:
%.2lf\n"
MillionairePay);
Strangerpay:
StrangerPay);
Strangergain:
MillionairePay-StrangerPay);
11.编程:
输入整数n,输出n的所有质因子。
例如n=13860,则输出:
2,2,3,3,5,7,11。
inti,n,k,flag=0;
Pleaseinputn="
n);
do
flag=0;
for(i=2;
if(n%i==0){flag=1;
k=i;
}
if(flag==1)
printf("
k);
n=n/k;
}while(n!
=1);
精心搜集整理,只为你的需要