C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第八章 课后答案

合集下载

C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案

C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案
1 1 1 1 1 2-15 编写程序,输入一个正整数 n,计算1 ..... 的前 n 项之和。 4 7 10 13 16
解答: #include <stdio.h> int main(void) { int flag, i, n, denominator; double item, sum; scanf("%d", &n); sum = 0; flag = 1; denominator = 1; for(i = 1; i <= n; i++){ item = flag * 1.0 / denominator; sum = sum + item; flag = -flag; denominator = denominator + 3; } printf("sum = %.3f\n", sum); return 0; } 2-16 编写程序,输入两个正整数 m 和 n,计算 m! + n!。 解答: #include "stdio.h"
1.3 习பைடு நூலகம்参考答案
1 .对 C 语言来说,下列标识符中哪些是合法的,哪些是不合法的? t o t a l ,_ d e b u g ,L a r g e & T a l l ,C o u n t e r 1 ,b e g i n _ 解答:L a r g e & T a l l 不合法, 其余都合法。 2.改写本章 1.4 节中的流程图 1.2,求 1~100 中能被 6 整除的所有整数的和。 解答:
19
scanf("%d", &fahr); celsius = 5 * (fahr - 32) / 9; printf("celsius = %d\n", celsius); return 0; } 2-9 编写程序,输入 3 个整数,计算并输出它们的平均值。 解答: #include <stdio.h> int main(void) { int a, b, c; double average; scanf("%d%d%d", &a, &b, &c); average = (a + b + c) * 1.0 / 3; printf("average = %.2f\n", average); return 0; } 2-10 编写程序,输入 x,计算并输出下列分段函数 f(x)的值(保留 3 位小数)。

c语言程序设计实验与习题指导颜晖答案

c语言程序设计实验与习题指导颜晖答案

c语言程序设计实验与习题指导颜晖答案【篇一:c语言程序设计谭浩强版何钦铭颜晖版习题答案全集】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf(\n);for(i=1;i5;i++) /*以下为三重循环*/for(j=1;j5;j++)for (k=1;k5;k++){if (i!=ki!=jj!=k) /*确保i、j、k三位互不相同*/printf(%d,%d,%d\n,i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。

利润(i)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(%ld,i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i=100000)bonus=i*0.1;else if(i=200000)bonus=bonus1+(i-100000)*0.075;else if(i=400000)bonus=bonus2+(i-200000)*0.05;else if(i=600000)bonus=bonus4+(i-400000)*0.03;else if(i=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf(bonus=%d,bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

《C语言程序设计(何钦铭颜晖主编)》习题8答案

《C语言程序设计(何钦铭颜晖主编)》习题8答案

P173习题8 第一题#include<stdio.h>int main(void){char ch;int a[10];int i,j,m;printf("请输入10个整数:\n");for(i=0;i<10;i++){printf("请输入%d第个数:",i+1);scanf("%d",&a[i]);}printf("请输入A或D:");scanf(" %c",&ch);if(ch=='A'){for(i=0;i<9;i++){for(j=i+1;j<10;j++){if(a[i]>a[j]){m=a[i];a[i]=a[j];a[j]=m;}}}}else if(ch=='D'){for(i=0;i<9;i++){for(j=i+1;j<10;j++){if(a[i]<a[j]){m=a[i];a[i]=a[j];a[j]=m;}}}}for(i=0;i<10;i++){printf("%d ",a[i]);}return 0;}第二题#include<stdio.h>int main(void){int a[10];int i,j,x;int search(int list[],int i,int x);printf("输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("输入一个整数x:");scanf("%d",&x);j=0;for(i=0;i<10;i++){if(search(a,i,x)!=-1){j++;printf("%d",search(a,i,x));}else;}if(j==0)printf("-1");return 0;}int search(int list[],int i,int x){int j;j=0;if(x==list[i])j++;else;if(j==0)return -1;elsereturn i;}第三题#include<stdio.h>void houyi(int a[],int *p,int n,int m);int main(void){int a[20];int i,m,n;printf("请输入整数n:");scanf("%d",&n);printf("请输入%d个整数:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);printf("请输入您要后移的位数m:"); scanf("%d",&m);houyi(a,a,n,m);for(i=0;i<n;i++)printf("%d",a[i]);printf("\n");return 0;}void houyi(int a[],int *p,int n,int m) {int i;int b[20];for(i=0;i<n;i++)b[i]=a[i];for(i=0;i<n;i++){if(i<=n-m-1)*(p+i+m)=b[i];else*(p+(i+m)%n)=b[i];}}第四题#include<stdio.h>void swap2(int *,int *);void bubble(int a[],int n);int main(void){int n,a[8];int i;printf("Enter n(n<=8):");scanf("%d",&n);printf("Enter a[%d]:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);bubble(a,n);printf("After sorted,a[%d]=",n);for(i=0;i<n;i++)printf("%3d",a[i]);return 0;}void bubble(int a[],int n){int i,j,m;static int b[8];for(i=1;i<n;i++){for(j=0;j<n-i;j++){if(a[j]>a[j+1])swap2(&a[j],&a[j+1]);for(m=0;m<n;m++){if(a[m]<=a[m+1])b[m]++;}}if(b[m]==n-1)break;}}void swap2(int *px,int *py){int t;t=*px;*px=*py;*py=t;}第五题#include<stdio.h>#include<string.h>void mcopy(char *s,int m);int main(void){int i,m,l;char str[100];printf("请输入您要输入的字符串:");gets(str);printf("您将从原字符串的第m位复制新字符串,请输入m:\n");scanf("%d",&m);printf("复制后,新的字符串为:");mcopy(str,m);return 0;}void mcopy(char *s,int m){printf("%s\n",s+m-1);}第六题#include<stdio.h>#include<string.h>void delchar(char *,char c);int main(void){char str[80];char ch;printf("Enter a string:");gets(str);printf("Enter delete char:");scanf("%c",&ch);delchar(str,ch);printf("%s\n",str);return 0;}void delchar(char *s,char c){int i,j;char str1[80];j=0;for(i=0;s[i]!='\0';i++){if(s[i]!=c){str1[j]=s[i];j++;}}str1[j]='\0';for(i=0;str1[i]!='\0';i++,s++){*s=str1[i];}*s='\0';}第七题#include<stdio.h>#include<string.h>struct zfc{char str[80];};int main(void){int i,j;char str[80],str1[80];struct zfc s[5];for(i=0;i<5;i++){printf("请输入第%d个字符串:",i+1);scanf("%s",s[i].str);}for(i=0;i<=3;i++){for(j=i+1;j<=4;j++){if(strcmp(s[i].str,s[j].str)>0){strcpy(str1,s[i].str);strcpy(s[i].str,s[j].str);strcpy(s[j].str,str1);}}}for(i=0;i<5;i++){puts(s[i].str);}return 0;}第八题#include<stdio.h>#include<string.h>int main(void){int l,i;char str[80],str1[80];char *p,*q;p=str;q=str1;printf("请输入一串字符:");scanf("%s",str);l=strlen(str);for(i=0;*p!='\0';p++,i++){*(q+l-1-i)=*p;}*(q+l)='\0';if(strcmp(str,str1)==0)printf("输入的字符串是“回文”!\n");elseprintf("输入的字符串不是“回文”!\n");return 0;}第九题#include<stdio.h>#include<string.h>int main(void){char str[80];char *p;p=str;int n1,n2,n3,n4,n5;printf("输入一行文字:");gets(str);n1=n2=n3=n4=n5=0;for(;*p!='\0';p++){if((*p>='A')&&(*p<='Z'))n1++;else if((*p>='a')&&(*p<='z'))n2++;else if(*p==' ')n3++;else if((*p>='0')&&(*p<='9'))n4++;elsen5++;}printf("大写字母字符的个数为:%d\n",n1);printf("小写字母字符的个数为:%d\n",n2);printf("空格字符的个数为: %d\n",n3);printf("数字字符的个数为: %d\n",n4);printf("其他字符的个数为: %d\n",n5);return 0;}第十题#include<stdio.h>#include<string.h>int strcomp(char s1[80],char s2[80]);int main(void){int m;char str1[80],str2[80];printf("请输入第一个字符串:");scanf("%s",str1);printf("请输入第二个字符串:");scanf("%s",str2);m=strcomp(str1,str2);if(m==1)printf("str1>str2\n");else if(m==0)printf("str1=str2\n");elseprintf("str1<str2\n");return 0;}int strcomp(char s1[80],char s2[80]){int a;if(strcmp(s1,s2)>0)a=1;else if(strcmp(s1,s2)==0)a=0;elsea=-1;return a;}第十一题#include<stdio.h>#include<string.h>void fushu(char *p);int main(void){char str[80];printf("请输入一个英语名词单词:");scanf("%s",str);fushu(str);puts(str);return 0;}void fushu(char *p){int i,l;l=0;for(i=0;*(p+i)!='\0';i++){l++;}if(*(p+l-1)=='y'){*(p+l)='e';*(p+l+1)='s';*(p+l+2)='\0';}elseif((*(p+l-1)=='s')||(*(p+l-1)=='x')||((*(p+l-2)=='c')&&(*(p+l-1)=='h'))||((*(p+l-2)=='s')&&(*(p+l-1 )=='h'))){*(p+l)='e';*(p+l+1)='s';*(p+l+2)='\0';}else if(*(p+l-1)=='o'){*(p+l)='e';*(p+l+1)='s';*(p+l+2)='\0';}else{*(p+l)='s';*(p+l+1)='\0';}}第十二题#include<stdio.h>#include<stdlib.h>int main(void){int i,j,a,n,sum,average;int *p;printf("Enter n:");scanf("%d",&n);if((p=(int*)calloc(n,sizeof(int)))==NULL){printf("Not able to allocate memory.\n");exit(1);}printf("您将输入%d个学生的成绩!\n",n);for(i=0;i<n;i++){printf("请输入第%d个学生的成绩:",i+1);scanf("%d",p+i);}sum=0;for(i=0;i<n;i++)sum=sum+*(p+i);average=sum/n;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++){if(*(p+i)>*(p+j)){a=*(p+i);*(p+i)=*(p+j);*(p+j)=a;}}}printf("学生的平均成绩是:%d\n",average);printf("学生的最高成绩是:%d\n",*(p+n-1));printf("学生的最低成绩是:%d\n",*p);return 0;}。

《C语言程序设计》课后习题参考答案

《C语言程序设计》课后习题参考答案

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案――武汉大学出版社习题1参考答案一、选择题1. A2. D二、填空题1. BASIC、FORTRAN、AL_GOL60和COBOL2. 83. 关键字4. 编辑、编译、链接和运行三、简答题1.答:(1)C语言具有结构化的控制语句。

C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。

(2)C语言具有丰富的数据结构类型。

C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。

C语言还提供了与地址密切相关的指针类型。

此外,用户还可以根据需要自定义数据类型。

(3)C语言具有丰富的运算符。

C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。

(4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。

(5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。

它既是成功的系统描述语言,又是通用的程序设计语言。

(6)C语言与汇编语言相比,可移植性好。

(7)功能强大。

C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。

现在许多系统软件都用C语言来描述,可以大大提高了编程效率。

2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。

3.答:(1)操作系统的设计与实现。

C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。

(2)工业控制。

由于C语言具有简洁、灵活、代码效率高、能进行位操作等优点,C语言大量应用在单板机、单片机上,以及嵌入式领域等。

(3)图形图像处理。

C语言在内存管理和进程控制方面有丰富的指令,而且它能提供快速运行的代码,因而C语言适合进行图形程序设计。

C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 全部课后习题答案

C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 全部课后习题答案

3. /*输入一个学生的数学成绩,低于 60,输出“Fail” ,否则,输出“Pass” 。*/ #include<stdio.h> void main() { double mark; //输入数序成绩 printf(" Input a mark:\n"); scanf("%lf", &mark);
5. /*输入 4 个整数 n, 输出最小值。*/ #include<stdio.h> void main() { int a,b,c,d, min; //输入 4 整数 printf(" Input number of integers n:\n"); scanf("%d%d%d%d", &a,&b,&c,&d);
s ( s a )( s b)( s c), where s
abc 2
源程序: #include<stdio.h> #include<math.h> void main() { double a, b, c, s, area, perimeter; //输入三条边 a,b,c printf(" Input three edges a b c:"); scanf("%lf%lf%lf", &a,&b,&c); //判断 a b c 是否构成三角形 if(a+b>c || a+c>b || b+c>a) { perimeter =a+b+c; s =perimeter/2; area =sqrt( s*(s-a)*(s-b)*(s-c) ); printf(“ area=%.2f, parameter=%.2f \n”, area, parameter); } else printf("These sides do not correspond to a valid triangle. \n"); }

《C语言程序设计》 课后习题答案 高等教育出版社

《C语言程序设计》 课后习题答案 高等教育出版社

《C语言程序设计》课后习题答案高等教育出版社《C语言程序设计》课后习题答案高等教育出版社第一章:C语言概述1. C语言的特点C语言是一种以处理底层任务和系统编程为目标的高级编程语言。

其特点包括语法简洁、执行效率高、可移植性强等。

第二章:C语言基本数据类型1. C语言中的基本数据类型C语言中的基本数据类型包括整型、字符型、浮点型等。

整型可以进一步细分为有符号整型和无符号整型。

第三章:C语言运算符1. C语言中的运算符C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。

这些运算符用于执行各种数学和逻辑操作。

第四章:C语言控制语句1. C语言中的条件语句C语言提供了if语句和switch语句来实现条件判断。

if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。

第五章:C语言函数1. C语言中的函数定义和调用函数是C语言中的基本模块,用于封装可重用的代码。

函数定义包括函数返回类型、函数名、参数列表和函数体等部分。

第六章:C语言数组1. C语言中的数组定义和使用数组是一组相同类型的数据元素的集合。

C语言中可以使用数组来存储和操作大量数据。

第七章:C语言指针1. C语言中的指针概念指针是一种变量,它存储了内存地址。

通过指针,可以直接访问和修改对应内存地址中的数据。

第八章:C语言字符串1. C语言中的字符串操作字符串是由一系列字符组成的数据类型。

C语言通过字符数组来表示和操作字符串。

第九章:C语言结构体1. C语言中的结构体定义和使用结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。

第十章:C语言文件操作1. C语言中的文件读写操作文件操作是一种重要的数据输入和输出方式。

C语言提供了一系列函数来实现文件的读写操作。

总结:通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。

希望本文对读者有所帮助。

《C语言程序设计》第4版何钦铭、颜晖主编课后习题答案

《C语言程序设计》第4版何钦铭、颜晖主编课后习题答案

《C语⾔程序设计》第4版何钦铭、颜晖主编课后习题答案第2章 ⽤C语⾔编写程序Page 0201#include<stdio.h>//练习2-32int main(void)3{4 int i,j,k;5 for(int i=1;i<=4;i++)//第i⾏6 {7 for(int j=1;j<=i-1;j++)//j个空格8 {9 printf(" ");10 }11 for(k=1;k<=5-i;k++)//k个*12 {13 printf("* ");14 }15 printf("\n");16 }1718 return 0;19}Page 0231#include<stdio.h>2int main(void)3{4 int f,c;//练习2-55 f=150;6 c=5*(f-32)/9;//或者是c=5/9.0*(f-32)||c=5.0/9*(f-32),但不可以是5/9,会得到0.因为:两个整型数据做除法运算,结果⼀定是整数。

7 printf("华⽒温度%d对应的摄⽒温度为%d.\n",f,c);89 printf("\n");1011 /*计算物体⾃由下落的距离(练习2-6)*/12 int h,g,t;13 t=3;//下落时间14 g=10;//重⼒加速度 10m/s^215 h=g*t*t/2;16 printf("⼀个物体从100⽶的⾼空⾃由下落,前3秒内下落的距离为:%d⽶.\n",h);1718 return 0;19}20Page 0292#include<math.h>3int main(void)4{5 /*计算摄⽒温度(练习2-8)*/6 double c,f;7 printf("输⼊华⽒温度:");8 scanf("%lf",&f);9 c=5*(f-32)/9.0;10 printf("华⽒温度%.2lf对应的摄⽒温度为%.3lf\n",f,c);1112 printf("\n");1314 /*整数四则运算(练习2-9)*/15 int x,y,z_1,z_2,z_3;16 double z_4;17 printf("输⼊两个正整数x,y:");18 scanf("%d %d",&x,&y);19 z_1=x+y;20 z_2=x-y;21 z_3=x*y;22 z_4=x/y;23 printf("%d和%d的和为%d,差为%d,积为%d,商为%lf\n",x,y,z_1,z_2,z_3,z_4); 2425 printf("\n");2627 /*计算分段函数(判断x是否不为0)(练习2-10)*/28 double x_1,y_1;29 printf("输⼊x_1:");30 scanf("%lf",&x_1);31 if(x_1!=0)32 y_1=1/x_1;33 else y_1=0;34 printf("输⼊%.2lf时,对应的y值为%.1lf\n",x_1,y_1);3536 printf("\n");3738 /*计算分段函数(判断x是否⼩于0)(练习2-11)*/39 double x_2,y_2;40 printf("输⼊x_2:");41 scanf("%lf",&x_2);42 if(x_2<0)43 y_2=pow(1+x_2,2)+2*x_2+1/x_2;44 else y_2=sqrt(x_2);45 printf("输⼊%.2lf时,对应的y值为%.2lf\n",x_2,y_2);464748 printf("\n");4950 return 0;51}Page 0372int main(void)3{4 int i,n,flag;//例2-85 double t,sum;6 printf("输⼊⼀个正整数n:");7 scanf("%d",&n);8 sum=0;9 flag=1;10 for(i=1;i<=n;i++)11 {12 t=flag*(1.0/(2*i-1));13 sum+=t;14 flag=(-1)*flag;1516 }17 printf("sum=%lf\n",sum);1819 printf("\n");2021 /*求1+1/2+···的前n项和(练习2-13)*/22 int n_1,j;23 double sum_1=0;24 printf("Enter n_1(n_1>=0):");25 scanf("%d",&n_1);26 for(j=1;j<=n;j++)27 {28 sum_1+=1.0/j;29 }30 printf("sum_1=%.2lf\n",sum_1);3132 printf("\n");3334 /*求1+1/3+1/5+···的前n项和(练习2-14)*/35 int n_2,k;36 double sum_2;37 printf("Enter n_2:");38 scanf("%d",&n_2);39 for(k=1;k<=n_2;k++)40 {41 sum_2+=1.0/(2*k-1);42 }43 printf("sum_2=%.2lf\n",sum_2);4445 printf("\n");4647 /*求1-1/4+1/7-1/10+···的前n项和(练习2-15)*/48 int n_3,m,flag_1=1;49 double sum_3=0;50 printf("Enter n_3:");51 scanf("%d",&n_3);52 for(m=1;m<=n;m++)53 {54 sum_3+=flag_1*1.0/(3*m-2);55 flag_1=flag_1*(-1);56 }57 printf("sum_3=%.2lf\n",sum_3);5859 return 0;60}Page 0402#include<math.h>3int main(void)4{5 int n,i;6 double power;7 printf("Enter n:");8 scanf("%d",&n);9 printf("2的乘⽅表:\n");10 for(i=0;i<=n;i++)11 {12 power=pow(2,i);13 printf("2的%d次⽅为%.0lf\n",i,power);14 }1516 printf("\n");1718 /*3的乘⽅表(练习2-17)*/19 int m,j;20 double power_1;21 printf("Enter m:");22 scanf("%d",&m);23 for(j=0;j<=m;j++)24 {25 power_1=pow(3,j);26 printf("pow(3,%d)=%.lf\n",j,power_1);27 }2829 return 0;30}1#include<stdio.h>//练习2-182double fact(int n)3{4 int i;5 double product;6 product=1;7 for(i=1;i<=n;i++)8 {9 product*=i;10 }1112 return product;13}14int main(void)15{16 int n,m,i;17 double result_1,result_2,result_3,c;18 printf("输⼊两个正整数m和n(m<=n):");19 scanf("%d %d",&m,&n);20 for(i=0;i<=n;i++)21 {22 result_1=fact(i);23 }24 for(i=0;i<=m;i++)25 {26 result_2=fact(i);27 }28 for(i=0;i<=n-m;i++)29 {30 result_3=fact(i);31 }32 c=result_1/(result_2*result_3);33 printf("c=%.lf",c);3435 return 0;36}。

《C语言程序设计》课后习题答案第八章

《C语言程序设计》课后习题答案第八章

8.1 编写两个函数,分别求两个证书的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个整数由键盘输入。

void main(){ int Mgy(int x,int y);int Mgb(int z);int a,b,mgy,mgb;printf("请输入两个数:\n");scanf("%d,%d",&a,&b);mgy=Mgy(a,b);mgb=Mgb(a,b,mgy);printf("两个数的最大公约数为%d,最小公倍数为%d\n",mgy,mgb);}int Mgy(int x,int y){ int r,temp;if(x<y){ temp=x;x=y;y=temp;}while(x%y!=0){ r=x%y;x=y;y=r;}return y;}int Mgb(int x,int y,int z){ return (x*y/z);}8.2 求方程ax²+bx+c=0的根,用三个函数分别求当b²-4ac大于零、等于零和小于零时的根,8.3编写一个判素数的函数,在主函数输入一个整数,输出是否是素数的信息。

#include<math.h>void main(){ int Isprime(int a);int m,temp=0;printf("请输入一个数:\n");scanf("%d",&m);temp=Isprime(m);if(temp==0) printf("%d不是素数。

\n",m);else printf("%d是素数。

\n",m);}int Isprime(int a){ int i,k,flag;if(a==0||a==1) flag=0;else{ k=sqrt(a);for(i=2;i<=k;i++)if(a%i==0) flag=0; }return flag; }8.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空8.9编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符8.10 写一个函数,输入一行字符,将此字符串中最长的单词输出。

C语言程序设计》课后习题详细答案

C语言程序设计》课后习题详细答案
3.18【参考答案】D)把D的答案修改为:scanf(“%8f”,&c);
3.19【参考答案】C)
3.20【参考答案】B)
二、填空题
3.21【参考答案】
(1)-200,2500(2)i=-200,j=2500
(3) i=-200
j=2500
3.22【参考答案】[1]12[2]0[3]0
3.23【参考答案】[1]一条语句[2]分号(或;)
2.2【参考答案】D)
2.3【参考答案】B)
2.4【参考答案】A)
2.5【参考答案】C)
2.6【参考答案】A)
2.7【参考答案】B)
2.8【参考答案】B)
2.9【参考答案】D)
2.10【参考答案】C)
2.11【参考答案】B)
2.12【参考答案】B)
2.13【参考答案】A)
二、填空题
2.14【参考答案】[1]11[2]12
(5)交换的步骤如下:
①把c中的值赋给t。
②把b中的值赋给c。
③把a中的值赋给b。
④把t中的值赋给a。
经过以上步骤,已按要求进行了交换。
(6)输出a、b、c中的值。
(7)编写程序如下:
main()
{ int a, b, c, t;
printf(″Enter a, b, c :\n″);
scanf(″%d%d%d″,&a,&b,&c);
4.5【参考答案】C)
4.6【参考答案】A)
4.7【参考答案】B)
4.8【参考答案】C)
4.9【参考答案】D)4.Biblioteka 0【参考答案】A)二、填空题
4.11【参考答案】[1]非零[2]零
4.12【参考答案】<、>、<=、>=、==、![KG-*2]=

C语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社

C语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社

习题参考答案 习题一 1./*在C语言中,下列标识符中哪些是合法的,哪些不合法?”*/合法:total, _debug, Counter1, begin_不合法:Large&Tall2. /*写出流程图,求1~100中能被6整除的所有整数之和*/3./*写出源程序,求1~100中能被6整除的所有整数之和”。

*/#include<stdio.h>void main(){int sum=0, i;for(i=1; i<=100; i++)if( i%6==0) sum =sum+i;sum);printf(“sum=%d”,}4./*画流程图,判别整数n是否是素数*/习题参考答案 习题十1.选择题(1) A(2) C(由于p指向x, 等式p≡&x, *p≡x成立. 故&*p≡&x≡p)(3) B (int c[]={1, 7, 12}; → c[0]=1, c[1]=7, c[2]=12. 而k=c, 即k指向数组c的首元素c[0]。

printf(“…”, *++k); 输出参数*(++k)的值是*(k+1), 即c[1] )(4) D (对字符数组只能在定义的同时赋初值,但不能在定义之后再用‘=’赋值)(5) D(*p[3]是由3个整型指针组成的数组,p是数组名,代表该数组的基地址,是地址常量,不能对p赋值,故A,C错。

*p代表p[0]这个指针,a[0]是普通整型变量,两者不应互相赋值,故B错。

p[0]=&a[0]或p[0]=a,都是正确的,作用是令p[0]这个指针指向数组a的首元素a[0])(6) D ( 指针数组元素p[3]是一个指针,指向a[3*3]=a[9], 即*p[3]==a[9] 而二维数组元素p[3][2]= *(p[3]+2)=*(&a[9]+2)=*(&a[11])=a[11])2./*写输出结果*/(1) 3,2,5 # 3,3,4 #注: z是全局变量,它在p()中有效,但在main()中另有与它同名的局部变量,所以在main()中无效。

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第八章 课后答案

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第八章 课后答案
scanf("%d%d",&m,&n);
/*输入n个整数到数组a(a[0]~a[n-1])*/
printf("Enter a[0]-a[n-1]: ");
for (i=0; i<n;i++)
scanf("%d",&a[i]);
/*调用move函数,使数组a中各数顺序后移m个位置,移出的数再从开头移入*/
void main(void)
{
int i,result,x,a[10];
/*输入10个整数到数组a*/
printf("Enter a[0]-a[9]: ");
for (i=0; i<10;i++)
scanf("%d",&a[i]);
/*输入待查数据x*/
printf("Enter a integer to x :");
for (j = i+1; j < n; j++ )
if (a[j] < a[index])index=j;/*比较大小,记录最小元的下标*/
swap(&a[i], &a[index]);/*交换最小元与a[i]的值*/
}
}
/*定义函数swap,实现两个数交换*/
void swap (int *px, int *py)
swap(&a[i], &a[index]);/*交换最大(小)元与a[i]的值*/
}
}
/*定义函数swap,实现两个数交换*/
void swap (int *px, int *py)

C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案

C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案
19
scanf("%d", &fahr); celsius = 5 * (fahr - 32) / 9; printf("celsius = %d\n", celsius); return 0; } 2-9 编写程序,输入 3 个整数,计算并输出它们的平均值。 解答: #include <stdio.h> int main(void) { int a, b, c; double average; scanf("%d%d%d", &a, &b, &c); average = (a + b + c) * 1.0 / 3; printf("average = %.2f\n", average); return 0; } 2-10 编写程序,输入 x,计算并输出下列分段函数 f(x)的值(保留 3 位小数)。
n
2-13 编写程序,输入一个正整数 n,求 i 1 。
i
1
解答: #include <stdio.h> int main(void) { int i, n; double sum; scanf("%d", &n); sum = 0; for(i = 1; i <= n; i++) sum = sum + 1.0 / i; printf("sum = %.6f\n", sum);
14
2.3 练习与习题参考答案
2.3.1 练习参考答案
2-1 编写程序,在屏幕上显示一个短句“Programming in C is fun!”。 解答:
#include <stdio.h> int main(void) { printf("Programming in C is fun!\n"); return 0; } 2-2 下列语句的运行结果是什么?与例 2-2 的运行结果有何不同?为什么? printf("Programming is fun. And Programming in C is even more fun!\n"); 解答: 运行结果:Programming is fun. And Programming in C is even more fun! 例 2-2 的运行结果分 2 行显示。原因在于,例 2-2 中在每条输出语句的结尾都采用了‘\n’ 换行。 2-3 编写程序,在屏幕上显示如下图案。 **** *** ** * 解答: int main(void) { printf("* * * *\n * * *\n * *\n *\n"); return 0; }

《C语言程序设计》 课后习题答案 高等教育出版社

《C语言程序设计》 课后习题答案 高等教育出版社

2.2 #include<stdio.h>main(){float x=2.5,y=2.5,z=2.5;printf("x=%f\n",x);printf("y=%f\n",y);printf("z=%f\n",z);}3.1(1)#include<stdio.h>main(){int a=12,b=3;float x=18.5,y=4.6;printf("%f\n",(float)(a*b)/2);printf("%d\n",(int)x%(int)y);}3.1(2)#include<stdio.h>main(){int x=32,y=81,p,q;p=x++;q=--y;printf("%d %d\n",p,q); printf("%d %d\n",x,y); }3.2#include<stdio.h>main(){int x,b0,b1,b2,s;printf("Inputx:");scanf("%d",&x);b2=x/100;b1=(x-b2*100)/10;//或(x%100)/10;或x/10%10; b0=x%10;s=b0*100+b1*10+b2;printf("s=%d\n",s);}3.3#include<stdio.h>#include<math.h>main(){float rate=0.0225;float n,capital,deposit;printf("Input n,capital:");scanf("%f,%f",&n,&capital);deposit=capital*pow(1+rate,n);printf("deposit=%f\n",deposit);}3.4#include<stdio.h>#include<math.h>main(){float a, b, c;double x, y;printf("Input a, b, c:");scanf("%f %f %f", &a, &b, &c);x=(-b+sqrt(b*b-4*a*c))/(2*a);y=(-b-sqrt(b*b-4*a*c))/(2*a);printf("x=%f,y=%f\n",x,y);}习题44.1(1)#include<stdio.h>main(){char c1='a',c2='b',c3='c';printf("a%cb%cc%c\n",c1,c2,c3);}4.1(2)#include<stdio.h>main(){int a=12,b=15;} 4.1(3)#include<stdio.h>main(){int a,b;printf("%d,%d\n",a,b);}4.2#include<stdio.h>main(){long a,b;float x,y;scanf("%d,%d\n",&a,&b);scanf("%f,%f\n",&x,&y);printf("a=%d,b=%d\n",a,b);printf("x=%f,b=%f\n",x,y); }5.1#include<stdio.h>main(){float a;printf("Input a:");scanf("%f",&a);if(a>=0){a=a;printf("a=%f\n",a);}else{a=-a;printf("a=%f\n",a);}}5.2#include<stdio.h>main(){int a;printf("Input a:");scanf("%d", &a);if(a%2==0){printf("a是偶数");}else{printf("a是奇数");}}5.3#include<stdio.h>#include<math.h>main(){float a,b,c,s,area;printf("Input a, b, c:");scanf("%f %f %f", &a, &b, &c);if(a+b>c&&a+c>b&&b+c>a){s=(a+b+c)/2;area=(float)sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%f\n",area);}else{printf("不是三角形");}}5.4#include<stdio.h>#include<math.h>main(){float a,b,c,x,y;printf("Inputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);if(a==0){printf("该方程不是一元二次方程\n");}if(b*b-4*a*c>0){x=(-b+sqrt(b*b-4*a*c))/(2*a);y=(-b-sqrt(b*b-4*a*c))/(2*a);printf("x=%f,y=%f\n",x,y);}else if(b*b-4*a*c==0){x=-b/(2*a);y=-b/(2*a);printf("x=%f,y=%f\n",x,y);}else{printf("该方程无实根\n");}}5.5#include<stdio.h>main(){int year,flag;printf("Input a year:");scanf("%d",&year);if(year%4==0&&year%400!=0||year%400==0){flag=1;}else{flag=0;}if(flag==1){printf("%d is a leap year!\n",year);}else{printf("%d is not a leap year!\n",year);}}5.6#include<stdio.h>main(){int year,flag;printf("Input a year:");scanf("%d",&year);flag=year%400==0||year%4==0&&year%100!=0?1:0;if(flag==1&&flag!=0){printf("%d is a leap year!\n",year);}else{printf("%d is not a leap year!\n",year);}}5.7#include<stdio.h>main(){char ch;printf("Inputch:");scanf("%c",&ch);if(ch>='a'&&ch<='z'){ch=getchar();ch=ch-32;printf("%c,%d\n",ch,ch);}else if(ch>='A'&&ch<='Z'){ch=getchar();ch=ch+32;printf("%c,%d\n",ch,ch);}else{printf("%c",ch);}}5.8#include<stdio.h>main(){char ch;printf("Inputch:");scanf("%c",&ch);if(ch>=48&&ch<=57){printf("ch是数字字符\n");}else if(ch>=65&&ch<=90){printf("ch是大写字母\n");}else if(ch>=97&&ch<=122){printf("ch是小写字母\n");}else if(ch==32){printf("ch是空格\n");}else{printf("ch是其他字符\n");}}5.9#include<stdio.h>main(){int score,grade;printf("Input score:");scanf("%d",&score);grade=score/10;if(score<0||score>100){printf("Input error\n");}if(score>=90&&score<=100){printf("%d--A\n",score);}else if(score>=80&&score<90){printf("%d--B\n",score);}else if(score>=70&&score<80){printf("%d--C\n",score);}else if(score>=60&&score<70){printf("%d--D\n",score);}else if(score>=0&&score<60){printf("%d--E\n",score);}}5.10#include<stdio.h>main(){int year,month;printf("Input year,month:");scanf("%d,%d",&year,&month);if(month>12||month<=0){printf("error month\n");}else{switch(year,month){case12:case10:case8:case7:case5:case3:case1:printf("31天\n");break;case11:case9:case6:case4:printf("30天\n");break;case2:if(year%4==0&&year!=0||year%400==0){printf("29天\n");}else{printf("28天\n");}break;default:printf("Input error\n");}}}6.1(1)#include<stdio.h>main(){int i,j,k;char space='';for(i=1;i<=4;i++){for(j=1;j<=i;j++){printf("%c",space);}for(k=1;k<=6;k++){printf("*");}printf("\n");}}6.1(2)#include<stdio.h>main(){int k=4,n;for(n=0;n<k;n++){if(n%2==0)continue;k--;}printf("k=%d\n,n=%d\n",k,n);}6.1(3)#include<stdio.h>main(){int k=4,n;for(n=0;n<k;n++){if(n%2==0)break;k--;}printf("k=%d,n=%d\n",k,n);}6.2(1)#include<stdio.h>main(){int i,sum=0;for(i=1;i<=101;i++){sum=sum+i;}printf("sum=%d\n",sum);}6.2(2)#include<stdio.h>main(){long i;long term,sum=0;for(i=1;i<=101;i=i+2){term=i*(i+1)*(i+2);sum=sum+term;}printf("sum=%ld\n",sum);}6.2(4)#include<stdio.h>#include<math.h>main(){int n=1;float term=1.0,sign=1,sum=0;while(term<=-1e-4||term>=1e-4){term=1.0/sign;sum=sum+term;sign=sign+n;n++;}printf("sum=%f\n",sum);}6.2(5)#include<stdio.h>#include<math.h>main(){int n=1,count=1;float x;double sum,term;printf("Input x:");scanf("%f",&x);sum=x;term=x;do{term=-term*x*x/((n+1)*(n+2));sum=sum+term;n=n+2;count++;}while(fabs(term)>=1e-5);printf("sin(x)=%f,count=%d\n",sum,count);}6.3#include<stdio.h>main(){int x=1,find=0;while(!find){if(x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0){printf("x=%d\n",x);find=1;x++;}}}/*int x,find=0;for(x=1;!find;x++){if(x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0){printf("x=%d\n",x);find=1;}}}*/6.4#include<stdio.h>main(){int i,n;long p=1,m=1;printf("Input n:");scanf("%d",&n);for(i=1;i<=n;i++){p=i*i;m=i*i*i;printf("p=%d,m=%d\n",i,p,i,m);}}6.5#include<stdio.h>main(){float c,f;for(c=-40;c<=110;c=c+10){f=9/5*c+32;printf("f=%f\n",f);}}6.6#include<stdio.h>#include<math.h>main(){int n;double c=0.01875,x;do{x=x*pow(1+c,12)-1000;n++;}while(x>0);printf("x=%d\n",x);}6.7#include<stdio.h>main(){int n=0;float a=100.0,c;printf("Inputc:");scanf("%f",&c);do{a=a*(1+c);n++;}while(a<=200);printf("n=%d\n",n);}6.8#include<stdio.h>#include<math.h>main(){int n=1,count=1;double sum=1,term=1;while(fabs(term)>=1e-5){term=pow(-1,count)*(1.0/(n+2));sum=sum+term;n=n+2;count++;}sum=4*sum;printf("sum=%f,count=%d\n",sum,count); }6.9#include<stdio.h>#include<math.h>main(){int n=1,count=1;double sum=1,term=1;while(fabs(term)>=1e-5){term=term*(1.0/n);sum=sum+term;n++;count++;}printf("sum=%f,count=%d\n",sum,count);}6.10#include<stdio.h>#include<math.h>main(){int x;for(x=100;x<=999;x++){if(x==pow(x/100,3)+pow(x/10%10,3)+pow(x%10,3))printf("x=%d\n",x);}}6.11#include<stdio.h>main(){int i=0,n;long sum=0,term=1;printf("Inputn:");scanf("%d",&n);do{i++;term=term*i;sum=sum+term;}while(sum<n);printf("%d\n",i-1);}6.12#include<stdio.h>main(){int i,n,m,count=0,sum=0;printf("Input n:");scanf("%d",&n);for(i=1;i<=n;i++){printf("Inputm:");scanf("%d",&m);if(m>0){sum=sum+m;count++;}else{break;}printf("sum=%d,count=%d\n",sum,count);}}6.13#include<stdio.h>main(){int i,n,m,count=0,sum=0;printf("Inputn:");scanf("%d",&n);for(i=1;i<=n;i++){printf("Inputm:");scanf("%d",&m);if(m>0||m<0){sum=sum+m;count++;}else{break;}printf("sum=%d,count=%d\n",sum,count);}}6.14#include<stdio.h>main(){int x,y,z;for(x=0;x<=17;x++){for(y=0;y<=25;y++){3*x+2*y+z==50;z=30-x-y;if(3*x+2*y+z==50&&x+y+z==30)printf("x=%d,y=%d,z=%d\n",x,y,z);}}}6.15#include<stdio.h>main(){int x,y;for(x=0;x<=98;x++){y=98-x;2*x+4*y==386;if(x+y==98&&2*x+4*y==386){printf("x=%d,y=%d\n",x,y);}}}6.16#include<stdio.h>main(){int x,y,z;for(x=0;x<=20;x++){for(y=0;y<=33;y++){3*y+5*x+z/3.0==100;z=100-x-y;if(5*x+3*y+z/3.0==100&&z+x+y==100){printf("x=%d,y=%d,z=%d\n",x,y,z);}}}}6.17#include<stdio.h>main(){int x,y,z;for(x=1;x<=9;x++){for(y=1;y<=17;y++){10*x+5*y+z==100;z=50-x-y;if(10*x+5*y+z==100&&x+y+z==50&&z>0){printf("x=%d,y=%d,z=%d\n",x,y,z);}}}}7.1#include<stdio.h>int Square(int i){return i*i;}int main(){int i=0;i=Square(i);for(;i<3;i++){static int i=1;i+=Square(i);printf("%d,",i);}printf("%d\n",i);return0;}7.2#include<stdio.h>int hour,minute,second;void update(){second++;if(second==60){second=0;minute++;}if(minute==60){minute=0;hour++;}if(hour==24)hour=0;}void display(){printf("%d,%d,%d\n",hour,minute,second); }void delay(){int t;for(t=0;t<100000000;t++);}int main(){int i;void updaye(),display(),delay();for(i=0;i<1000000;i++){update();display();delay();}return0;}7.3#include<stdio.h>int GetMax(int a,int b);int main(){int x,y,max;printf("Inputx,y:");scanf("%d,%d",&x,&y);max=GetMax(x,y);printf("max=%d\n",max);return0;}int GetMax(int m,int n){if(m>=n)return m;elsereturn n;}7.4#include<stdio.h>int LCM(int n,int m);int main(){int a,b;printf("Inputa,b:");scanf("%d,%d",&a,&b);printf("%d\n",LCM(a,b));return0;}int LCM(int n,int m){int x;int find=0;for(x=1;!find;x++){if(x%n==0&&x%m==0){find=1;}}return x-1;}7.5#include<stdio.h>long Fact(int n);int main(){int m,a;printf("Inputm:");scanf("%d",&m);for(a=1;a<=m;a++){printf("%d!=%ld\n",a,Fact(a));}return0;}long Fact(int n){int i;long result=1;for(i=2;i<=n;i++)result*=i;return result;}7.6#include<stdio.h>long Fact(int n);int main(){int m;long ret;printf("Inputm:");scanf("%d",&m);ret=Fact(m);printf("ret=%d\n",ret);return0;}long Fact(int n){int i;long result=1,sum=0;for(i=2;i<=n;i++){result*=i;sum=sum+result;}return sum;}7.7(1)#include<stdio.h>int Gcd(int a,int b);int main(){int m,n;printf("Inputm,n:");scanf("%d,%d",&m,&n);printf("%d\n",Gcd(m,n));return0;}int Gcd(int a,int b){int t,min,find=0;min=a<b?a:b;t=min;for(t=min;!find;t--){a%t==0;b%t==0;if(a%t==0&&b%t==0)return t;}find=1;}7.7(2)#include<stdio.h> int Gcd(int a,int b);int main(){int m,n;printf("Inputm,n:");scanf("%d,%d",&m,&n);printf("%d\n",Gcd(m,n));return0;}int Gcd(int a,int b){int r,temp;r=a%b;if(r==0)return b;elsedo{temp=b;b=r;a=temp;r=a%b;}while(r!=0);return b;}8.1(1)#include<stdio.h> void Func(int x){x=2;}int main(){int x=10;Func(x);printf("%d",x);return0;}8.1(2)#include<stdio.h> void Func(int b[]){int j;for(j=0;j<4;j++){b[j]=j;}}int main(){static int a[]={5,6,7,8},i;Func(a);for(i=0;i<4;i++){printf("%d",a[i]);}return0;}8.2(1)int PositiveNum(int a[],int n) {int i,count=0;for(i=0;i<n;i++){if(a[i]>0)count++;}return0;}8.2(2)void Fib(long f[],long n){int i;f[0]=0;f[1]=1;for(i=2;i<n;i++){f[i]=f[i-1]+f[i-2];}}8.2(3)#include<stdio.h>int main(){int a[10],n,max,min,maxPos,minPos;for(n=0;n<10;n++){scanf("%d",&a[n]);}max=min=a[0];maxPos=minPos=0;for(n=0;n<10;n++){if(a[n]>max){max=a[n];maxPos=n;}else if(a[n]<min){min=a[n];minPos=n;}}printf("max=%d,pos=%d\n",max,maxPos);printf("min=%d,pos=%d\n",min,minPos);return0;}8.3void DivArray(int*pArray,int n){int i;for(i=0;i<n;i++){pArray[i]/=pAttay[0];}}8.4#include<stdio.h>#define N40int FailNum(int score[],int n);void ReadScore(int score[],int n);int main(){int score[N],n;printf("Input n:");scanf("%d",&n);ReadScore(score,n);FailNum(score,n);printf("FailNum students are%d\n",FailNum(score,n));return0;}int FailNum(int score[],int n){int i,count=0;for(i=0;i<n;i++){if(score[i]<60)count++;}return count;}void ReadScore(int score[],int n){int i;printf("Input score:");for(i=0;i<n;i++){scanf("%d",&score[i]);}}8.5#include<stdio.h>#define N40int HighAver(int score[],int n);int ReadScore(int score[]);int main(){int score[N],n;n=ReadScore(score);printf("HighAver students are%d\n",HighAver(score,n));return0;}int HighAver(int score[],int n){int i,count=0,sum=0,aver;for(i=0;i<n;i++){sum=sum+score[i];aver=sum/n;}for(i=0;i<n;i++){if(score[i]>aver)count++;}return count;}int ReadScore(int score[]){int i=-1;do{i++;printf("Input score:");scanf("%d",&score[i]);}while(score[i]>=0);return i;}8.6#include<stdio.h>#define N40int ReadScore(int score[],long num[]);int FindMax(int score[],long num[],int n);int main(){int score[N],n,max,num,t;long num[N];t=FindMax(score,n);max=score[t];num=num[t];printf("max=%d,num=%d\n",max,num);return0;}int ReadScore(int score[],long num[]){int i=-1;do{i++;printf("Input student's ID and score:");scanf("%ld%d",&num[i],&score[i]);}while(num[i]>0&&score[i]>=0);return i;}int FindMax(int score[],long num[],int n){int max,i;max=score[0];for(i=1;i<n;i++){if(score[i]>max)max=score[i];}return i;}8.7#include<stdio.h>#define N40int Read(int a[]);int ChangeArry(int a[],int n);int main(){int a[N],n;printf("%d\n",ChangeArry(a,n));return0;}int Read(int a[]){int i;for(i=0;i<9;i++){printf("Input a:");scanf("%d",&a[i]);return i;}int ChangeArry(int a[],int n){int max,min,i,maxpos,minpos,term;max=min=score[0];for(i=1;i<n;i++){if(a[i]>max)max=score[i];maxpos=n;else(a[i]<min)min=a[i];minpos=n;temp=maxpos;maxpos=minpos;minpos=temp;}return a[i];}8.10#include<stdio.h>#define N5void main(){int a[N][N];int sum=0;int i,j;printf("请输入一个%d*%d的矩阵\n",N,N);for(i=0;i<N;i++){for(j=0;j<N;j++){scanf("%d",&a[i][j]);}}for(i=0;i<N;i++){for(j=0;j<N;j++){if(i==j||i+j==N-1)sum=sum+a[i][j];}}printf("对角线元素之和为:%d\n",sum);}8.11#include<stdio.h>#define N2#define M3void main(){int a[N][M],b[N][M];int i,j,sum1=0,sum2=0,sum=0;printf("请输入一个%d*%d的矩阵\n",N,M);for(i=0;i<N;i++){for(j=0;j<M;j++){scanf("%d",&a[i][j]);sum1=sum1+a[i][j];}}printf("请输入一个%d*%d的矩阵\n",N,M);for(i=0;i<N;i++){for(j=0;j<M;j++){scanf("%d",&b[i][j]);sum2=sum2+a[i][j];}}sum=sum1+sum2;printf("sum=%d\n",sum);}8.12#include<stdio.h>#define N7void YangHui(int a[N][N],int n);void main(){int i,j,n,b[N][N];printf("Input n:");scanf("%d",&n);YangHui(b,n);for(i=0;i<n;i++){for(j=0;j<=i;j++){printf("%4d",b[i][j]);}printf("\n");}}void YangHui(int a[N][N],int n){int i,j;for(i=0;i<n;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<n;i++){for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}}8.13#include<stdio.h>#define N12void main(){int i;int f[N]={1,1};printf("%d:%d\n",0,f[0]);printf("%d:%d\n",1,f[1]);for(i=2;i<N;i++){f[i]=f[i-1]+f[i-2];printf("%d:%d\n",i+1,f[i]);}}8.14#include<stdio.h>#include<stdlib.h>#include<time.h>#define N6000void main(){int a[N],i;int b1=0,b2=0,b3=0,b4=0,b5=0,b6=0;float p1,p2,p3,p4,p5,p6;srand(time(NULL));for(i=0;i<N;i++){a[i]=rand()%6+1;printf("%3d",a[i]);if(a[i]==1)b1++;if(a[i]==2)b2++;if(a[i]==3)b3++;if(a[i]==4)b4++;if(a[i]==5)b5++;if(a[i]==6)b6++;p1=(float)(b1/6000.0);p2=(float)(b2/6000.0);p3=(float)(b3/6000.0);p4=(float)(b4/6000.0);p5=(float)(b5/6000.0);p6=(float)(b6/6000.0);}printf("骰子出现1的概率:%.2f\n",p1);printf("骰子出现2的概率:%.2f\n",p2);printf("骰子出现3的概率:%.2f\n",p3);printf("骰子出现4的概率:%.2f\n",p4);printf("骰子出现5的概率:%.2f\n",p5);printf("骰子出现6的概率:%.2f\n",p6);}9.1(1)void Swap(int*x,int*y){int*pTemp;//*pTemp未进行初始化,*pTemp指向哪里位置*pTemp=*x;*x=*y;*y=*pTemp;}9.1(2)void Swap(int*x,int*y){int*pTemp;pTemp=x;x=y;y=pTemp;}//错误,x,y没有指向类型9.2#include<stdio.h>int main(){int a[]={1,2,3,4,5};int*p=a;printf("%d,%d,%d,%d,%d,%d,%d\n",*p,*(++p),(*p)++,*p,*p--,--(*p),*p);return0;}9.3#include<stdio.h>void Swap(int*x,int*y);int main(){int a[6]={1,2,3,4,5,6},b[6]={11,22,33,44,55,66};int i;printf("Before Array\n");for(i=0;i<6;i++){printf("%d\n",a[i]);}for(i=0;i<6;i++){printf("%d\n",b[i]);}for(i=0;i<6;i++){Swap(&a[i],&b[i]);}printf("After Array\n");for(i=0;i<6;i++){printf("%d\n",a[i]);}for(i=0;i<6;i++){printf("%d\n",b[i]);}return0;}void Swap(int*x,int*y){int temp;temp=*x;*x=*y;*y=temp;}9.4#include<stdio.h>#define N10void FindMaxMin(int a[],int*pMaxa,int*pMaxnum,int*pMina,int*pMinnum);int main(){int a[N];int i,maxa,mina,maxnum,minnum;printf("Input a:");for(i=0;i<10;i++){scanf("%d",&a[i]);}FindMaxMin(a,&maxa,&maxnum,&mina,&minnum);printf("maxa=%d,maxnum=%d,mina=%d,minnum=%d\n",maxa,maxnum,mina,minnum);return0;}void FindMaxMin(int a[],int*pMaxa,int*pMaxnum,int*pMina,int*pMinnum){int i;*pMaxa=a[0];*pMina=a[0];*pMaxnum=0;*pMinnum=0;for(i=0;i<10;i++){if(a[i]>*pMaxa){*pMaxa=a[i];*pMaxnum=i;}else if(a[i]<*pMina){*pMina=a[i];*pMinnum=i;}}}10.1void MYStrcpy(char*dstStr,const char*srcStr){while((*dstStr++=*srcStr++)!='\0'){}}10.2#include<stdio.h>main(){char*a="main(){char*a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);} 10.3(1)unsigned int MyStrlen(char*p)main(){unsigned int len;len=0;for(;*pa!='\0';pa++){len++;}return len;}10.3(2)unsigned int MyStrlen(char s[]){char*p=s;while(*p!='\0'){p++;}return(p-*p);}10.3(3)int MyStrcmp(char*p1,char*p2){for(;*p1==*p2;p1++,p2++){if(*p1=='\0')return-1;}return1;}10.3(4)int MyStrcmp(char s[],char t[]){int i;for(i=0;s[i]==t[i];i++){if(s[i]=='\0')return0;}return i;}10.3(5)#include<stdio.h>#include<string.h>int main(){char password[7]="secret";char userInput[81];printf("Input Password:");scanf("%s",userInput);if(strcmp(userInput,password)==0)printf("Coorrect password!Welcome to the system...\n");else if(strcmp(userInput,password)<0)printf("Invalid password!user input<password...\n");elseprintf("Invalid password!user input>password...\n");return0;}10.4#include<stdio.h>#define N24unsigned int CountLetter(char str[]);int main(){char a[N];printf("Input a letter:\n");gets(a);printf("The length of the letter is:%d\n",CountLetter(a));return0;}unsigned int CountLetter(char str[]){char*p=str;int c=0,flag=0;while(*p!='\0'){if(*p!='')flag=1;else if(flag==1){c++;flag=0;}p++;}return c+1;}12.1#include<stdio.h>typedef struct data{int year;int month;int day;}DATA;typedef struct work{char a[14];char b[10];char c[6];}WORK;typedef struct student{char studentName[10];char studentSex;DATA birthday;WORK profession;}STUDENT;int main(){STUDENT stu={"王刚",'M',{1991,5,19},{"信息工程系","学习人员","学生"}};printf("stu:%2s%3c%6d/%02d/%02d%4s,%4s,%4s\n",stu.studentName,stu.studentSex,st u.birthday.year,stu.birthday.month,stu.birthday.day,stu.profession.a,stu.profession.b,stu.profession.c);return0;}12.4#include<stdio.h>#include<string.h>#define N10typedef struct people{char peopleName[10];}PEOPLE;int main(){int sum1=0,sum2=0,sum3=0,sum4=0;int i;char name[N][N];PEOPLE stu[5]={"zhang","li","wang"};printf("Enter their name:\n");for(i=0;i<10;i++){gets(name[i]);if(strcmp(name[i],stu[0].peopleName)==0)sum1++;else if(strcmp(name[i],stu[1].peopleName)==0) sum2++;else if(strcmp(name[i],stu[2].peopleName)==0) sum3++;elsesum4++;}printf("stu:%4s%2d\n",stu[i].peopleName,sum[j]);printf("stu:%4s%2d\n",stu[1].peopleName,sum2);printf("stu:%4s%2d\n",stu[2].peopleName,sum3);printf("%2d\n",sum4);return0;}。

C语言程序设计(高教版何钦铭主编)课后答案

C语言程序设计(高教版何钦铭主编)课后答案

前7章绝大‎部分都有。

‎水平有限‎(只学了3‎三个月),‎仅供参考。

‎‎/*计算‎2^i的前‎n项和*/‎#inc‎l ude<‎s tdio‎.h>#‎i nclu‎d e<ma‎t h.h>‎int ‎m ain(‎v oid)‎{i‎n t i,‎n;d‎o uble‎sum;‎pri‎n tf("‎E nter‎n:")‎;sc‎a nf("‎%d",&‎n);‎s um=0‎;fo‎r(i=1‎;i<=n‎;i++)‎{s‎u m=su‎m+pow‎(2,i)‎;}‎prin‎t f("s‎u m=%.‎0f\n"‎,sum)‎;re‎t urn ‎0;}‎/*‎输入若干个‎学生的成绩‎,计算平均‎分,并统计‎个等级成绩‎的个数。

成‎绩分为5个‎等级:分别‎为A(90‎~100)‎、B(80‎~89)、‎C(70~‎79)、D‎(60~6‎9)、E(‎0~59)‎*/#i‎n clud‎e<std‎i o.h>‎int ‎m ain(‎v oid)‎{i‎n t gr‎a de,A‎,B,C,‎D,E,n‎;do‎u ble ‎t otal‎;pr‎i ntf(‎"Ente‎r gra‎d e:\n‎");‎s canf‎("%d"‎,&gra‎d e);‎A=B=‎C=D=E‎=0;‎t otal‎=0;‎n=0;‎whil‎e(gra‎d e>=0‎){‎i f(gr‎a de<=‎59)‎E++‎;e‎l se i‎f(gra‎d e<=6‎9)‎D++;‎el‎s e if‎(grad‎e<=79‎)‎C++;‎els‎e if(‎g rade‎<=89)‎B‎++;‎else‎A‎++;‎n++;‎to‎t al=t‎o tal+‎g rade‎;s‎c anf(‎"%d",‎&grad‎e);‎}if‎(n==0‎){‎p rint‎f("gr‎a de a‎v erag‎e=0\n‎");‎prin‎t f("A‎=0\nB‎=0\nC‎=0\nD‎=0\nE‎=0\n"‎);}‎els‎e{‎p rint‎f("gr‎a de a‎v erag‎e=%.2‎f\n",‎t otal‎/n);‎pri‎n tf("‎A=%d\‎n B=%d‎\nC=%‎d\nD=‎%d\nE‎=%d\n‎",A,B‎,C,D,‎E);‎}re‎t urn ‎0;}‎/*‎输入职工的‎月薪sal‎a ry,输‎出应交的个‎人所得税t‎a x*/‎#incl‎u de<s‎t dio.‎h>in‎t mai‎n(voi‎d){‎int ‎s alar‎y;d‎o uble‎tax;‎pri‎n tf("‎E nter‎sala‎r y:")‎;sc‎a nf("‎%d",&‎s alar‎y);‎i f(sa‎l ary<‎=850)‎ta‎x=0;‎else‎if(s‎a lary‎<=135‎0)‎t ax=5‎.0*(s‎a lary‎-850)‎/100;‎els‎e if(‎s alar‎y<=28‎50)‎tax=‎10.0*‎(sala‎r y-85‎0)/10‎0;e‎l se i‎f(sal‎a ry<=‎5850)‎ta‎x=15.‎0*(sa‎l ary-‎850)/‎100;‎else‎ta‎x=20.‎0*(sa‎l ary-‎850)/‎100;‎prin‎t f("t‎a x=%.‎2f\n"‎,tax)‎;re‎t urn ‎0;}‎/*‎计算1-2‎/3+3/‎5-4/7‎+5/9-‎6/11+‎…*/#‎i nclu‎d e<st‎d io.h‎>int‎main‎(void‎){‎i nt i‎,n,fz‎,fm,f‎l ag; ‎‎‎ /‎*fz分子‎,fm分母‎,flag‎符号*/‎doub‎l e it‎e m,su‎m; ‎‎‎‎/*ite‎m是第n项‎的值,su‎m存放计算‎结果*/‎prin‎t f("E‎n ter ‎n:");‎sca‎n f("%‎d",&n‎);f‎z=fm=‎f lag=‎1;s‎u m=0;‎for‎(i=1;‎i<=n;‎i++){‎it‎e m=1.‎0*fla‎g*fz/‎f m;‎sum=‎s um+i‎t em;‎fz+‎+;‎f m=fm‎+2;‎flag‎=-fla‎g;}‎pri‎n tf("‎s um=%‎.2f\n‎",sum‎);r‎e turn‎0;}‎/‎*输出21‎世纪所有的‎闰年。

C语言程序设计现代方法第八章答案

C语言程序设计现代方法第八章答案

C语言程序设计现代方法第八章答案(总4页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.MarchChapter 8Answers to Selected Exercises1. [was #4] The problem with sizeof(a)/sizeof(t) is that it can't easily be checked for correctness by someone reading the program. (The reader would have to locate the declaration of a and make sure that its elements have type t.)2. [was #8] To use a digit d (in character form) as a subscript into the array a, we would write a[d-'0']. This assumes that digits have consecutive codes in the underlying character set, which is true of ASCII and other popular character sets.7. [was #10]const int segments[10][7] = {{1, 1, 1, 1, 1, 1},{0, 1, 1},{1, 1, 0, 1, 1, 0, 1},{1, 1, 1, 1, 0, 0, 1},{0, 1, 1, 0, 0, 1, 1},{1, 0, 1, 1, 0, 1, 1},{1, 0, 1, 1, 1, 1, 1},{1, 1, 1},{1, 1, 1, 1, 1, 1, 1},{1, 1, 1, 1, 0, 1, 1}};Answers to Selected Programming Projects2. [was #2]#include <>int main(void){int digit_count[10] = {0}; int digit;long n;printf("Enter a number: "); scanf("%ld", &n);while (n > 0) {digit = n % 10;digit_count[digit]++;n /= 10;}printf ("Digit: ");for (digit = 0; digit <= 9; digit++)printf("%3d", digit);printf("\nOccurrences:");for (digit = 0; digit <= 9; digit++)printf("%3d", digit_count[digit]);printf("\n");return 0;}5. [was #6]#include <>#define NUM_RATES ((int) (sizeof(value) / sizeof(value[0]))) #define INITIAL_BALANCEint main(void){int i, low_rate, month, num_years, year;double value[5];printf("Enter interest rate: ");scanf("%d", &low_rate);printf("Enter number of years: ");scanf("%d", &num_years);printf("\nYears");for (i = 0; i < NUM_RATES; i++) {printf("%6d%%", low_rate + i);value[i] = INITIAL_BALANCE;}printf("\n");for (year = 1; year <= num_years; year++) {printf("%3d ", year);for (i = 0; i < NUM_RATES; i++) {for (month = 1; month <= 12; month++)value[i] += ((double) (low_rate + i) / 12) / * value[i];printf("%", value[i]); }printf("\n");}return 0;}8. [was #12]#include <>#define NUM_QUIZZES 5#define NUM_STUDENTS 5int main(void){int grades[NUM_STUDENTS][NUM_QUIZZES];int high, low, quiz, student, total;for (student = 0; student < NUM_STUDENTS; student++) { printf("Enter grades for student %d: ", student + 1);for (quiz = 0; quiz < NUM_QUIZZES; quiz++)scanf("%d", &grades[student][quiz]);}printf("\nStudent Total Average\n");for (student = 0; student < NUM_STUDENTS; student++) { printf("%4d ", student + 1);total = 0;for (quiz = 0; quiz < NUM_QUIZZES; quiz++)total += grades[student][quiz];printf("%3d %3d\n", total, total / NUM_QUIZZES);}printf("\nQuiz Average High Low\n");for (quiz = 0; quiz < NUM_QUIZZES; quiz++) {printf("%3d ", quiz + 1);total = 0;high = 0;low = 100;for (student = 0; student < NUM_STUDENTS; student++) { total += grades[student][quiz];if (grades[student][quiz] > high)high = grades[student][quiz];if (grades[student][quiz] < low) low = grades[student][quiz];}printf("%3d %3d %3d\n", total / NUM_STUDENTS, high, low); }return 0;}。

C语言课后习题答案第八章

C语言课后习题答案第八章

作业八:函数程序设计答案(一)选择题(30分)1.以下正确的函数定义形式是A__。

A)double fun(int x,int y)B)double fun(int x;int y)C)double fun(int x,int y);D)double fun(int x,y);2.以下正确的函数形式是D__。

A)double fun(int x,int y){ z=x+y; return z; }B)fun(int x,y){ int z; return z; }C)fun(x,y){ int x,y; double z; z=x+y; return z; }D)double fun(int x,int y){ double z; z=x+y; return z; }(重要)3.以下正确的说法是A__。

在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参是虚拟的,不占用存储单元4.若调用一个函数,且此函数中没有return语句,则正确的说法是D__。

该函数A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值(重要)5.以下不正确的说法是B__。

C语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与其对应的实参类型一致6.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是B__。

A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式7.以下程序有语法性错误,有关错误原因的正确说法是C__。

main(){int G=5,k;void Prt_char();……k=Prt_char(G);……}A)语句void prt_char();有错,它是函数调用语句,不能用void 说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线8.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是B__。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档