收藏 分享(赏)

高教c语言程序设计(2011版)课后编程题答案.doc

上传人:dzzj200808 文档编号:2746836 上传时间:2018-09-26 格式:DOC 页数:30 大小:83.50KB
下载 相关 举报
高教c语言程序设计(2011版)课后编程题答案.doc_第1页
第1页 / 共30页
高教c语言程序设计(2011版)课后编程题答案.doc_第2页
第2页 / 共30页
高教c语言程序设计(2011版)课后编程题答案.doc_第3页
第3页 / 共30页
高教c语言程序设计(2011版)课后编程题答案.doc_第4页
第4页 / 共30页
高教c语言程序设计(2011版)课后编程题答案.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、$c 语言程序设计(2011 版)课后编程题答案- 1 -第三章 顺序结构3.30 编写程序,把 560 分钟换算成用小时和分钟表示,然后进行输出。 程序如下 main( ) int hour,minute; hour=560/60; minute=560%60; printf(“hour=%d,minute=%d“,hour,minute); 3.31 编写程序,输入两个整数:1500 和 350,求出它们的商数和余数并进行输出。 程序如下 include main( ) int num1,num2,i,j; /* 定义变量 i 商,j 余数 */ printf(“input num1 an

2、d num2:n“); scanf(“%d%d“, i=n 3.32 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数, 对小数点后第二位数进行四舍五入,最后输出结果。 程序如下 main( ) double a,b,c,average=0; printf(“input a,b,c(double):n“); scanf(“%lf%lf%lf“, average=(a+b+c)/3; average=average*10; average=average+0.5; average=(int)average; average=average/10; printf(“avera

3、ge=%lf“,average); 3.33 编写程序,读入三个整数给 a,b,c,然后交换它们中的数,把 a 中原来的值给 b, 把 b 中原来的值给 c,把 c 中的值给 a。 程序如下 main( ) $c 语言程序设计(2011 版)课后编程题答案- 2 -int a,b,c,t=0; printf(“input a b c:n“); scanf(“%d%d%d“, t=c;c=b;b=a;a=t; printf(“a=%d b=%d c=%d“,a,b,c); 第四章 选择结构4.21 当 a0 时,请将以下语句改写成 switch 语句。 if( a-5 源程序二:(2)嵌套的 i

4、f 语句 main( ) float x; printf(“input x:n“); scanf(“%f“, if(x-5 if(x=10) printf(“input error“); 源程序三:(3)if_else 语句 main( ) float x; printf(“input x:n“); scanf(“%f“, if(x-5 doubel sum=1,t=1; while(fabs(1.0/t)1e-4) /* fabs 求浮点型数据的绝对值 */ t=t*i; sum=sum+1/t; i+; printf(“e=%lf“,sum); 5.19 编写程序,输出从公元 1000 年

5、至 2000 年所有闰年的年号 每输出 3 个年号换一行。 判断公元年是否闰年的条件是: (1)公元年数如能被 4 整除,而不能被 100 整除,则是闰年。 (2)公元年数能被 400 整除也是闰年。 程序如下 main( ) int i,j=0; for(i=1000;i main( ) int i,j; for(i=1;i7-fabs(4-i) printf(“ “); else $c 语言程序设计(2011 版)课后编程题答案- 7 -printf(“*“) printf(“n“); #include#includemain() int i,j,k;for(i=-3;i main( )

6、int i=0; char ch; while(ch=getchar( )!=n) printf(“%4c%4d“,ch,ch); i+; if(i%3=0) printf(“n“); 6.21 请编写程序,输入一行数字字符(用 EOF 结束) ,每个数字字符的前后都有空格。 请编程,把这一行中的数字转换成一个整数。例如,若输入: 2 4 8 3 (代表 Enter 键) 则输出整数:2483 程序如下 #include main() char ch; while(ch=getchar()!=EOF) $c 语言程序设计(2011 版)课后编程题答案- 8 - if(ch= ) continu

7、e; else printf(“%c“,ch); 6.22 请编写程序统计输入的行数,输入用 EOF 结束输入。 程序如下 #include main() char ch; int i=0; while(ch=getchar()!=EOF) if(ch=n) i+; printf(“%d“,i); 6.23 请编写程序统计输入的一行中小写字母的个数。 程序如下 #include main() int i=0; char ch; while(ch=getchar()!=n) if(ch=a) $c 语言程序设计(2011 版)课后编程题答案- 9 -printf(“Enter n(integer

8、):n“); scanf(“%d“, for(i=1;ii;j-) printf(“ “); for(k=1;k int mymod( int a, int b ) $c 语言程序设计(2011 版)课后编程题答案- 10 -int remainder; remainder=a%b; return remainder; main() int a,b; printf(“Enter a b (int):n“); scanf(“%d%d“, printf(“余数=%d“,mymod(a,b); 7.16 编写程序求:11/2+1/3-1/4+1/5-1/6+1/7-.1/n 程序如下 main()

9、int n; float a; float sum(int n); scanf(“%d“, a=sum(n); printf(“%10.5f“,a); float sum(int n) float s=0; int i,t=1; for(i=1;i #include float fun(float x) float y; y=pow(x,2)-5*x+4; return y; main() float x,y1,y2,y3; clrscr(); printf(“Enter x:n“); scanf(“%f“, y1=fun(2); y2=fun(x+15); y3=fun(sin(x); pr

10、intf(“y1=%fny2=%fny3=%fn“,y1,y2,y3); 第八章 地址和指针8.17 请编写函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传 送回调用函数。 程序如下 #include sum_sub(float a,float b,float *sum, float *sub) $c 语言程序设计(2011 版)课后编程题答案- 12 - *sum=a+b; *sub=a-b; main() float a,b,sum,sub; /*定义变量 sum 求和,变量 sub 求差*/ printf(“Enter a b (float):n“); scanf(“%f

11、%f“, sum_sub(a,b, printf(“sum=%f,sub=%f“,sum,sub); 8.18 请编写函数,对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。 程序如下 #include max_min(double a,double b,double c,double *max,double *min) *max = a ; /* 假定 a 的值为最大,把 a 值赋给指针变量*max */ if(*maxb) *min = b; if(*minc) *min = c; main() double a,b,c,max,min; printf(“Enter a b c

12、(double):n“); scanf(“%lf%lf%lf“, max_min(a,b,c, printf(“max=%lf,min=%lf“,max,min); 第九章 函数9.27 输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数.用下标为 0 元素统计字符“1“的个数,下标为 1 的元素统计字符“2“ 的个数 ,. 程序如下 #include void count(int a) int i; char ch; while(ch=getchar()!=n) $c 语言程序设计(2011 版)课后编程题答案- 13 -for(i=0;i #include int fun(i

13、nt a,int b) int i,j=0; for(i=0;i void alpha_sort(char a,int n); void alpha_rout(char a,int n); main() char a20; int n; clrscr(); printf(“*The original alphabetic is*:n“); gets(a); n=strlen(a); alpha_sort(a,n); alpha_rout(a,n); void alpha_sort(char a,int n) int i,j,p,t; for(j=0;j #define M 10 void so

14、rt(int aM,int bM+1,int n) int i; for(i=0;iaM-1) if(na) b=a; else b=n; break; if(i int dec_bin(int a,int decimal) /*变量 decimal 表示十进制数 */ int i=0,remainder; while(decimal0) remainder=decimal%2; decimal=decimal/2; ai+=remainder; if(decimal=0;i-) printf(“%d“,a); 9.33 编写函数调用随机函数产生 0 到 19 之间的随机数,在数组中存入 15

15、 个互不重复的整 数。要求在主函数中输出结果。若已定义 x 为 int 类型,调用随机函数步骤如下: include “stdio.h“ . x=rand()%20 /*产生 0 到 19 的随机数*/ 程序如下 #include $c 语言程序设计(2011 版)课后编程题答案- 17 -void rand1(int a) int i=0,j,x,flag; while(i #define M 3 void line_sum(int aMM,int a1) int i,j,k; for(i=0,k=0;i #define M 4 void add(int aMM,int bMM,int cM

16、M) int i,j; for(i=0;i main() int i,j; clrscr(); printf(“* A MULTIPLICATION TABLE *n“); printf(“(1) (2) (3) (4) (5) (6) (7) (8) (9)n“); printf(“-n“); $c 语言程序设计(2011 版)课后编程题答案- 20 -for(i=1;i #include void rand1(int *p) int i,j; for(i=0;i #include void Rand1(int *p) int i,j; for(i=0;i void mygets(char

17、*p) char ch; while(ch=getchar()!=n) *(p+)=ch; p0=0; void myputs(char *p) char ch; while(*p!=0) putchar(*(p+); main() char *s; clrscr(); mygets(s); myputs(s); 10.20 请编写函数,判断一字符串是否是回文。若是回文函数返回值为 1;否则返回值 为 0。回文是顺读和倒读都一样的字符串。 程序如下 #include main() $c 语言程序设计(2011 版)课后编程题答案- 23 - char a200,*p; int i,j,flag

18、=1; clrscr(); scanf(“%s“,a); p=a; j=strlen(a); for(i=0;i #include del(char *p,int n) int i; char ch; if(n #include main(int argc,char *argv) int i; char s64; printf(“Enter a string:n“); gets(s); while(argc0) if(argc=1) for(i=strlen(s)-10;i $c 语言程序设计(2011 版)课后编程题答案- 25 -dec_bin(int n,int a) static in

19、t i=0; if(n=0|n=1) a=n; return i; else ai+=n%2; return dec_bin(n/2,a); main() int i,j,n,a64; printf(“Enter n (integer)n“); scanf(“%d“, j=dec_bin(n,a); for(i=j;i=0;i-) printf(“%d“,a); 11.13 请用递归算法,求 1+2+3+.n,n 由键盘输入。 程序如下 fun(int n) int sum; if(n=1) return 1; else sum=n+fun(n-1); return sum; main() i

20、nt n,sum; clrscr(); printf(“Enter n(1+2+3+.+n):n“); scanf(“%d“, sum=fun(n); printf(“sum=%d“,sum); 11.14 请用递归函数,求裴波拉契级数,求 n 阶裴波拉契级数的公式如下。 $c 语言程序设计(2011 版)课后编程题答案- 26 -程序如下 #include fac(int n) long t; if(n=0|n=1) return 1; else t=fac(n-1)+fac(n-2); return t; main() int n; printf(“Enter n :n“); scanf(

21、“%d“, printf(“%ld“,fac(n); 第十三章 编译预处理和动态存储分配13.10 编写出一个宏定义 MYALPHA(C),用以判断 C 是否是字母字符,若是得 1,否则得 0。 程序如下 #include #include #define MYALPHA(C) isalpha(C)?1:0 main() char ch; clrscr(); ch=getchar(); if(MYALPHA(ch) printf(“%c is a alpha“,ch); else printf(“%c is not a alpha“,ch); 13.11 请写出一个宏定义 swap(t,x,y

22、)用以交换 t 类型的两个参数。提示:用复合语句的 形式。 程序如下 #include #define swap(t,x,y) t=x;x=y;y=t; $c 语言程序设计(2011 版)课后编程题答案- 27 -main() int a,b,t; clrscr(); printf(“Enter a and b:n“); scanf(“%d%d“, swap(t,a,b); printf(“a=%dnb=%d“,a,b); 13.12 请编写程序,利用 malloc 函数开辟动态存储单元,存放输入的三个整数。然后按 从小到大的顺序输出这三个数。 程序如下 #include #include v

23、oid main() int *pData = (int*)malloc(sizeof(int)*3); int t; printf(“Please input three integral numbern“); scanf(“%d%d%d“,pData,pData+1,pData+2); for (int i=0; i *(pData+j) t = *(pData+j); *(pData+j) = *(pData+i); *(pData+i) = t; printf(“%dt%dt%dn“,*pData,*(pData+1),*(pData+2); 第十四章 结构体、共用体和用户定义类型14

24、.12 设有以下结构类型说明:struct stud char num5,name10; int s4; double ave; ; 请编写: (1)函数 readrec 把 30 名学生的学号、姓名、四项成绩以及平均分放在一个结构 $c 语言程序设计(2011 版)课后编程题答案- 28 -体数组中,学生的学号、姓名和四项成绩由键盘输入,然后计算平均分放 在结构体对应的域中。 (2)函数 writerec 输出 30 名学生的记录。 (3)main 函数调用 readrec 函数和 writerec 函数,实现全部程序功能(注:不允 许使用全局变量,函数之间的数据全部使用参数传递) 。 程序

25、如下 #include #define STUDNUM 30 struct stud char num5,name10; int s4; double ave; ; void readrec(struct stud *pStud, int num) int i; printf(“tNumtNametS1tS2tS3tS4n“); for (i=0; inum,pStud-name, pStud-ave=(pStud-s0+pStud-s1+pStud-s2+pStud-s3)/4.0; pStud+; void writerec(struct stud *pStud, int num) int

26、 i; printf(“tNumtNametS1tS2tS3tS4n“); for (i=0; inum,pStud-name, pStud-s0,pStud-s1,pStud-s2,pStud-s3,pStud-ave); pStud+; void main() $c 语言程序设计(2011 版)课后编程题答案- 29 -struct stud studentSTUDNUM; readrec(student,STUDNUM); writerec(student,STUDNUM); 14.13 已知 head 指向一个带头节点的单向链表,链表中每个节点包含数据区域( data) 和指针域(ne

27、xt) ,数据域为整型。请分别编写函数,在链表中查找数据域值 最大的节点。 程序如下 #include #include struct node int data; struct node *next; ; struct node *SearchMax(struct node *head) int max; struct node *pMaxNode,*pNode; pNode = head; pMaxNode = NULL; while (pNode != NULL) if (pNode-data max | pMaxNode = NULL) max = pNode-data; pMaxNo

28、de = pNode; pNode = pNode-next; return pMaxNode; void main() struct node *head,*tail,*pNode; int data; printf(“Please input datanEnter Exit to quit.n“); head = tail = NULL; while(scanf(“%d“, $c 语言程序设计(2011 版)课后编程题答案- 30 -pNode-data = data; pNode-next = NULL; if (head = NULL) head = tail = pNode; else tail-next = pNode; tail = pNode; if (head != NULL) printf(“Maxnimum data is %dn“, SearchMax(head)-data); while(head != NULL) pNode = head; head = head-next; free(pNode); */

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报