C语言程序设计教材习题参考答案Word文件下载.docx
《C语言程序设计教材习题参考答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教材习题参考答案Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
voidmain()
{
floatx,y,bx,by;
x=208*2.87/287;
y=39.6*x/(10-2.08);
bx=x/10*100;
by=y/12.5*100;
printf("
bx=%5.1f\%\n"
bx);
by=%5.1f\%\n"
by);
}
确保通用性
#include<
stdio.h>
doublem1,m2,a,b,w1,w2;
请输入固体氯化钡样品的质量m1(g):
\n"
);
scanf("
%lf"
&
m1);
printf("
请输入加入水的质量m2(g):
m2);
请输入所取滤液的质量a(g):
a);
请输入完全反应后生成沉淀的质量b(g):
b);
w1=208*b/(287*a);
w2=208*b*(m1+m2)/(287*a*m1);
滤液中溶质的质量分数为:
%lf\n"
w1);
样品中氯化钡的质量分数为:
w2);
}
main()
*\n"
***\n"
*****\n"
}
3.
#defineMAX(x,y)((x)>
(y)?
(x):
(y))
#defineMIN(x,y)((x)<
floata,b;
Pleaseentertworealnumbers:
\n"
scanf("
%f%f"
a,&
%f\t"
MIN(a,b));
%f\n"
MAX(a,b));
stdlib.h>
voidmain()
FILE*fp;
if((fp=fopen("
f.txt"
"
w"
))==NULL)
{
Erroronopenf.txt!
exit(0);
fprintf(fp,"
%s"
Programmingisfun!
if(fclose(fp))
Cannotclosed:
\f.txtandstrikeanykeyexit!
getch();
#defineISLOWER(c)(c>
=97&
=132?
1:
0)
charx;
%c"
x);
ifISLOWER(x)
x);
6.
intyear=1986,r=76;
本世纪地球上见到哈雷彗星的年份是%d年!
year+r);
习题三
1.D2.C3.D4.A5.A6.A7.D8.B9.A10.D
11.C12.B13.B14.A
1.8
2.2
3.s=9
4.22
5.2
三、程序填空题
【1】m%n
【2】n
【3】w
【1】&
n
【2】s=0
【3】k
【4】s+=i++
【5】%ld
【1】i<
100
【2】i%3==0&
i%10==6
floatn,s=0,t=1;
for(n=1;
n<
=20;
n++)
t*=n;
s+=t;
1+2!
+3!
...+20!
=%e\n"
s);
2.
inti,j,k,n;
'
waterflower'
numberis:
"
for(n=100;
1000;
i=n/100;
/*分解出百位*/
j=n/10%10;
/*分解出十位*/
k=n%10;
/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
%-5d"
n);
intn=1;
floate=1,k;
k=1/n;
while(k>
=1e-6)
n++;
e+=k;
k=k/n;
n=%d\te=%f\n"
n,e);
inti;
floatk,s,fz=2,fm=1,newfz;
s=fz/fm;
for(i=2;
i<
i++)
{
newfz=fz+fm;
fm=fz;
fz=newfz;
k=fz/fm;
s+=k;
s=%f"
intday,x1,x2;
//第1天的桃子数为x1,第2天的桃子数为x2
x2=1;
//第10天只剩下1个
day=9;
//只考虑前9天
while(day>
x1=(x2+1)*2;
/*根据题意:
第2天剩下的桃子数x2=x1/2-1,也就是说:
第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
thetotalis%d\n"
x1);
6
inti,j,s;
for(j=2;
j<
j++)
s=j;
for(i=1;
j;
if((j%i)==0)
s=s-i;
if(s==0)
%disawanshu\n"
j);
7.
{inta,b,c,d,e,f,s1,s2,s3,s4,s5,s6;
//a,b,c,d,e,f各代表一个嫌疑人
for(a=0;
a<
=1;
a++)
for(b=0;
b<
b++)
for(c=0;
c++)
for(d=0;
d<
d++)
for(e=0;
e<
e++)
for(f=0;
f<
f++)
{s1=a||b;
//a,b至少一人作案
s2=!
a||!
d;
//a,d不可能是同案犯
s3=a&
e||a&
f||e&
f||a&
e&
f;
//a,e,f这3人中至少有两个人参与作案
s4=b&
c||!
b&
!
c;
//b,c或同时作案或本案无关
s5=c&
d||!
c&
//c,d中有且仅有一人作案
s6=d||!
e;
//如果d没有参与作案,则e也不可能参与作案
if(s1&
s2&
s3&
s4&
s5&
s6)
{if(a)
%c是作案人\n"
'
A'
if(b)
B'
if(c)
C'
if(d)
D'
if(e)
E'
if(f)
printf("
F'
}}
习题四
1.C2.D3.D4.B5.D6.B7.A8.C9.D10.C
11.B12.A13.D14.A
1.00
2.06
3.gets(s1);
4.strcpy(s2,s1);
5.\01
1.
10000
01000
00100
00010
00001
2.AQM
3.AzyD
4.9198
5.
574891
157489
915748
891574
489157
748915
四、程序填空题
【1】i==j
【2】a[i][j]
2.
【1】i-1
【2】a[j+1]=a[j]
【3】a[j+1]
3.
【1】*(a+i)=*(a+j)
【2】a+j
习题五
1.D2.B3.C4.D5.A6.C7.A8.D9.B10.C
11.C12.B13.C14.D15.C
1.整型
2.值传递地址传递
3.嵌套调用递归调用
4.全局变量局部变量动态变量静态变量
5.voiddothat(intn,doublex);
voiddothat(int,double);
6.动态变量静态变量
7.动态变量
8.静态变量
9.分配存储空间赋值
1.8,17
2.024681012141618
024681012141618
3.-125=-5*5*5
4.
i=5
i=2
i=4
【1】x2=mid
【2】x1=mid
【1】p++
【2】a[i]=a[i+1]
【1】floatfun(floata,floatb)
【2】x,y+fun(z,x+z)
【3】z,y
10
【2】array[i]
【3】return(avgr)
五、程序判断题
1.voidadd(inta,intb)改为intadd(inta,intb)
2.if(d%2=0)改为if(d%2==0)
s\=10;
改为s/=10;
3.intk;
i=5;
改为intk,i=5;
num[i]=0;
改为num[k]=0;
switch(s)改为switch(s[k])
4.s[j]=s[i];
改为s[j++]=s[i];
s[j]=”\0”;
改为s[j]='
\0'
;
习题六
1.B2.A3.B4.A5.A6.D7.D8.A9.D10.D
1.WangWu:
20
puter
【1】"
r"
【2】niu
【3】fclose(ma)
【1】FILE*fp
【2】ch!
='
\n'
【3】fclose(fp)
四、程序设计题
1.
structdate
intyear;
intmonth;
intday;
}x;
%d%d%d"
x.year,&
x.month,&
x.day);
%d年%d月%d日"
x.year,x.month,x.day);
voidReadDat();
voidWriteDat();
WriteDat();
ReadDat();
voidReadDat()
charch;
fp=fopen("
upper.txt"
while(!
feof(fp))
{ch=fgetc(fp);
putchar(ch);
fclose(fp);
voidWriteDat()
ch=getchar();
while(ch!
)
if(ch>
a'
ch<
z'
ch=ch-32;
fputc(ch,fp);
#include<
string.h>
charxx[50][80];
intmaxline=0;
/*文章的总行数*/
intReadDat(void);
voidWriteDat(void);
voidStrCharJR(void);
{
if(ReadDat())
数据文件in.txt不能打开!
\n\007"
);
return;
StrCharJR();
WriteDat();
voidStrCharJR(void)
inti,j;
for(i=0;
maxline;
for(j=0;
xx[i][j]!
xx[i][j]+=xx[i][j]>
>
4;
intReadDat(void)
FILE*fp;
inti=0;
if((fp=fopen("
in.txt"
"
))==NULL)return1;
while(fgets(xx[i],80,fp)!
=NULL)
i++;
maxline=i;
fclose(fp);
return0;
voidWriteDat(void)
inti;
fp=fopen("
OUT.txt"
for(i=0;
i<
maxline;
i++)
%s\n"
xx[i]);
fprintf(fp,"
习题七
一、程序阅读题
1.20
2.单链表的结构图如下:
输出结果为:
58634
二、程序设计题
conio.h"
process.h"
voidPrintTable(structCollelm*x);
/*打印集合元素*/
voidAppendToTable(structCollelm*x);
/*为集合x输入元素*/
voidAddition(structCollelm*x,structCollelm*y);
/*求集合x,y的并集*/
voidInsertToTable(structCollelm*x,intnumber);
/*向集合x中插入元素number*/
voidMultiply(structCollelm*x,structCollelm*y);
/*求集合x,y的交集*/
structCollelm*CreateTable();
/*创建空链表*/
structCollelm/*定义结构体*/
intnumber;
structCollelm*next;
};
structCollelm*CreateTable()/*创建空链表*/
structCollelm*c;
c=(structCollelm*)malloc(sizeof(structCollelm));
c->
number=0;
next=NULL;
return(c);
/*返回链表头指针*/
voidAppendToTable(structCollelm*x)/*向集合中添加元素x*/
%d"
&
number);
while(number)
InsertToTable(x,number);
scanf("
voidInsertToTable(structCollelm*x,intnumber)/*向集合x中插入一个元素number*/
structCollelm*newc,*last;
/*newc新建节点指针*/
last=x;
/*last是链表的尾指针*/
while(last->
next!
=NULL)
last=last->
next;
newc=(structCollelm*)malloc(sizeof(structCollelm));
newc->
number=number;
last->
next=newc;
newc->
next=NULL;
voidAddition(structCollelm*x,structCollelm*y,structCollelm*collAdd)/*求两集合的并集*/
structCollelm*p,*q,*r;
p=x->
q=y->
r=collAdd;
if(!
p)/*若集合p为空*/
if(!
q)/*若集合q为空*/
return;
else/*若集合q不为空*/
while(q)
{
InsertToTable(r,q->
r=r->
q=q->
}
else/*若集合p不为空*/
q)/*若集合q为空*/
while(p)
InsertToTable(r,p->
p=p->
else/*若集合q不为空*/
{
while(q)
q=y->
while(q)
{
if(p->
number!
=q->
number)
q=q->
else
break;
}
if(!
q)
InsertToTable(r,p->
r=r->
}
}
PrintTable(collAdd);
voidMultiply(structCollelm*x,structCollelm*y,structCollelm*collMul)/*求两集合的交集*/
r=collMul;
p||!
q)/*p,q两个集合中有一个为空*/
return;
else
while(p)
if(p->
number==q->
p=p->
q=y->
PrintTable(collMul);
voidPrintTable(structCollelm*c)/*输出集合中元素的功能函数*/
structCollelm*t;
t=c;
t=t->
i