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

合集下载

C语言程序设计第3版何钦铭-颜-晖--循环结构

C语言程序设计第3版何钦铭-颜-晖--循环结构

第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?解答:如果对item赋初值0,则程序运行结果是pi=0,因为item为0时不满足while 循环的执行条件,即不执行循环,故 pi 值为 0。

如果将精度改为 10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得while循环次数减少,必然影响到n的值。

【练习 4-2】运行例 4-2程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。

如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则while循环条件不成立,不执行循环体。

【练习4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数eps, 计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps (保留6位小数)。

试编写相应程序。

解答:#include <stdio.h>#include <math.h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1.0;s = 0;while(fabs (item) >= eps) {item = flag * 1.0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习4-4】如果将例4-3程序中的do-while语句改为下列while语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10; count ++;}解答:会有影响,因为当输入数据 number 为 0时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。

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语言程序设计实验指导(颜晖_主编)高等教育出版社

C语言程序设计实验指导(颜晖_主编)高等教育出版社

C语言程序设计部分实验参考答案实验2#include<stdio.h>int main(){//2-1-2int c,f=150;c=f*5/9-32*5/9;printf("fahr=%d, celsius=%d\n",f, c);return 0;}#include<stdio.h>int main(){//2-1-3int c=26,f;f=c*9/5+32;printf("celsius=%d, fahr=%d\n",c, f);return 0;}#include<stdio.h>int main(){//2-1-4int math=87,eng=72,comp=93;printf("math=%d, eng=%d, comp=%d, average=%d\n",math, eng, comp, (math+eng+comp)/3);return 0;}#include<stdio.h>int main(){//2-1/5int n=152,a,b,c;c=n%10;b=(n/10)%10;a=n/100;printf("整数%d 的个位数字是%d, 十位数字是%d, 百位数字是%d\n",n, c, b, a);return 0;}#include<stdio.h>int main(){//2-1-6int x=3,y;y=x*x;printf("%d=%d*%d\n",y,x,x);printf("%d*%d=%d\n",x,x,y);return 0;}#include<stdio.h>int main(){//2-2-1double x, y;printf("Enter x:");scanf_s("%lf",&x);if(x!=0){y=1/x;}else{y=0;}printf("f(%.2f)=%.1f\n",x,y);return 0;}#include<stdio.h>int main(){//2-2-2int celsius, fahr;fahr=100;celsius=5*(fahr-32)/9;printf("fahr=%d, celsius=%d\n",fahr,celsius);return 0;}#include<stdio.h>int main(){//2-2-3double money, rate,x=1.0;int i,year;printf("Enter money, year and rate:");scanf("%lf %d %lf",&money,&year,&rate);for(i=1;i<=year;i++)x=x*(1+rate);printf("intrest=%.2f\n",money*x-money);return 0;}#include<stdio.h>#include<math.h>int main(){//2-2-4double x, y;printf("Enter x");scanf_s("%lf",&x);if(x<0.0)y=pow(x+1,2)+2*x+1/x;elsey=sqrt(x);printf("f(%.2f)=%.2f\n",x,y);return 0;}#include<stdio.h>#include<math.h>int main(){//2-2-5double x, y;printf("Enter x:");scanf_s("%lf",&x);if(x==10)y=1/x;elsey=x;printf("f(%.2f)=%.1f\n",x,y);return 0;}#include<stdio.h>int main(){//2-2-6int x, y;printf("Enter num1:");scanf_s("%d",&x);printf("Enter num2:");scanf_s("%d",&y);printf("%d+%d=%d\n",x,y,x+y);printf("%d-%d=%d\n",x,y,x-y);printf("%d*%d=%d\n",x,y,x*y);printf("%d/%d=%d\n",x,y,x/y);printf("%d%%d=%d\n",x,y,x%y);return 0;}#include<stdio.h>int main(){//2-3-1int i,sum=0;for(i=1;i<=100;i++){sum=sum+i;}printf("sum=%d\n",sum);return 0;}#include<stdio.h>int main(){//2-3-2int i,m,s=0;printf("Enter m:");scanf("%d",&m);for(i=m;i<=100;i++)s=s+i;printf("sum=%d\n",s);return 0;}#include<stdio.h>int main(){//2-3-3int i,m,n;double s=0.0;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);for(i=m;i<=n;i++)s=s+1.0/i;printf("sum=%f\n",s);return 0;}#include<stdio.h>int main(){//2-3-4int i,n;double s=0.0;printf("Enter n:");scanf("%d",&n);for(i=1;i<=n;i++)s=s+1.0/(2*i-1);printf("sum=%f\n",s);return 0;}#include<stdio.h>int main(){//2-3-5int i,n;double s=1.0,t=1.0,sign=1.0;printf("Enter n:");scanf("%d",&n);for(i=1;i<n;i++){sign=-sign;t=(t+3);s=s+1/t*sign;}printf("sum=%.3f\n",s);return 0;}#include<stdio.h>int main(){//2-3-6int low, uper;double fahr,celsius;printf("Enter low:");scanf_s("%d",&low);printf("Enter uper:");scanf_s("%d",&uper);printf("fahr celsius\n");for(fahr=low;fahr<=uper;fahr+=2){celsius=5.0/9.0*(fahr-32.0);printf("%3.0f %6.1f\n",fahr,celsius);}return 0;}#include<stdio.h>int main(){//2-3-7int m, n, i;double p,sum=0.0;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);p=1.0;for(i=1;i<=m;i++)p=p*i;sum=sum+p;p=1.0;for(i=1;i<=n;i++)p=p*i;sum=sum+p;printf("sum=%.0f\n",sum);return 0;}#include<stdio.h>int main(){//2-3-8int x, n,i;double p=1.0;printf("Enter x:");scanf("%d",&x);printf("Enter n:");scanf("%d",&n);for(i=1;i<=n;i++)p=p*x;printf("%d的%d次方是%.0f\n",x, n,p);return 0;}#include<stdio.h>#include<math.h>int main(){//2-4-1int n,i;printf("Enter n:");scanf("%d",&n);for(i=0;i<=n;i++)printf("pow(3,%d)=%.0f\n",i,pow(3.0,i));return 0;}#include<stdio.h>#include<math.h>int main(){//2-4-4double sum=0.0,i;for(i=100;i<=1000;i++){sum+=sqrt(i);}printf("sum=%.2f\n",sum);return 0;}// return 0;}#include<stdio.h>#include<math.h>int main(){//2-2-5double x, y;printf("Enter x:");scanf_s("%lf",&x);if(x==10)y=1/x;elsey=x;printf("f(%.2f)=%.1f\n",x,y);return 0;}#include<stdio.h>int main(){//2-2-6int x, y;printf("Enter num1:");scanf_s("%d",&x);printf("Enter num2:");scanf_s("%d",&y);printf("%d+%d=%d\n",x,y,x+y);printf("%d-%d=%d\n",x,y,x-y);printf("%d*%d=%d\n",x,y,x*y);printf("%d/%d=%d\n",x,y,x/y);printf("%d%%d=%d\n",x,y,x%y);return 0;}#include<stdio.h>int main(){//2-3-1int i,sum=0;for(i=1;i<=100;i++){sum=sum+i;}printf("sum=%d\n",sum);return 0;}#include<stdio.h>int main(){//2-3-2int i,m,s=0;printf("Enter m:");scanf("%d",&m);for(i=m;i<=100;i++)s=s+i;printf("sum=%d\n",s);return 0;}#include<stdio.h>int main(){//2-3-3int i,m,n;double s=0.0;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);for(i=m;i<=n;i++)s=s+1.0/i;printf("sum=%f\n",s);return 0;}#include<stdio.h>int main(){//2-3-4int i,n;double s=0.0;printf("Enter n:");scanf("%d",&n);for(i=1;i<=n;i++)s=s+1.0/(2*i-1);printf("sum=%f\n",s);return 0;}#include<stdio.h>int main(){//2-3-5int i,n;double s=1.0,t=1.0,sign=1.0;printf("Enter n:");scanf("%d",&n);for(i=1;i<n;i++){sign=-sign;t=(t+3);s=s+1/t*sign;}printf("sum=%.3f\n",s);return 0;}#include<stdio.h>int main(){//2-3-6int low, uper;double fahr,celsius;printf("Enter low:");scanf_s("%d",&low);printf("Enter uper:");scanf_s("%d",&uper);printf("fahr celsius\n");for(fahr=low;fahr<=uper;fahr+=2){celsius=5.0/9.0*(fahr-32.0);printf("%3.0f %6.1f\n",fahr,celsius);}return 0;}#include<stdio.h>int main(){//2-3-7int m, n, i;double p,sum=0.0;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);p=1.0;for(i=1;i<=m;i++)p=p*i;sum=sum+p;p=1.0;for(i=1;i<=n;i++)p=p*i;sum=sum+p;printf("sum=%.0f\n",sum);return 0;}#include<stdio.h>int main(){//2-3-8int x, n,i;double p=1.0;printf("Enter x:");scanf("%d",&x);printf("Enter n:");scanf("%d",&n);for(i=1;i<=n;i++)p=p*x;printf("%d的%d次方是%.0f\n",x, n,p);return 0;}#include<stdio.h>#include<math.h>int main(){//2-4-1int n,i;printf("Enter n:");scanf("%d",&n);for(i=0;i<=n;i++)printf("pow(3,%d)=%.0f\n",i,pow(3.0,i));return 0;}#include<stdio.h>#include<math.h>int main(){//2-4-4double sum=0.0,i;for(i=100;i<=1000;i++){sum+=sqrt(i);}printf("sum=%.2f\n",sum);return 0;}实验3#include<stdio.h>#include<math.h>int main(){//3-1double a, b, c, d;printf("Enter a, b, c: ");scanf("%lf%lf%lf",&a,&b,&c);d=b*b-4*a*c;if(a==0)if(b==0)if(c==0)printf("系数均为,方程无意义!\n");elseprintf("a、b为,c不为,方程不成立!\n");elseprintf("x=%.2f\n",c/b);elseif(d>=0){printf("x1=%.2f\n",(-b+sqrt(d))/(2*a));printf("x1=%.2f\n",(-b-sqrt(d))/(2*a));}else{printf("x1=%.2f+%.2fi\n",-b/(2*a),sqrt(-d)/(2*a));printf("x1=%.2f-%.2fi\n",-b/(2*a),sqrt(-d)/(2*a));}return 0;}#include<stdio.h>int main(){//3-2int x,y;printf("Enter x: ");scanf("%d",&x);if(x<0)y=-1;else if(x==0)y=0;elsey=1;printf("sign(%d)=%d\n",x,y);return 0;}#include<stdio.h>int main(){//3-3int letter=0,blank=0,digit=0,other=0,i;char ch;printf("Input 10 characters: ");for(i=0;i<10;i++){ch=getchar();if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')letter++;else if(ch==' '||ch=='\n')blank++;else if(ch<='9'&&ch>='0')digit++;elseother++;}printf("letter=%d, blank=%d, digit=%d, other=%d\n",letter,blank,digit,other);return 0;}#include<stdio.h>int main(){//3-4char grade;printf("Input Grade: ");grade=getchar();switch(grade){case'A':;case'a':printf("%c对应的百分制成绩区间是~100\n",grade);break;case'B':;case'b':printf("%c对应的百分制成绩区间是~90\n",grade);break;case'C':;case'c':printf("%c对应的百分制成绩区间是~79\n",grade);break;case'D':;case'd':printf("%c对应的百分制成绩区间是~69\n",grade);break;case'E':;case'e':printf("%c对应的百分制成绩区间是~59\n",grade);break;default:printf("数据输入错误\n");}return 0;}#include<stdio.h>int main(){//3-5int choice,count;for(count=0;count<5;count++){printf("[1]apple\n");printf("[2]pear\n");printf("[3]orange\n");printf("[4]grape\n");printf("[0]exit\n");printf("Enter your choice:");scanf("%d",&choice);switch(choice){case 0: return 0;case 1:printf("price is %.2f\n",3.0);break;case 2:printf("price is %.2f\n",2.5);break;case 3:printf("price is %.2f\n",4.1);break;case 4:printf("price is %.2f\n",10.2);break;default:printf("price is %.2f\n",0.0);}}return 0;}#include<stdio.h>int main(){//3-6int i;double grade;for(i=0;i<5;i++){printf("Enter grade: ");scanf("%lf",&grade);if(grade<60.0)printf("Fail\n");elseprintf("Pass\n");}return 0;}#include<stdio.h>#include<math.h>int main(){//3-7double a,b,c,s;printf("Enter 3 sides of the triangle: ");scanf("%lf %lf %lf",&a,&b, &c);if(a+b>c&&a+c>b&&b+c>a){s=(a+b+c)/2;printf("area=%.2f; perimeter=%.2f\n",sqrt(s*(s-a)*(s-b)*(s-c)),a+b+c);}elseprintf("These sides do not correspond to a valid triangle\n");return 0;}#include<stdio.h>int main(){//3-8double salary,rate;printf("Enter the salary: ");scanf("%lf",&salary);if(salary<=850)rate=0.0;else if(salary<=1350.0)rate=0.05;else if(salary<=2850.0)rate=0.1;else if(salary<=5850.0)rate=0.15;elserate=0.2;printf("tax=%.2f\n",rate*(salary-850));return 0;}#include<stdio.h>int main(){//3-9int i,n,grade,a=0,b=0,c=0,d=0,e=0;printf("Enter n: ");scanf("%d",&n);for(i=0;i<n;i++){printf("Enter grade %d: ",i+1);scanf("%d",&grade);switch(grade/10){case 9:case 10:a++;break;case 8:b++;break;case 7:c++;break;case 6:d++;break;case 5:case 4:case 3:case 2:case 1:case 0:e++;break;}}printf("The number of A(90~100):%d\n",a);printf("The number of B(80~89):%d\n",b);printf("The number of C(70~79):%d\n",c);printf("The number of D(60~69):%d\n",d);printf("The number of E(0~59):%d\n",e);return 0;}#include<stdio.h>int main(){//3-10char sign;int x,y;printf("输入x运算符y:");scanf("%d%c%d",&x,&sign, &y);if(sign=='*')printf("%d * %d = %d\n",x,y,x*y);else if(sign=='/')printf("%d / %d = %d\n",x,y,x/y);else if(sign=='%')printf("%d Mod %d = %d\n",x,y,x%y);elseprintf("运算符输入错误!\n");return 0;}实验4#include<stdio.h>#include<cmath>int main(){//4-1-2int flag,denominator;double s,eps,item;printf("Input eps:");scanf("%lf",&eps);s=0.0;flag=1;denominator=1;item=1.0;while(fabs(item)>eps){item=flag*1.0/denominator;s=s+item;flag=-flag;denominator=denominator+3;}printf("s=%.6f\n",s);return 0;}#include<stdio.h>int main(){//4-1-3int x,sum;sum=0;printf("Input integers:");scanf("%d",&x);while(x>0){if(x%2!=0)sum=sum+x;scanf("%d",&x);}printf("The sum of the odd numbers is %d\n",sum);return 0;}#include<stdio.h>int main(){//4-1-4int num,count;printf("Input an integer:");scanf("%d",&num);count=0;do{num=num/10;count++;}while(num!=0);printf("count=%d\n",count);return 0;}#include<stdio.h>int main(){//4-1-5int n,x,min,i;printf("Input n:");scanf("%d",&n);printf("Input numbers:");scanf("%d",&x);min=x;for(i=1;i<n;i++){scanf("%d",&x);if(x<min)min=x;}printf("min=%d\n",min);return 0;}int main(){//4-1-6int n,s=0,c=0;printf("Input an integer:");scanf("%d",&n);do{s+=n%10;n/=10;c++;}while(n);printf("count=%d, sum=%d\n",c,s);return 0;}#include<stdio.h>int main(){//4-1-7double a,b,c,s=0.0;int i,n;printf("Input n:");scanf("%d",&n);for(a=1.0,b=1.0,i=0;i<n;i++,c=a+b,a=b,b=c) s+=(1.0+a/b);printf("s=%.2f\n",s);return 0;}#include<stdio.h> int main(){//4-1-8int a,n,i,s=0,t=0;printf("Input a, n:");scanf("%d%d",&a,&n);for(i=0;i<n;i++){t=10*t+a;s+=t;}printf("s=%d\n",s);return 0;}#include<stdio.h>int main(){//4-1-9int n,i;double h,sum=0.0;printf("Input height: ");scanf("%lf",&h);printf("Input n: ");scanf("%d",&n);sum+=h;for(i=1;i<=n;i++){sum+=h;h/=2.0;}printf("distance=%.1f\n",sum);printf("height=%.1f\n",h);return 0;}#include<stdio.h>#include<math.h>int main(){//4-2-2int m,n,i,j,st,c=0;printf("Input m: ");if(m==1)m++;printf("Input n: ");scanf("%d",&n);for(i=m;i<=n;i++){st=sqrt((double)i);for(j=2;j<=st;j++)if(!(i%j))break;if(j>st){printf("%d ",i);c++;if(!(c%6))printf("\n");}}return 0;}#include<stdio.h>int main(){//4-2-3int money,f1,f2,f5,count=0;printf("Input money: ");scanf("%d",&money);for(f1=1;f1<=money-7;f1++)for(f2=1;f2<=money-6;f2++)for(f5=1;f5<=money-3;f5++)if(f1+2*f2+5*f5==money)count++;printf("count=%d\n",count);for(f1=1;f1<=money-7;f1++)for(f2=1;f2<=money-6;f2++)for(f5=1;f5<=money-3;f5++)if(f1+2*f2+5*f5==money)printf("fen5: %d fen2: %d fen1: %d\n",f5,f2,f1);return 0;}#include<stdio.h>int main(){//4-2-4int m,n,k,a,b,c,tmp;printf("Input m: ");scanf("%d",&m);printf("Input n: ");for(k=m;k<=n;k++){tmp=k;a=tmp%10;tmp/=10;b=tmp%10;tmp/=10;c=tmp;if(a*a*a+b*b*b+c*c*c==k)printf("%d\t(%d*%d*%d+%d*%d*%d+%d*%d*%d=%d)\n",k,c,c,c,b,b,b,a,a,a,k);}return 0;}#include<stdio.h>int main(){//4-2-5int i,j,s;for(i=1;i<=200;i++){s=1;for(j=2;j<=i/2;j++)if(i%j==0)s=s+j;if(s==i){printf("%d=1",i);for(j=2;j<=i/2;j++)if(i%j==0)printf("+%d",j);printf("\n");}}return 0;}#include<stdio.h>//5-2int sign(int x){if(x>0)return 1;if(x==0)return 0;return -1;}int main(){int x;printf("Enter x:");scanf("%d",&x);printf("sign(%d)=%d\n",x,sign(x));return 0;}#include<stdio.h>//5-3int even(int x){return (x%2==0);}int main(){int x,s=0;printf("Input integers: ");scanf("%d",&x);while(x>0){if(!even(x))s+=x;scanf("%d",&x);}printf("The sum of the odd is %d\n",s);return 0;}#include<stdio.h>//5-4#include<math.h>double distance(double x1,double y1, double x2, double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}int main(){double x1, y1, x2, y2;printf("Input (x1, y1):");scanf("%lf%lf",&x1,&y1);printf("Input (x2, y2):");scanf("%lf%lf",&x2,&y2);printf("distance=%.2f\n",distance(x1,y1,x2, y2));return 0;}#include<stdio.h>//5-5#include<math.h>int prime(int m){int k,sqrtm=sqrt((double)m);for(k=2;k<=sqrtm;k++)if(m%k==0)return 0;return 1;}int main(){int m,n,c=0,s=0,k;printf("Input m:");scanf("%d",&m);printf("Input n:");scanf("%d",&n);for(k=(m==1?2:m);k<=n;k++)if(prime(k)){c++;s+=k;}printf("count=%d, sum=%d\n",c,s);return 0;}#include<stdio.h>//5-6int countdigit(int number, int digit){int c=0;if(number<0)number=-number;do{if(number%10==digit)c++;number/=10;}while(number);return c;}int main(){int n;printf("Enter an integer:");scanf("%d",&n);printf("Number of digit 2: %d\n",countdigit(n,2));return 0;}#include<stdio.h>//5-7int is(int n){int s=0,x,m=n;do{x=m%10;s+=x*x*x;m/=10;}while(m);if(s==n)return 1;return 0;}int main(){int m,n,i;printf("Input m:");scanf("%d",&m);printf("Input n:");scanf("%d",&n);for(i=m;i<=n;i++)if(is(i))printf("%d\n",i);return 0;}#include<stdio.h>//5-8double fact(int n);int main(void){int i;double sum=0.0;/*需要初始化为*/for(i=1;i<=10;i++)/*上界是*/sum=sum+fact(i);printf("1!+2!+...+10!=%f\n",sum);return 0;}double fact(int n){int i;double result=1.0;for(i=1;i<=n;i++)result=result*i;/*result中累积n!*/ return result;}实验7#include<stdio.h>int main(){//7-2-4int a[6][6],n,i,j,flag=1;printf("Input n:");scanf("%d",&n);printf("Input array:\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);for(j=0;j<n-1;j++){for(i=j+1;i<n;i++)if(a[i][j]){flag=0;break;}if(flag==0)break;}if(flag==0)printf("No\n");elseprintf("Yes\n");return 0;}#include<stdio.h>int main(){//7-2-6int a[6][6],n,i,j,row,col;printf("Input n:");scanf("%d",&n);printf("Input array:\n");for(i=0;i<n;i++)/*输入矩阵*/for(j=0;j<n;j++)scanf("%d",&a[i][j]);for(i=0;i<n;i++){/*对矩阵的每一行*/row=i;col=0;for(j=0;j<n;j++)/*找当前行的最大值元素a[row][col]*/if(a[i][j]>a[row][col]){col=j;}for(j=0;j<n;j++)/*检测a[row][col]是否为第col列的最小元素*/ if(a[j][col]<a[row][col])break;if(j>=n){//找到鞍点元素a[row][col]printf("a[%d][%d]=%d\n",row,col,a[row][col]);break;}}if(i>=n)/*所有行都检测过没有找到鞍点*/printf("NO\n");return 0;}#include<stdio.h>int main(){//7-3-2char c,s[80];int i,index=-1;printf("Input a character:");c=getchar();getchar();printf("Input a string:");gets(s);i=0;while(s[i]!='\0'){if(s[i]==c)index=i;i++;}if(index>-1)printf("index=%d\n",index);elseprintf("Not found\n");return 0;}#include<stdio.h>int main(){//7-3-3char s[80];int i,upcase=0,count=0;printf("Input a string:");gets(s);i=0;while(s[i]!='\0'){if(s[i]>='A'&&s[i]<='Z'){upcase++;switch(s[i]){case'A':case'E':case'I':case'O':case'U':count++;}}i++;}if(upcase)count=upcase-count;printf("count=%d\n",count);return 0;}#include<stdio.h>int main(){//7-3-4char s[80];int i;printf("Input a string:");gets(s);i=0;while(s[i]!='\0'){if(s[i]>='A'&&s[i]<='Z')s[i]='Z'-(s[i]-'A');i++;}printf("After replaced: %s\n",s);return 0;}#include<stdio.h>int main(){//7-3-5char s[80];int i,n=0;printf("Input a string:");gets(s);i=0;while(s[i]!='\0'){if(s[i]>='0'&&s[i]<='9'){n=n*16+s[i]-'0';i++;continue;}switch(s[i]){case'a':case'A':n=n*16+10;break;case'b':case'B':n=n*16+11;break;case'c':case'C':n=n*16+12;break;case'd':case'D':n=n*16+13;break;case'e':case'E':n=n*16+14;break;case'f':case'F':n=n*16+15;break;}i++;}printf("Hex=%d\n",n);return 0;}实验8#include<stdio.h>//8-1-1void move(int *, int, int);int main(){int m, n, i, a[80], *p;printf("Input n, m:");scanf("%d%d",&n, &m);for(p=a,i=0;i<n;i++)scanf("%d",p+i);/*将&p++换成p+i*/ move(a,n,m);printf("After moved:");for(i=0;i<n;i++)printf("%5d",a[i]);return 0;}void move(int *x,int n, int m){int i,j,k;for(i=0;i<m;i++){k=x[n-1];/*暂存x[n-1],因为它将被覆盖*/for(j=n-1;j>0;j--)x[j]=x[j-1];/*设置断点*/x[0]=k;}}#include<stdio.h>//8-1-2#include<stdlib.h>int search(int *, int, int);int main(){int *a,n,i,x,index;printf("Input n:");scanf("%d",&n);if((a=(int*)malloc(n*sizeof(int)))!=NULL) exit(1);printf("Input %d integers:",n);for(i=0;i<n;i++)scanf("%d",a+i);printf("Input x:");scanf("%d",&x);index=search(a,n,x);if(index==-1)printf("Not found\n");elseprintf("index=%d\n",index+1);free(a);return 0;}int search(int *a,int n,int x){int i;for(i=0;i<n;i++)if(a[i]==x)return i;return -1;}#include<stdio.h>//8-1-3#include<stdlib.h>void sort(int*,int);int main(){int i,n,*a;printf("Input n:");scanf("%d",&n);if((a=(int*)malloc(n*sizeof(int)))!=NULL) exit(1);printf("Input %d integers:",n);for(i=0;i<n;i++)scanf("%d",a+i);sort(a,n);printf("After sorted the array is:");for(i=0;i<n;i++)printf("%d ",a[i]);printf("\n");return 0;}int max(int *a,int n){int i,index=0;for(i=1;i<n;i++)if(a[i]>a[index])index=i;return index;}void swap(int *x,int *y){int t=*x;*x=*y;*y=t;}void sort(int *a,int n){int i,j;for(i=n;i>0;i--){j=max(a,i);swap(a+i-1,a+j);}}#include<stdio.h>//8-1-4#include<stdlib.h>int main(){int n,i,total,token,*a;printf("Input n:");scanf("%d",&n);if((a=(int*)malloc(n*sizeof(int)))==NULL) exit(1);for(i=0;i<n;i++)a[i]=i+1;total=n;i=0;while(total>1){token=0;/*报数的当前值*/while(token<3){/*未出队的依次报数*/if(a[i]!=0)token++;if(token<3)/*未满m继续报数*/i=(i+1)%n;}a[i]=0;/*报到的出队*/i=(i+1)%n;total--;/*队中人数减*/}for(i=0;i<n;i++)if(a[i]!=0)break;printf("Last No. is: %d\n",a[i]);free(a);return 0;}#include<stdio.h>//8-2-2#include<string.h>int main(){char s[80],m[80];int length,max=0,i;printf("Input 5 strings: ");for(i=0;i<5;i++){scanf("%s",s);length=strlen(s);if(length>max){max=length;strcpy(m,s);}}printf("The longest is: %s\n",m);return 0;}#include<stdio.h>//8-2-3#include<string.h>void delchar(char *s,char c){int i=0;while(*s!='\0'){if(*s==c)/*遇到字符c*/strcpy(s,s+1);/*将该字符后的部分拷贝成从当前位置开始的串*/ s++;}}int main(){char s[80],c;printf("Input a string: ");gets(s);printf("Input a char: ");scanf("%c",&c);delchar(s,c);printf("After deleted, the string is: %s\n",s);return 0;}#include<stdio.h>//8-2-4#include<string.h>void strmcpy(char *s, char *t, int m){strcpy(s,t+m-1);}int main(){char s[80],t[80];int m;printf("Input a string: ");gets(t);printf("Input a integer: ");scanf("%d",&m);strmcpy(s,t,m);printf("Output is: %s\n",s);return 0;}#include<stdio.h>//8-2-5#include<string.h>。

c语言程序设计 谭浩强版 何钦铭颜晖版习题答案全集

c语言程序设计 谭浩强版 何钦铭颜晖版习题答案全集

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

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

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=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语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题11 课后答案

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

//链表 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语言程序设计(何钦铭颜晖主编)》习题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语言程序设计实验与习题指导颜晖答案C语言程序设计实验与习题指导C语言作为一门广泛应用于软件开发、嵌入式系统和科学计算领域的编程语言,是计算机科学与技术专业学生的必修课程之一。

在学习C语言的过程中,实验与习题是非常重要的环节,通过实践与思考,学生能够更好地理解和掌握C语言的基本概念和编程技巧。

本文将对C语言程序设计实验与习题进行一些指导和答案解析,帮助学生更好地完成相关任务。

一、实验指导1. 实验一:Hello World程序Hello World程序是C语言程序设计的入门级实验,通过编写一个简单的程序,输出"Hello World"这个经典的字符串,学生可以初步了解C语言的基本语法和程序结构。

以下是一个示例代码:```c#include <stdio.h>int main() {printf("Hello World\n");return 0;}```在这个程序中,`#include <stdio.h>`是一个预处理指令,用来包含标准输入输出库的头文件。

`int main()`是程序的入口函数,`printf("Hello World\n");`用来输出字符串,`\n`表示换行。

`return 0;`表示程序正常结束。

2. 实验二:变量与运算实验二主要涉及变量的定义与使用,以及基本的算术运算。

以下是一个示例代码:```c#include <stdio.h>int main() {int a = 10;int b = 5;int sum = a + b;int product = a * b;float average = (float)(a + b) / 2;printf("The sum is %d\n", sum);printf("The product is %d\n", product);printf("The average is %.2f\n", average);return 0;}```在这个程序中,`int a = 10;`和`int b = 5;`分别定义了两个整型变量a和b,并赋予初始值。

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

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

//差几分钟
//差几秒
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语言程序设计实验与习题指导第2版参考答案

【免费下载】C语言程序设计实验与习题指导第2版参考答案

二、填空题
sum/n
index=-1 break
end-1
(aver-max-min)/6
top=min+1
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

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语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社

习题参考答案 习题一 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 课后答案

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版何钦铭、颜晖主编课后习题答案

《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语言程序设计(何欣铭、颜晖 第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"
22
int main(void) { int i, m, n; double fm, fn; scanf("%d%d", &m, &n); fm = 1; for(i = 1; i <= m; i++) fm = fm * i; fn = 1; for (i = 1; i <= n; i++) fn = fn * i; printf("%d! + %d! = %.0f\n", m, n, fm+fn); return 0; } 2-17 执行下列程序段后,sum 的值是 for (i = 1; i <= 10; i++){ sum = 0; sum = sum + i; } 解答:sum 的值是 10。 。

《c语言程序设计》实验指导书答案

《c语言程序设计》实验指导书答案

《c语言程序设计》实验指导书答案《C语言程序设计》实验指导书答案实验一:C语言环境搭建与基本语法1. 问题:如何在计算机上搭建C语言开发环境?答案:搭建C语言开发环境通常需要安装编译器和集成开发环境(IDE)。

常见的编译器有GCC,而IDE如Visual Studio Code、Code::Blocks等。

安装完成后,配置好编译器路径,即可开始编写和编译C语言程序。

2. 问题:C语言的基本数据类型有哪些?答案:C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)以及更复杂的结构体(struct)和联合体(union)等。

3. 问题:如何定义一个变量?答案:定义变量的基本语法是:`类型名变量名;`。

例如,定义一个整型变量a:`int a;`。

4. 问题:如何实现变量的输入和输出?答案:使用`scanf`函数进行输入,使用`printf`函数进行输出。

例如,输入一个整数并输出:`scanf("%d", &a); printf("%d", a);`。

实验二:控制结构1. 问题:C语言中的条件语句有哪些?答案:C语言中的条件语句主要有`if`语句和`switch`语句。

2. 问题:如何使用`if`语句?答案:`if`语句的基本语法是:`if (条件) { 语句 }`。

例如,判断一个数是否为正数:`if (a > 0) { printf("正数"); }`。

3. 问题:如何使用`switch`语句?答案:`switch`语句用于多条件分支选择。

基本语法是:`switch (表达式) { case 常量1: 语句1; break; case 常量2: 语句2; break; ... default: 默认语句; }`。

4. 问题:C语言中的循环语句有哪些?答案:C语言中的循环语句主要有`for`循环、`while`循环和`do-while`循环。

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

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

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

矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。

如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。

㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。

(2 列出开发利用方案编制所依据的主要基础性资料的名称。

如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。

对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。

二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。

2、国内近、远期的需求量及主要销向预测。

㈡产品价格分析
1、国内矿产品价格现状。

2、矿产品价格稳定性及变化趋势。

三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。

2、矿区矿产资源概况。

3、该设计与矿区总体开发的关系。

㈡该设计项目的资源概况
1、矿床地质及构造特征。

2、矿床开采技术条件及水文地质条件。

相关文档
最新文档