C语言程序设计(何钦铭)课后习题作业
《C语言程序设计(何钦铭颜晖主编)》习题8答案
![《C语言程序设计(何钦铭颜晖主编)》习题8答案](https://img.taocdn.com/s3/m/3a1e86fc18e8b8f67c1cfad6195f312b3169ebfe.png)
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语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题11 课后答案
![C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题11 课后答案](https://img.taocdn.com/s3/m/5a8107f44693daef5ef73d36.png)
//链表 list1 的尾部指向链表 list2 的表头 //合并后的链表表头是 list1
NEW=tail=NULL; //新建链表 NEW,一开始为空表 for (p=L; p!=NULL; p=p->next){ q =(struct zg*) malloc( sizeof(struct zg*)); //为新链表分配新节点 q q->name= p->name; //复制节点的数据区内容 q->salary= p->salary; q->next=NULL; //该节点也是目前新链表中的表尾节点 if(NEW==NULL) NEW=q; //若当前 NEW 为空链表,则令新节点 q 为表头节点 else tail->next=q; //否则新节点连到表尾处 tail=q; } return NEW; } //返回复制得到新链表 //现在 q 是表尾节点
字符指针加1即加1个字符变量所占字节数1b故intpc11intpc33整型指针加1即加1个整型变量所占字节数4b故intpi14intpi54520double个double型变量所占字节数8b故intpi18intpi78756定义一个关于年月日的结构并编写一函数计算某日是某年第几天定义结构
习题参考答案 习题十一
(13) int x=0 //定义变量 x—待补考人数,并初始化 p= head //p 指向链表的头一个节点 p –>score <60 3. /*分析程序输出结果*/
23 98.5 wang 23 98.5 wang y ang 最后一行: *px->c+2 -- 该表达式有 3 个运算符:2 个单目运算*和->, 优先级高于双目运算+,而根据结合性,先算->后算*, 故表达式相当于 (*(px->c) )+2。 px->c 是指结构变量 x 的分量 c,而 c 本身是一个字符指针,指向字符串”wang”的首字 符’w’, 对指针 px->c 做间接访问*,得到该指针指向的字符本身,即’w’, 最后对该字符加 2,得到另一个字符’y’. &px->c[1] -- 该表达式有 2 个运算符: 2 个单目运算 & 和 ->, 而根据结合性,先算 -> 后算 &, 故表达式相当于 &(px->c[1])。 px->c[1]是指结构变量 x 的分量 c 的下标为 1 的字符, 即’a’, 然后再算&,即求’a’的地址,考虑到输出时 对应的格式’%s’,即输出从该地址开始的字符串,因此输出从’a’开始的字符串”ang”. (2) 略 (3) 1 4 8 3 20 56 分析: NULL==0, 故字符指针 pc=整型指针 pi=双精度指针 pd=0, 但指针类型不同,指针运算的含义不同: 字符指针加 1,即加 1 个字符变量所占字节数—1B,故(int)(pc+1)=1, (int)(pc+3)=3 整型指针加 1,即加 1 个整型变量所占字节数—4B,故(int)(pi+1)=4, (int)(pi+5)=4*5=20 double 型指针加 1,即加 1 个 double 型变量所占字节数—8B,故(int)(pi+1)=8, (int)(pi+7)=8*7=56 4. 定义一个关于年月日的结构,并编写一函数计算某日是某年第几天 //定义结构: struct date{ int year, month, day; }; //定义函数 f: int f( struct date x) { int table[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; int i,leap, d=0; leap= x.year%4==0&x.year%100!=0 || x.year%400==0; for( i=1; i<=12; i++) d += table[leap][i]; return d; } 5. 编写函数,计算两个时刻之间的时间差,时间以时分秒表示,为 24 小时制 struct time{ int hour, minute, second; }; (struct time) time_lag(struct time t1, struct time t2) //返回值—时差以时分秒的形式表示 { int tx1, tx2; //tx1,tx2 表示时刻 t1 或 t2 是当天的第几秒? struct time lag; tx1=t1.hour*3600; tx2=t2.hour*3600; //1 小时为 3600 秒
C语言程序设计(高教版何钦铭主编)课后答案
![C语言程序设计(高教版何钦铭主编)课后答案](https://img.taocdn.com/s3/m/4f55e07d1711cc7931b7164d.png)
do{
sum=sum+i%10;
i=i/10;
digits++;
}while(i>0);
printf("sum=%d\nIt contains %d digits.\n",sum,digits);
return 0;
}
/*输入一个正整数n,输出2/1+3/2+5/3+8/5+…的前n项和,保留两位小数。*/
while(grade>=0){
if(grade<=59)
E++;
else if(grade<=69)
D++;
else if(grade<=79)
C++;
else if(grade<=89)
B++;
else
A++;
n++;
printf("A=%d\nB=%d\nC=%d\nD=%d\nE=%d\n",A,B,C,D,E);
}
return 0;
}
/*输入职工的月薪salary,输出应交的个人所得税tax*/
#include<stdio.h>
int main(void)
{
int salary;
result=1;
for(j=1;j<=i;j++){
result=result*j;
}
sum=sum+result;
}
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题11 课后答案
![C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题11 课后答案](https://img.taocdn.com/s3/m/5a8107f44693daef5ef73d36.png)
//差几分钟
//差几秒
6. *编写函数:把两个链表合并成一个链表,并返回新练表(的表头)-----提高篇 //定义链表结构—职工信息表 struct zg{ char *name; int salary; struct zg *next; } (struct zg* ) merge( struct zg *list1, struct zg *list2) { struct zg *p; for( p=list1; p->next!=NULL; p->next=list2; return list1; } 7. *复制链表 L 到新链表 NEW 上。 (新链表NEW仅有一个表头指针,其余节点需要新建---提高篇 (struct zg*) copy( struct zg *L) { if( L==NULL) { //若源链表是空表,则返回 NULL return NULL; } //L 非空,则逐个复制到 NEW 中 struct zg *NEW, *tail, *p,*q; p= p->next) ; //p 指向链表 list1 的尾部(尾部特征是 next 指针为空)
8~11 略 12. 写一函数,得到一个 16 位二进制数中的任何一位的数值。即给定一个长度为 2B 的整数 x,和一个位数 k,该函数返 回 x 转换成二进制数后的第 k(k=0,1,…,15)位数字 ???????????????? 15 。 。 。 6543210 分析:利用位运算规则:0 或 1 与 0 做按位与&运算,都是 0;0 或 1 与 1 做&运算,都是它本身。 故对给定的 x 和 k, 只需将 x 与一个 16 位二进制数(第 k 位为 1,其余 15 位为 0)按位与即可:若 x 中的第 k 位是 0, 则计算结果是 16 个 0,转换为十进制数就是 0;若 x 中第 k 位是 1,则计算结果是 15 个 0,第 k 位是 1,转换成十进制 数一定不等于 0. 与 x 做按位与的整数是:第 k 位为 1,其余 15 位是 0,即 2 的 k 次幂。 #include<math.h> //pow() int digit( int x, int k) //k=0,…,15 { if( k<0 || k>15) return -1; int y= pow(2,k); if( x&y==0) return 0; else return 1; }
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 全部课后习题答案
![C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 全部课后习题答案](https://img.taocdn.com/s3/m/b820218d6529647d27285236.png)
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语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案
![C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案](https://img.taocdn.com/s3/m/f6b3b45be45c3b3567ec8be8.png)
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);
18
2-4 编写程序,求华氏温度 150° F 对应的摄氏温度(计算公式同例 2-3)。 解答: #include <stdio.h> int main(void) { int celsius, fahr; fahr = 150; celsius = 5 * (fahr – 32) / 9; printf("fahr = %d, celsius = %d\n", fahr, celsius); return 0; } 2-5 算 术 表 达 式 5*(fahr-32)/9 能 改 写 成 5(fahr-32)/9 吗 ? 为 什 么 ? 如 果 将 其 改 写 为 5/9*(fahr-32),会影响运算结果吗? 解答: 5(fahr-32)/9 不是合法的 C 表达式,因为不能省略运算符*;5/9*(fahr-32)的值为 0。 2-6 一个物体从 100 米的高空自由落下,编写程序,求它在前 3 秒内下落的垂直距离。设重 力加速度为 10m/s2。 解答: #include <stdio.h> int main(void) { double height; height = 0.5 * 10 * 3 * 3; printf("height = %.2f\n", height); return 0; } 2-7 输入提示和输入语句的顺序应该如何安排?例 2-5 中, scanf("%d%d%lf", &money, &year, &rate) 能 改 写 为 scanf("%d%lf%d", &money, &year, &rate) 吗 ? 为 什 么 ? 能 改 写 为 scanf("%d%lf%d", &money, &rate, &year) 吗?如果可以,其对应的输入数据是什么? 解答: 输入提示在前,输入语句在后。 不能改写为 scanf("%d%lf%d", &money, &year, &rate),因为%lf 与整型变量 money 不匹 配,%d 与浮点型变量 rate 不匹配。 与 scanf("%d%lf%d", &money, &rate, &year)对应的输入数据为:1000 0.025 3 2-8 编写程序,输入华氏温度,输出对应的摄氏温度,计算公式同例 2-3。 解答: #include <stdio.h> int main(void) { int celsius, fahr;
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题7 课后答案
![C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题7 课后答案](https://img.taocdn.com/s3/m/5df1738aa0116c175f0e4836.png)
6. /*输入 3 个数 a b c, 然后输入 0 或 1:若输入 0,这三个数按降序输出;若输入 1,这三个数按升序输出 */ #include<stdio.h> void main() {
double a,b,c, *p1=&a,*p2=&b,*p3=&c,*pt; int choice;
//输入 a b c printf(“Input a b c:”); scanf(“%lf%lf%lf”,&a,&b,&c); //输入选择 0 或 1 printf(“Input 0 or 1:”); scanf(“%d”,&choice);
//使 p1 指向 a,b,c 中的最大者
//此时,p2,p3 指向三个数中的次大或最小者,下面调整这两个指针,使 p2 指向次大者,p3 指向最小者
if( *p2<*p3) { pt=p2; p2=p3; p3=pt;}
}
//1:a b c 按升序输出,即让 p1 指向最小者,p2 指向次小者;p3 指向最大者
3. /*内存变化图”。*/
c1 ‘A’ char *p=&ch1, *q=&ch2;
p
c2 ‘B’ q
temp=*p; *p=*q; *q=temp;
temp ‘A’ c1 ‘B’ c2 ‘A’
p
q
4. /*找错误 */
double *p,*q;
p=3;
--error!应当改为 p=(int*)
//0:a b c 按降序输出,即让 p1 指向最大者,p2 指向次大者;p3 指向最小者
if( choice==0){
if( *p1<*p2 ) { pt=p1; p1=p2; p2=pt;}
【免费下载】C语言程序设计何钦铭课后习题作业
![【免费下载】C语言程序设计何钦铭课后习题作业](https://img.taocdn.com/s3/m/2c9cc0f57f1922791688e8b1.png)
输出 n “不是素数”
第二章作业
1.编写程序,输入两个整数 num 和 num2,计算并输出她们的和、差、积、商。 答:程序: #include<stdio.h> void main() {
int num1,num2,y1,y2,y3,y5; double y4; printf("请输入两个数:num1,num2\n"); scanf("%d%d",&num1,&num2);
第一章习题
1、对 C 语言来说,下列标示符中哪些是合法的,哪些是不合法的? Total, _debug, Large&Tall, Counter1, begin_ 答:合法的:_debug、Counter1、begin_。 不合法的:Total、Large&Tall。
2、改写 1.4 节中的流程图 1.2,求 1—100 中能被 6 整除的所有整数的和。 Sum=0,i=1
I<=100
sum=sum+i
真
I 能被 6
整除?
i=i+1
打印 sum
3、改写 1.4 节中的程序,求 1—100 中能被 6 整除的所有整数的和,并在编程环境中验证 该程序的运行结果。
答:程序为: #include<stdio.h> int main(void) {
假
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
C语言程序的设计何钦铭
![C语言程序的设计何钦铭](https://img.taocdn.com/s3/m/61acefd676c66137ef06193d.png)
第3章分支结构【练习3-1】例3-4中使用else-if 语句求解多分段函数,为了检查else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。
解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。
可再给出x=0和x=15时的两种情况。
【练习3-2】计算符号函数的值:输入一个整数x ,计算并输出下列分段函数sign(x)的值。
-1 x<0 ry=sig n( x)= 0 x=01 x>0 I解答:#i nclude <stdio.h>int main(v oid){int x, y;prin tf("E nter x:");sca nf("%d", &x); if(x>0) y=1;else if (x==0) y=0;else y=-1;printf("sign( %d ) = %d\n",x,y);return 0;}【练习3-3】统计学生平均成绩与及格人数:输入一个正整数n,再输入n个学生的成绩,计算平均成绩,并统计所有及格学生的人数。
试编写相应程序。
解答:# in elude <stdio.h>int main(v oid){int coun t, i, n;double grade, total;printf("Enter n:"); sca nf("%d", &n); total = 0;count = 0;for(i = 1; i <= n; i++){ printf("Enter grade #%d: ", i);scanf ("%lf", &grade);total = total + grade; if(grade >= 60) count++;} printf("Grade average = %.2f\n", total / n); printf("Number of pass= %d\n", count);return 0;}【练习3-4 】统计字符:输入10 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
C语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社
![C语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社](https://img.taocdn.com/s3/m/adad61394a7302768e99398a.png)
习题参考答案 习题一 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语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题4 课后答案
![C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题4 课后答案](https://img.taocdn.com/s3/m/c21c2716f18583d049645936.png)
11. /* 用一张一元票换 1 分、2 分和 5 分硬币(至少各 1 枚) ,问有几种换法?各几枚?*/ #include<stdio.h> void main() { int x, y, z, count=0;
//x:1 分币 y:2 分币 z:5 分币
for (x=1; x<=100; x++ ) for (y=1; y<=100/2; y++ ) for (z=1; z<=100/5; z++ ) if( x+2*y+5*z==100){ count++; printf(“1: %3d, 2: %3d, 5:%3d \n”,x,y,z); } printf(“count=%d \n”, count); } 12. /*输出 1~10000 之间所有满足各位数字的立方和与它本身相等的数。如 153=1*1*1+5*5*5+3*3*3 . */ 算法分析:1. 函数分工:主函数 main()负责输入 m 和 n,用循环 for(i=m; i<=n; i++)…输出其中的数字立方和 等于本身的整数,为了判断整数 i 是否是满足该条件,需调用 is(i),; 函数 is(number)负责对 number 分解各个数 位上的数字,并求出这些数字的立方和 源程序: #include<stdio.h> int is(int number); void main() { int i, temp; for( i=1; i<=10000; i++) //输出 m~n 之间的数字立方和等于它本身的整数 printf("%6d", i ); if ( is(i) ) } //定义函数 is(number),判断整数 number 的数字立方和是否等于它本身,是则返回 1,不是则返回 0 int is(int number) { int sum=0,p, k ; p=number; //保存 number 的原值 //从低位到高位,逐个析解 number 各位上的数字,并求立方和 sum while (number!=0){ // 循环条件也可写为 number k= number%10; //k 是当前最低位上的数字 sum +=k*k*k; //累加立方和 number /=10; //调整 number,去掉最低位 } return (sum==p); //返回关系表达式 sum==p 的值,两者相等,返回 1, 不等则返回 0 }
《C语言程序设计》第4版何钦铭、颜晖主编课后习题答案
![《C语言程序设计》第4版何钦铭、颜晖主编课后习题答案](https://img.taocdn.com/s3/m/1dbec10754270722192e453610661ed9ad51559a.png)
《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语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第四章 课后答案](https://img.taocdn.com/s3/m/0c814667fe4733687e21aac2.png)
#include <stdio.h>#include <math.h>void main(){double eps,s,item,flag,denominator;s=0;item=1;flag=1;denominator=1;printf("Enter eps: ");scanf("%lf",&eps);while(fabs(item)>=eps){item=flag/denominator;s=s+item;flag=-flag;denominator=denominator+3;}printf("s=%lf\n",s);}练习4-4#include <stdio.h>void main(){int num,n;float score,total=0;num=0;n=0;printf("Please input score # 1 :");scanf("%f",&score);while(score>=0){if(score<60)num++;total=total+score;n++;printf("Please input score #%d(0~100): ",n+1);scanf("%f",&score);}printf("The average score is %.2f.\n",total/n);printf("The numbers between 0 and 59 is %d.\n",num); }#include <stdio.h>void main(){int i,j,n,num;printf("Enter n : ");scanf("%d",&n);for(i=1;i<=n;i++){printf("Please input an integer : ");scanf("%d",&num);for(j=2;j<=num-1;j++)if(i%j==0)break;if(j>num-1 && num!=1)printf("%d is a prime.\n",num);else printf("%d is not a prime.\n",num);}}练习4-8#include <stdio.h>void main(){int i,j,n;double e,product;e=1;printf("Enter n : ");scanf("%d",&n);for(i=1;i<=n;i++){product=1;for(j=1;j<=i;j++)product=product*j;e=e+1/product;}printf("e=%.2lf\n",e);}练习4-11#include <stdio.h>void main(){int i,n,min,num;printf("Enter n : ");scanf("%d",&n);for(i=1;i<=n;i++){printf("Enter an integer : ");scanf("%d",&num);if(i==1)min=num;else if(num<min)min=num;}printf("The Min number is %d.\n",min); }练习4-12#include <stdio.h>void main(){int num1,num2=0,flag=1;printf("Enter an integer : ");scanf("%d",&num1);if(num1<0){flag=-1;num1=-num1;}while(num1!=0){num2=num2*10+num1%10;num1=num1/10;}num2=flag*num2;printf("The new number is %d.\n",num2); }练习4-13#include <stdio.h>void main(){int i,j,count=0;for(i=100;i<=200;i++){for(j=2;j<=i-1;j++)if(i%j==0)break;if(j>i-1){count++;if(count%8==0)printf("%8d\n",i);else printf("%8d",i);}}printf("\n");}练习4-14#include <stdio.h>void main(){int i,f1=1,f2=1,f;printf("%8d\n",f1);printf("%8d\n",f2); /*输出前两项*/for(i=3;i<=20;i++){f=f2;f2=f1+f2;f1=f;printf("%8d\n",f2);}printf("\n");}习题4-1#include <stdio.h>void main(){int num=1,sum=0;while(num>0){printf("Enter an integer :");scanf("%d",&num);if(num<=0)break;if(num%2==0)sum=sum+num;}printf("The sum is %d.\n",sum); }习题4-2#include <stdio.h>#include <math.h>double fact(int n);void main(){int i=1;double x,item,s=0;printf("Enter x :");scanf("%lf",&x);item=x;while(fabs(item)>=0.00001){s=s+item;i++;item=pow(x,i)/fact(i);}printf("The sum is %lf.\n",s);}double fact(int n){int i;double product=1;for(i=1;i<=n;i++)product=product*i;return product;}习题4-3#include <stdio.h>void main(){int num,sum=0,count=0;printf("Enter an integer :");scanf("%d",&num);if(num<0)num=-num;while(num>0){sum=sum+num%10;num=num/10;count++;}printf("The sum is %d.\n",sum);printf("The count is %d.\n",count);}习题4-4#include <stdio.h>void main(){int i,n;double a,b,x,sum;a=2;b=1;sum=0; /*a为分子,b为分母*/ printf("Enter an integer : "); /*输入项数*/scanf("%d",&n);for(i=1;i<=n;i++) /*求前n项之和*/{sum=sum+a/b;x=a+b;b=a;a=x;}printf("The sum is %lf.\n",sum); /*输出和*/}习题4-5#include <stdio.h>void main(){int i,j,a,n;double item,sum; /*item为项变量,sum为累加和变量*/sum=0;printf("Enter two integers a and n : ");scanf("%d%d",&a,&n);for(i=1;i<=n;i++) /*求前n项之和*/{item=0;for(j=1;j<=i;j++) /*求第i项*/item=item*10+a;sum=sum+item;}printf("The sum is %lf.\n",sum); /*输出和*/}习题4-6#include <stdio.h>void main(){int i,j,k,count; /*count为换法种数,i为1分的硬币数,j为2分的硬币数,k为5分的硬币数*/count=0;for(i=1;i<=100;i++)for(j=1;j<=50;j++)for(k=1;k<=20;k++)if(i+2*j+5*k==100){printf("1分=%d, 2分=%d, 5分=%d\n",i,j,k);count++;}printf("换法种数=%d\n",count);}习题4-7#include <stdio.h>void main(){int i,m,digit,sum; /*sum为各位数字的立方和变量*/for(i=1;i<=10000;i++){/*求整数i中各位数字的立方和*/m=i;sum=0;while(m!=0){digit=m%10;sum=sum+digit*digit*digit;m=m/10;}if(i==sum)printf("%d\n",i); /*输出满足条件的整数i*/}}习题4-8#include <stdio.h>int prime(int n);void main(){int m,i;for(m=6;m<=100;m=m+2)for(i=2;i<=m-1;i++)if(prime(i) && prime(m-i)){printf("%d=%d+%d\n",m,i,m-i);break;}}int prime(int n) /*判定n是否素数的函数,返回1表示素数,返回0表示非素数*/{int i,flag;flag=1; /*初值为1*/for(i=2;i<=n-1;i++)if(n%i==0){flag=0;break;} /*置flag为0,表示非素数*/ return flag;}习题4-9#include <stdio.h>void main(){long int m,n,pow,digit; /*m为长整数变量,pow为m的幂*/printf("Enter a long integer :"); /*输入一个长整数m*/scanf("%ld",&m);/*求长整数m的幂,存放在pow变量中*/n=m;pow=1;while(n!=0){n=n/10;pow=pow*10;}pow=pow/10;/*从m的最高位开始,逐位输出各数位上的数字*/while(m!=0){digit=m/pow; /*求最高位数字*/m=m%pow;pow=pow/10; /*幂pow缩小10倍*/printf("%d ",digit);}printf("\n");}习题4-10#include <stdio.h>void main(){int i,m,n;printf("Enter an integer m :"); /*输入一个正整数m*/ scanf("%d",&m);n=m/2;printf("%d=1",m);for(i=2;i<=n;i++)while(m%i==0){printf("*%d",i);m=m/i;}printf("\n");}习题4-11#include <stdio.h>void main(void){int m, n, j, k; /* j表示最小公倍数,k表示最大公约数*/printf("Input two integer m and n : ");scanf("%d%d",&m,&n);j = m;while(j % n != 0) /* 求最小公倍数,存放在j变量中*/j = j + m;k = (m * n) / j; /* 求最大公约数,存放在k变量中*/printf("最小公倍数是%d \n最大公约数是%d\n ", j, k);}习题4-12#include <stdio.h>void main(void){int i;double h,s; /* h为高度,s为总路程*/h=100;s=100; /* 赋初值*/for(i=1;i<10;i++) /* 循环9次,求出第10次落地的总路程*/{h=0.5*h;s=s+2*h;}h=0.5*h; /* 第10次反弹的高度*/printf("第10次落地的总路程是%lf, 第10次反弹的高度是%lf\n ", s, h); }习题4-13#include <stdio.h>void main(void){int i,j;for(i=1;i<=7;i++){if(i<=4) /* 输出图形的上4行*/{for(j=1;j<=20-2*i;j++)printf(" "); /* 输出行前的空格*/for(j=1;j<=2*i-1;j++)printf("* "); /* 输出一行中的* */ }else /* 输出图形的下3行*/{for(j=1;j<=12+2*(i-4);j++)printf(" "); /* 输出行前的空格*/for(j=1;j<=2*(8-i)-1;j++)printf("* "); /* 输出一行中的* */ }printf("\n"); /* 换行*/}}习题4-14#include <stdio.h>void main(void){int x1,x2,i;x2=1; /* 赋初值:第10天的桃子数*/for(i=1;i<=9;i++) /* 循环9次,求出第1天的桃子数*/{x1=2*(x2+1);x2=x1;}printf("total=%d\n",x2); /* 输出第1天的桃子数*/}。
C语言程序设计(高教版何钦铭主编)课后答案
![C语言程序设计(高教版何钦铭主编)课后答案](https://img.taocdn.com/s3/m/2bad33d15ebfc77da26925c52cc58bd63186930b.png)
前7章绝大部分都有。
水平有限(只学了3三个月),仅供参考。
/*计算2^i的前n项和*/#incl ude<s tdio.h>#i nclud e<mat h.h>int m ain(v oid){in t i,n;do ublesum;prin tf("E ntern:");sca nf("%d",&n);s um=0;for(i=1;i<=n;i++){su m=sum+pow(2,i);}print f("su m=%.0f\n",sum);ret urn 0;}/*输入若干个学生的成绩,计算平均分,并统计个等级成绩的个数。
成绩分为5个等级:分别为A(90~100)、B(80~89)、C(70~79)、D(60~69)、E(0~59)*/#in clude<stdi o.h>int m ain(v oid){in t gra de,A,B,C,D,E,n;dou ble t otal;pri ntf("Enter grad e:\n");s canf("%d",&grad e);A=B=C=D=E=0;t otal=0;n=0;while(grad e>=0){i f(gra de<=59)E++;el se if(grad e<=69)D++;els e if(grade<=79)C++;else if(g rade<=89)B++;elseA++;n++;tot al=to tal+g rade;sc anf("%d",&grade);}if(n==0){p rintf("gra de av erage=0\n");print f("A=0\nB=0\nC=0\nD=0\nE=0\n");}else{p rintf("gra de av erage=%.2f\n",t otal/n);prin tf("A=%d\n B=%d\nC=%d\nD=%d\nE=%d\n",A,B,C,D,E);}ret urn 0;}/*输入职工的月薪sala ry,输出应交的个人所得税ta x*/#inclu de<st dio.h>int main(void){int s alary;do ubletax;prin tf("E ntersalar y:");sca nf("%d",&s alary);i f(sal ary<=850)tax=0;elseif(sa lary<=1350)t ax=5.0*(sa lary-850)/100;else if(s alary<=2850)tax=10.0*(salar y-850)/100;el se if(sala ry<=5850)tax=15.0*(sal ary-850)/100;elsetax=20.0*(sal ary-850)/100;print f("ta x=%.2f\n",tax);ret urn 0;}/*计算1-2/3+3/5-4/7+5/9-6/11+…*/#i nclud e<std io.h>intmain(void){i nt i,n,fz,fm,fl ag; /*fz分子,fm分母,flag符号*/doubl e ite m,sum; /*item是第n项的值,sum存放计算结果*/print f("En ter n:");scan f("%d",&n);fz=fm=f lag=1;su m=0;for(i=1;i<=n;i++){ite m=1.0*flag*fz/f m;sum=s um+it em;fz++;f m=fm+2;flag=-flag;}prin tf("s um=%.2f\n",sum);re turn0;}/*输出21世纪所有的闰年。
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题5 课后答案
![C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题5 课后答案](https://img.taocdn.com/s3/m/58fb9f639b6648d7c1c74636.png)
printf("%d \n", result); }
n位 28. /*输入 2 个正整数 a 和 n, 求 a+aa+。 。 。+aa…a,要求定义并调用函数 fn(a,n),它的功能是返回由 n 位 a 组成 的整数 aa…a */ 算法分析:1. 函数分工:主函数 main()负责输入 a 和 n,循环调用 fn(),即 fn(a,1), fn(a,2),…fn(a,n),并求累加和, 输出累加和;函数 fn(a,n)负责计算并返回由 n 位 a 组成的整数 #include<stdio.h> int fn(int a, int n); void main() { int a, n, i, sum=0; //输入正整数 a 和 n do{ printf(" Input a (a>0):"); scanf("%d", &a); printf(" Input n (n>0):"); scanf("%d", &n); }while ( a<=0 || n<=0); //如果输入的 a、n 不都是正数,重新再输入,直到 a 和 n 均为正数为止 //求 a+aa+…+aa…a, 即 fn(a,1)+fn(a,2)+…+fn(a,n) for(i=1; i<=n; i++) sum= sum+ fn(a,i); printf("sum=%d \n", sum); } //定义函数 fn(a,n),求由 n 位 a 组成的整数 aa…a int fn(int a, int n) { int k, result=0; for(k=1;k<=n; k++) result= result*10+a; return result; }
C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第三章 课后答案
![C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第三章 课后答案](https://img.taocdn.com/s3/m/15e834b151e79b89680226c3.png)
total=total+score;
}
printf("The average score is %.2f.\n",total/n);
printf("The numbers of passing is %d.\n",num);
}
练习3-10
#include <stdio.h>
ch=getchar();
switch(ch){
case 'A':printf("The score is between 90--100.\n");break;
case 'B':printf("The score is between 80-- 89.\n");break;
case 'C':printf("The score is between 70-- 79.\n");break;
printf("The numbers of grade C(70~79) is %d.\n",numc);
printf("The numbers of grade D(60~69) is %d.\n",numd);
printf("The numbers of grade E(0~59) is %d.\n",nume);
else if(score<=100)numa++;
total=total+score;
}
printf("The average score is %.2f.\n",total/n);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章习题1、对C语言来说,下列标示符中哪些是合法的,哪些是不合法的Total, _debug, Large&Tall, Counter1, begin_答:合法的:_debug、Counter1、begin_。
不合法的:Total、Large&Tall。
2、改写节中的流程图,求1—100中能被6整除的所有整数的和。
3、改写节中的程序,求1—100中能被6整除的所有整数的和,并在编程环境中验证该程序的运行结果。
答:程序为:#include<>int main(void){int i,sum=0;for(i=1;i<=100;i++)if(i%6==0)sum=sum+i;printf("sum=%d\n",sum);return 0;}4、对于给定的整数n(n>1),请设计一个流程图判别n是否为一个素数(只能被1和自己整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构和循环结构。
第二章作业1.编写程序,输入两个整数num和num2,计算并输出她们的和、差、积、商。
答:程序:#include<>void main(){int num1,num2,y1,y2,y3,y5;double y4;printf("请输入两个数:num1,num2\n");scanf("%d%d",&num1,&num2);y1=num1+num2;y2=num1-num2;y3=num1*num2;y4=num1*num2;y5=num1%num2;printf("num1,num2和y1=%d\nnum1,num2差y2=%d\nnum1,num2积y3=%d\nnum1,num2商y4=%lf\nnum1,num2余y5=%d\n",y1,y2,y3,y4,y5);}2.为了倡导居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时以内的,电价为元/千瓦时;超出50千瓦时的用电量,电价上调元/千瓦时。
编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。
答:程序:#include<>void main()double x,y;printf("请输入月用电量:x\n");scanf("%lf",&x);if(x<=50){y=*x;printf("电费y=%lf\n",y);}else {y=*x;printf("应支付电费y=%lf\n",y);}}3.编写程序,输入实数x和正整数n,计算x n,,不允许调用pow()函数求幂。
答:程序:#include<>void main(){double x,power;int i,n;printf("请输入:x,n\n");scanf("%lf%d",&x,&n);power=;for(i=1;i<=n;i++)power=power*x;printf("power(x,n)=%lf\n",power);4.编写程序,输入两个正整数m和n,求∑(i2+1/i)(i从m到n。
)答:程序:#include<>void main(){int i,m,n;double sum;sum=0;printf("input:m,n\n");scanf("%d%d",&m,&n);for(i=m;i<=n;i++)sum=sum+(i*i+i);printf("sum=%lf\n",sum);}5.编写程序,输入一个正整数n,计算1-2/3+3/5-4/7+5/9-6/11+…的前n项之和。
答:程序:#include<>void main(){int i,n;double sum,item,flag;flag=1;sum=0;printf("input:n\n");scanf("%d",&n);for(i=1;i<=n;i++){item=(flag*i)/(2*i-1);flag=-flag;sum=sum+item; }printf("sum=%lf\n",sum);}6.某用户为购房办理商业贷款,选择了按月等额本息还款法,计算公式如下,在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款(money)取决于还款月数(month)。
客户打算在5—30年的范围内选择还清贷款的年限,想得到一张“还款年限—月还款额表”以供参考。
编写程序,输入贷款本金loan和月利率rate,输出“还款年限—月还款额表”,还款年限的范围是5—30年,输出时分别精确到年和元。
Money=loan*rate(1+rate)month/[(1+rate)month-1]答:程序:#include<>#include<>void main(){int lower,upper,month,year,loan;double money,rate;lower=5;upper=30;printf("请输入贷款本金:loan\n");scanf("%d",&loan);printf("请输入月利率:rate\n");scanf("%lf",&rate);printf("还款年限\t月还款额\n");for(year=lower;year<=upper;year++){month=year*12;money=(loan*rate*pow((1+rate),month))/(pow((1+rate),month)-1);printf("%d\t\t%lf\n",year,money);}}7.编写程序,输入一个正整数n,求∑2i(i从1到n),可调用pow()函数求幂。
答:程序:#include<>#include<>void main(){int i,n;double sum,item;sum=0;printf("input:n\n");scanf("%d",&n);for(i=0;i<=n;i++){item=pow(2,i);sum=sum+item;}printf("sum=%lf\n",sum);}8.编写程序,输入一个正整数n,求e=∑i!(i从0到n)。
要求定义和调用函数fact(n)计算n!,函数类型是double.答:程序:#include<>double fact(int n);void main(){int i,n;double sum;sum=0;printf("input:n\n");scanf("%d",&n);for(i=0;i<=n;i++){sum=sum+fact(i);}printf("sun=%lf\n",sum); }double fact(int n){int i;double product;product=;for(i=1;i<=n;i++){product=product*i;}return product;}第三章作业1.#include<>#include<>void main(){int a,b,c;double s,area,perimeter;printf("请输入三角形三条边:a,b,c\n");scanf("%d%d%d",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){perimeter=a+b+c;s=(a+b+c)/;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("三角形的周长perimeter=%.2lf\n三角形的面积area=%.2lf\n",perimeter,area);}}2、#include<>#include<>void main(){double salary,tax,rate;printf("请输入职工的月薪:salary\n");scanf("%lf",&salary);if(salary<=850) rate=0;else if(salary<=1350) rate=5;else if(salary<=2850) rate=10;else if(salary<=5850) rate=15;else rate=20;tax=rate*(salary-850)/100;printf("职工应缴个人所得税tax=%.2lf\n",tax);}3、#include<>void main(){double m,n,y;printf("请输入行驶里程(公里):m\n等待时间(分钟):n\n");scanf("%lf%lf",&m,&n);if((m+n/<=3) y=10;else if((m+n/<=10) y=2*(m+n/;else y=2*10+3*(m+n/;;printf("乘客应付车费y=%d\n",(int)((y*10+/);}4、#include<>void main(){int i,n,A,B,C,D,E;double score,total;printf("请输入一个数n:\n");scanf("%d",&n);total=0;A=0;B=0;C=0;D=0;E=0;for(i=1;i<=n;i++){printf("请输入第#%d个学生成绩:\n",i);scanf("%lf",&score);total=total+score;if(score>=90)A++;else if(score>=80)B++;else if(score>=70)C++;else if(score>=60)D++;elseE++;}printf("平均成绩=%lf\n",total/n);printf("等级成绩个数:\nA=%d\nB=%d\nC=%d\nD=%d\nE=%d\n",A,B,C,D,E); }5、#include<>void main(){int year;printf("21世纪所有的闰年:\n");for(year=2000;year<3000;year++)if(year%4==0&&year%100!=0||year%400==0)printf("%d\n",year);}第四章作业2、#include""#include""double fact(int n);void main(){int i,n;double x,s;printf("请输入一个实数x:\n");scanf("%lf",&x);s=0;i=1;while((pow(x,i)/fact(i))>={s=pow(x,i)*fact(i)+s;i++;}printf("s=%.2lf\n",s);}double fact(int n){int i;double result;result=1;for(i=1;i<=n;i++)result=result*i;return result;}3、#include""int main(void){int x,a,count,sum;printf("请输入一个整数x:\n");scanf("%d",&x);sum=0;count=0;if(x<0) x=-x;do{a=x%10;sum=sum+a;x=x/10;count++;}while(x!=0);printf("位数=%d\n",count);printf("各个位数之和为:%d\n",sum);return 0;}5、#include""void main(){int a,n,i=1,s=0,t=0;printf("请输入两个正整数a,n=:\n");scanf("%d%d",&a,&n);while(i<=n){t=t+a;s=s+t;a=a*10;++i;}printf("a+aa+aaa+…+aa…a=%d\n",s);}7、#include""void main(){int i,j,k,l,n;printf("1-10000之间的水仙花数有:\n");for(n=10;n<10000;n++){i=n/1000;j=n/100%10;k=n/10%10;l=n%10;if(i*1000+j*100+k*10+l==i*i*i+j*j*j+k*k*k+l*l*l){printf("%-5d",n);}}printf("\n");}9、#include""#include""void main(){int i,n,m,j,k;i=0;printf("请输入一个多位整数:\n");scanf("%d",&n);k=n;while(k!=0){i++;k=k/10;}k=n;m=pow(10,i-1);printf("逐位输出:%d",n/m%10);printf(",");for(j=m/10;j>0;j=j/10){n=k/j;printf("%d",n%10);if(j!=1)printf(",");}}11、#include""void main(){int p,r,n,m,temp;printf("请输入两个正整数:\n");scanf("%d%d",&n,&m);if(n<m){temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}printf("最大公约数为:%d\n",n);printf("最小公倍数为:%d\n",p/n); }13、#include""void main(){int i,j;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(" ");for(j=0;j<=2*i;j++)printf("*");printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(" ");for(j=0;j<=4-2*i;j++)printf("*");printf("\n");}}第五章1.#include<>#include <>long fac(int n,int a){long sum;if(n==1)sum=a;elsesum=(long)(pow(10,n-1)*a)+fac(n-1,a);return(sum);}main(){int a,n,i;long temp,sum=0;printf("请输入一个数a,n\n");scanf("%d%d",&a,&n);for(i=1;i<=n;i++){temp=fac(i,a);sum+=temp;}printf("它们的和是=%ld",sum);return 0;}2.#include<>int countdight(int number,int dight); int main(void){int number;printf("输入一个数:");scanf("%d",&number);countdight(number,2);return 0;}countdight(int number,int dight){int a,count;count=0;while(number!=0){a=number%10;number=number/10;if(a==dight)count++;}printf("%d\n",count);return count;}3.#include<>int fib(int n);int main(void){int m,n,num1;num1=1;printf("请输入两个正整数m和n(m>=1,n<=10000)\n");scanf("%d%d",&m,&n);if(num1>=m&&num1<=n)fib(n);return 0;}int fib(int n){int i,x1,x2,x,t;x1=1;x2=1;for(i=0;i<n;i++){x=x1+x2;printf("%5d",x);t=x;x1=x2;x2=t;}printf("\n");return x;}5.#include<>void is(int num);int main(void){int n,m,num1;num1=1;printf("输入两个数m和n(m>=1,n<=1000)\n");scanf("%d%d",&m,&n);if(num1>=m&&num1<=n)is(num1);return 0;}void is(int num){int i,j,k;for(num=1;num<1000;num++){i=num/100;j=num/10%10;k=num%10;if(i*100+j*10+k*1==i*i*i+j*j*j+k*k*k)printf("%5d",num);}printf("\n");}6.#include<>int reverse(int number);int main(void){int x;printf("请输入一个正整数:\n");scanf("%d",&x);reverse(x);return 0;}int reverse(int number){while(number!=0){printf("%d",number%10);number=number/10;}printf("\n");return number;}第七章作业1.#include<>void main(){int i,j=0,k=0,n,p,q,max,min;int a[10];printf("请输入n(1<n<10)的值: \n");scanf("%d",&n);printf("请输入%d个数: \n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);min=a[0];max=a[9];if(a[i]<min){min=a[i];k=i;}if(a[i]>max){max=a[i];j=i;}}p=a[9];a[9]=a[j];a[j]=p;q=a[0];a[0]=a[k];a[k]=q;for(i=0;i<n;i++){printf("%8d",a[i]);printf("\n");}4.#include<>int main(void){int m,n,i,j,sum;int a[6][6],x[80];printf("请输入m,n(1<=m,n<=6)的值: \n");scanf("%d%d",&m,&n);printf("请输入%d个数: \n",m*n);for(i=0;i<m;i++)for(j=0;i<n;j++)scanf("%d",&a[i][j]);for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}for(i=0;i<m;i++){sum=0;for(j=0;j<n;j++)sum=sum+a[i][j];x[i]=sum;}for(i=0;i<m;i++)printf("%d\n",x[i]);return 0;}5.#include<>void main(){int a[3][3],max,max1,max2,i,j,flag=1;printf("请输入9个数: \n");for(i=0;i<=2;i++)for(j=0;j<=2;j++)scanf("%d",&a[i][j]);for(i=0;i<=2;i++){max=a[i][0];for(j=0;j<=2;j++){if(a[i][j]>max){max=a[i][j];max1=j;}}for(max2=0;max2<=2;max2++){if(max>a[max1][max2]){flag=0;break;}}if(flag==1) printf("鞍点是 %d\n",a[max2][max1]);if(flag==0) printf("no number\n");flag=1;}}8.#include<>#include<>int main(void){int i,n;char s[80];printf("请输入n(n<80)的值: \n");scanf("%d",&n);printf("请输入%d个字符: \n",n);for(i=0;i<n;i++)scanf("%s",s);for(i=0;s[i]!='\0';i++){if(s[i]>='A'&&s[i]<='Z')s[i]=155-s[i];}for(i=0;s[i]!='\0';i++)putchar(s[i]);printf("\n");return 0;}#include<>#include<>int main(void){int i, n; char f,s[80];printf("Enter a string: "); /*输入字符串*/i = 0;while((s[i] = getchar( )) != '\n')i++;s[i] = '\0';n = 0;for(i = 0; s[i] != '\0'; i++){if(s[i] <= 7f&& s[i] >= 20)s[i]=s[i++];elsebreak;}for(i = 0; s[i] != '\0'; i++)putchar(s[i]);return 0;}第八章作业1.#include<>int main(void){char ch;int a[10];int i,j,temp;printf("请输入10个整数:\n");for(i=0;i<10;i++)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]){temp=a[i];a[i]=a[j];a[j]=temp;}}}for(i=0;i<10;i++){printf("%d\n",a[i]);}}else if(ch=='D'){for(i=0;i<9;i++){for(j=i+1;j<10;j++){if(a[i]<a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}}for(i=0;i<10;i++){printf("%d\n",a[i]);}}return 0;}5.#include<>#include<>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);}11.#include<>#include<>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';}}12.#include<>#include<>int main(void){int i,j,a,n,sum,avg;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++){scanf("%d",p+i);}sum=0;for(i=0;i<n;i++)sum=sum+*(p+i);avg=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",avg);printf("学生的最高成绩是:%d\n",*(p+n-1));printf("学生的最低成绩是:%d\n",*p);return 0;}第九章作业1.#include<>struct{int hour,minute,second;}time;int main(void){scanf("%d:%d:%d",,,;++;if==60){++;=0;if==60){++;=0;if==24)=0;}}printf("%d:%d:%d",,,;return 0;}2.struct s1{char c1,c2;int n;};struct s2{int n;struct s1 m;};int main(void){printf("\n\t%d\t%d\t%c\n",,,, return 0; }8.#include<>#define N 10struct person{char num[10];char name[20];double jbgz,jj,zc,sfgz;};struct person gz[N];int main(){ int i,index;printf("请输入%d名工人的基本信息:\n", N);for(i=0;i<N;i++){printf("请输入第%d名工人的基本信息:\n",i+1);scanf("%s%s%lf%lf%lf",gz[i].num,gz[i].name,&gz[i].jbgz,&gz[i].jj,&gz[i].zc) ;}printf("%d名工人的基本信息:\n",N);printf("编号\t姓名\t基本工资\t奖金\t支出\t实发工资\n");for(i=0;i<N;i++)printf("%s\t%s\t%.2lf\t\t%.2lf\t%.2lf\t%.2lf\n",gz[i].num,gz[i].name,gz[i]. jbgz,gz[i].jj,gz[i].zc,gz[i].sfgz=gz[i].jbgz+gz[i].jj-gz[i].zc);for(i=0;i<N;i++){if(gz[i].sfgz>gz[index].sfgz)index=i;}printf("实发工资最高的工人:\n姓名:%s\t实发工资:%.2lf\n",gz[index].name,gz[index].sfgz);return 0;}9.#include<>#define N 3struct book{char sm[30];double dj;};struct book xx[N];int main(){ int i,max,min;printf("请输入%d本书的基本信息:\n", N);for(i=0;i<N;i++){printf("请输入第%d本书的基本信息:\n",i+1);scanf("%s%lf",xx[i].sm,&xx[i].dj);}for(i=0;i<N;i++){if(xx[i].dj<xx[min].dj)min=i;}for(i=0;i<N;i++){max=0;if(xx[i].dj>xx[max].dj)max=i;}printf("定价最高的书:\n");printf("\t%s\t%.2lf\n",xx[max].sm,xx[max].dj);printf("定价最低的书:\n");printf("\t%s\t%.2lf\n",xx[min].sm,xx[min].dj);return 0;}第十章作业1.#include""int main(){int n;int fact(int n);printf("请输入一个3位数:n\n");scanf("%d",n);printf("%d",fact(n));return 0;}int fact(int n){int i,a,b,c,count=0;for(i=101;1<=n;i++){a=i%10;b=(i/10)%10;c=i%100;if(a==b||a==c||b==c)count++;}return count;}2.#include <>#include <>double fact(int n,double x); void main(){int n;double result,x;printf("请输入整数n及x:"); scanf("%d%lf",&n,&x);result=fact(n,x);printf("结果为:%.4f\n",result);}double fact(int n,double x){if(n==1)return x;elsereturn pow(-1,n-1)*pow(x,n)+fact(n-1,x); }3.# include ""int invert(long m){ printf("%ld", m%10);m = m/10;if (m>0)invert(m) ;}main(){long n;printf("Enter n: ");scanf("%ld", &n);invert(n);printf("\n");}。