C语言程序设计教材习题参考答案.docx
- 文档编号:6439961
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:29
- 大小:30.38KB
C语言程序设计教材习题参考答案.docx
《C语言程序设计教材习题参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教材习题参考答案.docx(29页珍藏版)》请在冰豆网上搜索。
C语言程序设计教材习题参考答案
C语言程序设计习题参考答案
习题一
一、单项选择题
1.D2.A3.B4.B
二、程序阅读题
1.Programming!
2.
*****
****
***
**
*
习题二
一、单项选择题
1.C2.C3.D4.D5.D6.D7.D8.D9.B
二、填空题
1.18
2.c>=65&&c<=90
3.1
4.year%4==0||(year%100==0&&year%400!
=0)
5.scanf(“%d%d%d”,&x,&y,&z);
三、程序阅读题
1.16
2.2,1
3.1,2,1
4.
Pleaseinputtwocharacters:
$#
$#$#$
$$#$$
$#$#$
5.
a=9
b=15
c=9
四、编程题
1.
(1)设10g滤液中含氯化钡的质量为x
根据化学方程式:
BaCl2+2AgNO3====2AgCl+Ba(NO3)2
208 287
x 2.87
由此可得到方程式:
208*2.87=287*x
由分析可得到滤液中溶质的质量的数学模型:
x=208*2.87/287
(2)设12.5g样品中含BaCl2的质量为y
则可得到方程:
x/(10-2.08)=y/39.6
因此,求解滤液中溶质的质量分数和样品中BaCl2的质量分数的程序为
#include"stdio.h"
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);
printf("by=%5.1f\%\n",by);
}
确保通用性
#include
voidmain()
{
doublem1,m2,a,b,w1,w2;
printf("请输入固体氯化钡样品的质量m1(g):
\n");
scanf("%lf",&m1);
printf("请输入加入水的质量m2(g):
\n");
scanf("%lf",&m2);
printf("请输入所取滤液的质量a(g):
\n");
scanf("%lf",&a);
printf("请输入完全反应后生成沉淀的质量b(g):
\n");
scanf("%lf",&b);
w1=208*b/(287*a);
w2=208*b*(m1+m2)/(287*a*m1);
printf("滤液中溶质的质量分数为:
%lf\n",w1);
printf("样品中氯化钡的质量分数为:
%lf\n",w2);
}
2.
#include"stdio.h"
main()
{
printf("*\n");
printf("***\n");
printf("*****\n");
}
3.
#include"stdio.h"
#defineMAX(x,y)((x)>(y)?
(x):
(y))
#defineMIN(x,y)((x)<(y)?
(x):
(y))
main()
{
floata,b;
printf("Pleaseentertworealnumbers:
\n");
scanf("%f%f",&a,&b);
printf("%f\t",MIN(a,b));
printf("%f\n",MAX(a,b));
}
4.
#include
#include
voidmain()
{
FILE*fp;
if((fp=fopen("f.txt","w"))==NULL)
{
printf("Erroronopenf.txt!
\n");
exit(0);
}
fprintf(fp,"%s","Programmingisfun!
\n");
if(fclose(fp))
{
printf("Cannotclosed:
\f.txtandstrikeanykeyexit!
\n");
getch();
exit(0);
}
}
5.
#include
#defineISLOWER(c)(c>=97&&c<=132?
1:
0)
voidmain()
{
charx;
scanf("%c",&x);
ifISLOWER(x)
printf("%c",x);
getch();
}
6.
#include
voidmain()
{
intyear=1986,r=76;
printf("本世纪地球上见到哈雷彗星的年份是%d年!
\n",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.
【1】m%n
【2】n
【3】w
2.
【1】&n
【2】s=0
【3】k
【4】s+=i++
【5】%ld
3.
【1】i<100
【2】i%3==0&&i%10==6
四、编程题
1.
#include"stdio.h"
main()
{
floatn,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!
+3!
...+20!
=%e\n",s);
}
2.
#include"stdio.h"
main()
{
inti,j,k,n;
printf("'waterflower'numberis:
");
for(n=100;n<1000;n++)
{
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)
printf("%-5d",n);
}
}
3.
#include"stdio.h"
main()
{
intn=1;
floate=1,k;
k=1/n;
while(k>=1e-6)
{
n++;
e+=k;
k=k/n;
}
printf("n=%d\te=%f\n",n,e);
}
4.
#include"stdio.h"
main()
{
inti;
floatk,s,fz=2,fm=1,newfz;
s=fz/fm;
for(i=2;i<=20;i++)
{
newfz=fz+fm;
fm=fz;
fz=newfz;
k=fz/fm;
s+=k;
}
printf("s=%f",s);
}
5.
#include"stdio.h"
voidmain()
{
intday,x1,x2;//第1天的桃子数为x1,第2天的桃子数为x2
x2=1;//第10天只剩下1个
day=9;//只考虑前9天
while(day>0)
{
x1=(x2+1)*2;/*根据题意:
第2天剩下的桃子数x2=x1/2-1,也就是说:
第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("thetotalis%d\n",x1);
}
6
#include"stdio.h"
main()
{
inti,j,s;
for(j=2;j<1000;j++)
{
s=j;
for(i=1;i { if((j%i)==0) s=s-i; } if(s==0) printf("%disawanshu\n",j); } } 7. #include"stdio.h" voidmain() {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<=1;b++) for(c=0;c<=1;c++) for(d=0;d<=1;d++) for(e=0;e<=1;e++) for(f=0;f<=1;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&&d;//c,d中有且仅有一人作案 s6=d||! e;//如果d没有参与作案,则e也不可能参与作案 if(s1&&s2&&s3&&s4&&s5&&s6) {if(a) printf("%c是作案人\n",'A'); if(b) printf("%c是作案人\n",'B'); if(c) printf("%c是作案人\n",'C'); if(d) printf("%c是作案人\n",'D'); if(e) printf("%c是作案人\n",'E'); if(f) printf("%c是作案人\n",'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. 【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=2 i=4 i=2 四、程序填空题 1. 【1】x2=mid 【2】x1=mid 2. 【1】p++ 【2】a[i]=a[i+1] 3. 【1】floatfun(floata,floatb) 【2】x,y+fun(z,x+z) 【3】z,y 4. 【1】i<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. 【1】"r" 【2】niu 【3】fclose(ma) 2. 【1】FILE*fp 【2】ch! ='\n' 【3】fclose(fp) 四、程序设计题 1. #include"stdio.h" voidmain() { structdate { intyear; intmonth; intday; }x; scanf("%d%d%d",&x.year,&x.month,&x.day); printf("%d年%d月%d日",x.year,x.month,x.day); } 2. #include"stdio.h" voidReadDat(); voidWriteDat(); voidmain() { WriteDat(); ReadDat(); } voidReadDat() { FILE*fp; charch; inti; fp=fopen("upper.txt","r"); while(! feof(fp)) {ch=fgetc(fp); putchar(ch); } fclose(fp); } voidWriteDat() { FILE*fp; charch; fp=fopen("upper.txt","w"); ch=getchar(); while(ch! ='! ') { if(ch>='a'&&ch<='z') ch=ch-32; fputc(ch,fp); ch=getchar(); } fclose(fp); } 3. #include #include charxx[50][80]; intmaxline=0;/*文章的总行数*/ intReadDat(void); voidWriteDat(void); voidStrCharJR(void); voidmain() { if(ReadDat()) { printf("数据文件in.txt不能打开! \n\007"); return; } StrCharJR(); WriteDat(); } voidStrCharJR(void) { inti,j; for(i=0;i for(j=0;xx[i][j]! ='\0';j++) xx[i][j]+=xx[i][j]>>4; } intReadDat(void) { FILE*fp; inti=0; if((fp=fopen("in.txt","r"))==NULL)return1; while(fgets(xx[i],80,fp)! =NULL) i++; maxline=i; fclose(fp); return0; } voidWriteDat(void) { FILE*fp; inti; fp=fopen("OUT.txt","w"); for(i=0;i { printf("%s\n",xx[i]); fprintf(fp,"%s\n",xx[i]); } fclose(fp); } 习题七 一、程序阅读题 1.20 2.单链表的结构图如下: 输出结果为: 58634 二、程序设计题 1. #include"stdio.h" #include"conio.h" #include #include"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; c->next=NULL; return(c);/*返回链表头指针*/ } voidAppendToTable(structCollelm*x)/*向集合中添加元素x*/ { intnumber; printf("\n"); scanf("%d",&number); while(number) { InsertToTable(x,number); scanf("%d",&number); } } 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->next; q=y->next; r=collAdd; if(! p)/*若集合p为空*/ { if(! q)/*若集合q为空*/ return; else/*若集合q不为空*/ while(q) { InsertToTable(r,q->number); r=r->next; q=q->next; } } else/*若集合p不为空*/ { if(! q)/*若集合q为空*/ while(p) { InsertToTable(r,p->number); r=r->next; p=p->next; } else/*若集合q不为空*/ { while(q) { InsertToTable(r,q->number); r=r->next; q=q->next; } while(p) { q=y->next; while(q) { if(p->number! =q->number) q=q->next; else break; } if(! q) { InsertToTable(r,p->number); r=r->next; } p=p->next; } } } PrintTable(collAdd); } voidMultiply(structCollelm*x,structCollelm*y,structCollelm*collMul)/*求两集合的交集*/ { structCollelm*p,*q,*r; p=x->next; q=y->next; r=collMul; if(! p||! q)/*p,q两个集合中有一个为空*/ return; else while(p) { while(q) { if(p->number==q->number) { InsertToTable(r,p->number); r=r->next; } q=q->next; } p=p->next; q=y->next; } PrintTable(collMul); } voidPrintTable(structCollelm*c)/*输出集合中元素的功能函数*/ { structCollelm*t; t=c; t=t->next; printf("\n"); i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 教材 习题 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)