c语言程序设计(科学出版社)课后习题解答.doc

上传人:scccc 文档编号:12026771 上传时间:2021-12-01 格式:DOC 页数:15 大小:54KB
返回 下载 相关 举报
c语言程序设计(科学出版社)课后习题解答.doc_第1页
第1页 / 共15页
c语言程序设计(科学出版社)课后习题解答.doc_第2页
第2页 / 共15页
c语言程序设计(科学出版社)课后习题解答.doc_第3页
第3页 / 共15页
c语言程序设计(科学出版社)课后习题解答.doc_第4页
第4页 / 共15页
c语言程序设计(科学出版社)课后习题解答.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《c语言程序设计(科学出版社)课后习题解答.doc》由会员分享,可在线阅读,更多相关《c语言程序设计(科学出版社)课后习题解答.doc(15页珍藏版)》请在三一文库上搜索。

1、第3章 习题解答 第1章 1.C 语言程序主要由预处理命令、函数、注释等组成。 2.填空 (1)分号 (2)main (3)stdio.h 3. 源程序: #include<stdio.h> main( ) printf(“*n”); printf(“Hello World!n”); printf(“*”); 4. 源程序: #include <stdio.h> main( ) int a, b, c; /* 定义变量 */ scanf(“%d”, &a); /* 输入第一个整数 */ scanf(“%d”, &b); /* 输入第二个整数 */ c=a

2、-b; /* 计算差 */ printf(“%d-%d=%d”,a,b,c); /* 输出结果 */ 5. (1)<stdio.h> (2)x=10; (3)printf(“s=%dn”,s); 第2章 1. (1) c (2) a (3) b g (4) a d e (5) d 2. a. 5 b. 295 c. 4 d. 29 e. 9 3. a.x=4,y=6 推荐精选b. x=4,y=3 f.x=3,y=6 4. 16 5. #include<stdio.h> main() int a,b,c; scanf("%d%d",&a,&am

3、p;b); c=a*b; printf("%d*%d=%d",a,b,c); 第3章 1. (1) b (2) b (3) d (4) a (5) b 2. (1)&a,&b (2)l,s 3. printf(“x=%.2f,y=%.2fn”,x,y); 4. #include<stdio.h> main() int num1,num2,num3,sum; float average; scanf("%d%d%d",&num1,&num2,&num3); sum=num1+num2+num3; aver

4、age=sum/3.0; printf("sum=%d,average=%.2fn",sum,average); 5. #include<stdio.h> main() int hour,minute,second,total; /* 定义变量代表时、分、秒和总秒数 */ scanf("%d",&total); hour=total/3600; minute=total%3600/60; second=total%3600%60; 推荐精选 printf("%dhours:%dminutes:%dsecondsn"

5、,hour,minute,second); 第4章 1. (1) a (2) b (3) b (4) b (5) b 2. 0 3. (1) 6 (2) 4 (3) 1 (4) 1 4. #include <stdio.h> main( ) int x,y; scanf("%d",&x); if (x>-5 && x<0) y=5*x; if (x = 0) y=-1; if (x>0 && x<10) y=2*x+1; printf("x=%d,y=%dn",x,y); 5.

6、#include <stdio.h> main( ) int score,rank; /* score 表示成绩,rank 表示级别 */ printf("Please input score:"); scanf("%d",&score); rank=score/10; switch(rank) case 10: case 9: printf("成绩等级为:An"); break; case 8: printf("成绩等级为:Bn"); break; 推荐精选 case 7: printf(&q

7、uot;成绩等级为:Cn"); break; case 6: printf("成绩等级为:Dn"); break; default:printf("成绩等级为:En"); break; 6. #include<stdio.h> void main() int n; printf("Please input the digit:"); scanf("%d",&n); switch(n) case 1:printf("Jan n");break; case 2:prin

8、tf("Feb n");break; case 3:printf("Mar n");break; case 4:printf("Apr n");break; case 5:printf("May n");break; case 6:printf("Jun n");break; case 7:printf("Jul n");break; case 8:printf("Agu n");break; case 9:printf("Sep n"

9、);break; case 10:printf("Oct n");break; case 11:printf("Nov n");break; case 12:printf("Dec n");break; 第5章 1. (1) b (2) a (3) b (4) d (5) d 2. 7,1 3. y=-1 4. m=6 5. 10,14 6. 3 7. 5 8. ABABCDCD 9. 推荐精选# include <stdio.h> main ( ) int i; long int sum=0; for (i=2;i<

10、;=200;i+=2) sum+=i; printf("2+4+6+.+200=%ld",sum); 10. #include <stdio.h> main() long int n; int sum = 0; printf("Please input the nber:"); scanf("%ld",&n); while(n != 0) sum += n % 10; n /= 10; printf("%dn", sum); 第6章 1. (1) d (2) b (3) d (4) c (5)

11、a 2. 11 3. 3 4. 5689 5. 12,6 6. (1) i- (2) n 7. (1) char k; (2) i<j 8. #include <stdio.h> main( ) float a10; int i; 推荐精选 float sum=0,average; for (i=0;i<10;i+) printf("a%d=?",i); scanf("%f",&ai); sum+=ai; average=sum/10; printf("average is %.2fn",average

12、); 9. #include <stdio.h> #define N 10 main( ) int aN,i,target,found; for (i=0;i<N;i+) scanf("%d",&ai); printf("Please input a number:"); scanf("%d",&target); i=0; while(i<N && target != ai) i+; found = i<N?i:-1; printf("%dn",foun

13、d); 10. #include <stdio.h> #define N 80 main( ) char strN; int len=0,i=0; printf("Please input a string:"); gets(str); while (stri+ != 0) len+; printf("the length of string is %d.n",len); 第7章 1. 21 2. 136 3. 16 4. (1) func (2) m+ 推荐精选5. 9 6. 1,6,3,2,3 7. 2,5,1,2,3,-2 8. #in

14、clude <stdio.h> int fun(int a,int b,int c); main( ) int a,b,c,max; printf("Please input three numbers:"); scanf("%d%d%d",&a,&b,&c); max=fun(a,b,c); printf("Max is %d.n",max); int fun(int a,int b,int c) int max; max= a>b?(a>c?a:c):(b>c?b:c); re

15、turn max; 9. #include <stdio.h> long int sum(int n); main( ) int n; printf("n=?"); scanf("%d",&n); printf("Sum=%ld.n",sum(n); long int sum(int n) if (n = = 1 ) return 1; else return sum(n-1)+n; 10. #include <stdio.h> void fun(n); main( ) int n; printf(&q

16、uot;n=?"); scanf("%d",&n); fun(n); 推荐精选 void fun(n) if (n = = 0) return; else fun(n/2); printf("%-2d",n%2); 第8章 1. (1) b (2) d (3) b (4) c (5) c 2. 8 3. 123456789 4. 2 3 4 5 6 5. 345 6. 1 2 3 4 5 6 7. bi 8. bcdefgha 9. p=sum 10. #include <stdio.h> #include <stri

17、ng.h> main() char str80; char *p1, *p2; gets(str); p1=str; p2=str+strlen(str)-1; while (p1<p2 && *p1+ = *p2- ) ; puts( p1<p2 ? "不是回文" : "是回文" ); 第9章 1. a. #define F(x) (x)*(x)*(x) b. #define F(x) (x)%4 推荐精选c. #define F(x,y) (x)*(y)<100?1:0 2. a. 4 b. 4 c. #def

18、ine DOUBLE(x) 2*(x) 3. d 4. -20 5. N is undefined 6. 7.5 7. y=6 8. #include <stdio.h> #define SWAP(a,b) int temp;temp=a;a=b;b=temp; main() int x,y; printf("x=?"); scanf("%d",&x); printf("y=?"); scanf("%d",&y); SWAP(x,y) printf("x=%d,y=%d.n&q

19、uot;,x,y); 第10章 1. struct student int sno; char sname10; char sex; stu1,stu2; 2. 12 3. 合法的有a,b,d c.改成 s.u.rectangle.length=25; e.改成 s.u.circle.radius=5; f.改成 s.u.circle.radius=5; 4. a,b,c,d (说明:变量 b 有确定的值之后,b+是合法的。) 5. 改为 typedef struct product char name10; float price; PRODUCT; PRODUCT products10;

20、推荐精选6. (1) struct employee (2) printemp(emp) 7. 2 4 3 9 8 8. #include <stdio.h> struct time_struct int hour; int minute; int second; ; main( ) struct time_struct time; printf("Input time?n(Example 18:28:38)n"); scanf("%d:%d:%d",&time.hour,&time.minute,&time.seco

21、nd); printf("Time is %d:%d:%dn",time.hour,time.minute,time.second); 9. #include <stdio.h> struct time_struct int hour; int minute; int second; time; void enter_time(); void display_time(); main( ) enter_time(); display_time(); void enter_time() printf("Enter the time(example 18:

22、28:38)?"); scanf("%d:%d:%d",&time.hour,&time.minute,&time.second); void display_time() printf("Time is %d:%d:%d.n",time.hour,time.minute,time.second); 10. 推荐精选#include <stdio.h> #define N 3 struct hotel char name31; /*旅馆名称*/ char address31;/*旅馆地址*/ int grad

23、e; /*旅馆级别*/ float average_charge; /*平均房价*/ int number; /*房间数量*/ hN= "h1","上海路",5,500.00,80, "h2","北京大街",5,480.00,70, "h3","南京大街",3,300.50,100 ; main( ) int grade,i; printf("请输入级别(3-5)?"); scanf("%d",&grade); for (i=0

24、;i<N;i+) if (hi.grade=grade) printf("名称:%sn 地址:%sn 级别:%dn平均房价%.2fn 房间数量:%dn", hi.name,hi.address,hi.grade,hi.average_charge,hi.number); 第11章 1. (1) c (2) d (3) b (4) b (5) b 2. Basican 3. fgetc(fp) 4. “record.dat”, “w” 5. #include <stdio.h> #include <string.h> #include <s

25、tdlib.h> typedef struct Employee int id; char name20; 推荐精选 char gender20; int age; char address20; Employee; int main(void) FILE *fp; char another,choice; Employee emp; long int recsize; fp=fopen("employee.dat","rb+"); if(fp=NULL) fp=fopen( "employee.dat","wb+&q

26、uot;); if(fp=NULL) printf("Can't Open File"); exit(0); recsize=sizeof(emp); while(1) printf("1.添加记录 2.显示男员工 3.退出n"); printf("Enter your choice(1-3):"); fflush(stdin); scanf("%c",&choice); switch(choice) case'1': fseek(fp,0,SEEK_END); another=&#

27、39;Y' while(another='Y'| another='y') printf("输入信息(id 姓名 性别 年龄 住址):n"); scanf("%d %s %s %d %s",&emp.id,&emp.name,&emp.gender,&emp.age,&emp.address); fwrite(&emp,recsize,1,fp); printf("是否继续 (Y/N): "); fflush(stdin); another=get

28、char(); break; 推荐精选 case '2': printf("学号t 姓名t性别t 年龄t住址n"); rewind(fp); while(fread(&emp,recsize,1,fp)=1) if (strcmp(emp.gender,"男")=0) printf("%dt%st%st%dt%sn", emp.id,emp.name,emp.gender,emp.age,emp.address); break; case '3': fclose(fp); exit(0); 6.

29、 #include"stdio.h" #include"stdlib.h" #define M 2 #define stu struct student stu int num; char name20; float s1; float s2; float s3; float avg; ; main() stu stM; FILE *fp; int i; printf("请输入 5 名同学生的成绩,按照学号,姓名,成绩 1,成绩2,成绩 3 的顺序,中间用空格隔开:n"); for(i=0;i<M;i+) scanf("

30、;%d%s%f%f%f",&sti.num,sti.name,&sti.s1,&sti.s2,&sti.s3); sti.avg=(sti.s1+sti.s2+sti.s3)/3; if(fp=fopen("stud.rec","wb")=NULL) 推荐精选 printf("cannot open filen"); for(i=0;i<M;i+) if(fwrite(&sti,sizeof(stu),1,fp)!=1) printf("file write error

31、n"); fclose(fp); fp=fopen("stud.rec","rb"); printf("numtnametscore1tscore2tscore3taveragen"); for(i=0;i<M;i+) fread(&sti,sizeof(stu),1,fp); printf("%dt%st%.2ft%.2ft%.2ft%.2fn",sti.num,sti.name,sti.s1,sti.s2,sti.s3,sti.avg); fclose(fp); 第12章 1. a. 2

32、 b. 4 c. 11 d. 4 e. -15 f. 28 g. -36 2. 程序设计分析:先将整数x 右移4 位,将该整数机内码的第4 到7 位移至第0 到3 位, 然后与0x000f(0000000000001111)进行位与运算,所保留的低4 位就是所要的结果 #include <stdio.h> void main() int x,y; scanf("%d",&x); y=x>>4; y=y&0x000f; printf("47位的十六进制数:y=%#xn",y); 推荐精选3. d 4. (1) p!=NULL (2)p=p->next 5. p=p->next 6. 略 (注:可编辑下载,若有不当之处,请指正,谢谢!) 推荐精选

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1