收藏 分销(赏)

C语言程序设计课后习题作业.doc

上传人:精**** 文档编号:9707285 上传时间:2025-04-04 格式:DOC 页数:27 大小:149KB 下载积分:10 金币
下载 相关 举报
C语言程序设计课后习题作业.doc_第1页
第1页 / 共27页
C语言程序设计课后习题作业.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
第一章习题 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 I能被6整除? sum=sum+i i=i+1 真 假 打印sum 3、改写1.4节中的程序,求1—100中能被6整除的所有整数的和,并在编程环境中验证该程序的运行结果。 答:程序为: #include<stdio.h> 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和自己整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构和循环结构。 开始 结束 输入n i=2 r=n/i的余数 r=0? i=i+1 i>=(n-1) 输出n “是素数” 输出n “不是素数” 假 真 真 假 开始 结束 输入n i=2 r=n/i的余数 r=0? i=i+1 i>=(n-1) 输出n “是素数” 输出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); y1=num1+num2; y2=num1-num2; y3=num1*num2; y4=num1*1.0/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千瓦时以内的,电价为0.53元/千瓦时;超出50千瓦时的用电量,电价上调0.05元/千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。 答:程序: #include<stdio.h> void main() { double x,y; printf("请输入月用电量:x\n"); scanf("%lf",&x); if(x<=50){ y=0.53*x; printf("电费y=%lf\n",y); } else { y=0.58*x; printf("应支付电费y=%lf\n",y); } } 3.编写程序,输入实数x和正整数n,计算xn,,不允许调用pow()函数求幂。 答:程序: #include<stdio.h> void main() { double x,power; int i,n; printf("请输入:x,n\n"); scanf("%lf%d",&x,&n); power=1.0; 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<stdio.h> 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+1.0/i); printf("sum=%lf\n",sum); } 5.编写程序,输入一个正整数n,计算1-2/3+3/5-4/7+5/9-6/11+…的前n项之和。 答:程序: #include<stdio.h> 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<stdio.h> #include<math.h> 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<stdio.h> #include<math.h> 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<stdio.h> 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=1.0; for(i=1;i<=n;i++){ product=product*i;} return product; } 第三章作业 1. #include<stdio.h> #include<math.h> 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)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("三角形的周长perimeter=%.2lf\n三角形的面积area=%.2lf\n",perimeter,area); } } 2、 #include<stdio.h> #include<math.h> 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<stdio.h> void main() { double m,n,y; printf("请输入行驶里程(公里):m\n等待时间(分钟):n\n"); scanf("%lf%lf",&m,&n); if((m+n/5.0)<=3) y=10; else if((m+n/5.0)<=10) y=2*(m+n/5.0); else y=2*10+3*(m+n/5.0-10);; printf("乘客应付车费y=%d\n",(int)((y*10+0.5)/10.0)); } 4、 #include<stdio.h> 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++; else E++; } printf("平均成绩=%lf\n",total/n); printf("等级成绩个数:\nA=%d\nB=%d\nC=%d\nD=%d\nE=%d\n",A,B,C,D,E); } 5、 #include<stdio.h> 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"stdio.h" #include"math.h" 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))>=0.00001){ s=pow(x,i)*1.0/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"stdio.h" 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"stdio.h" 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"stdio.h" 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"stdio.h" #include"math.h" 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"stdio.h" 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"stdio.h" 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<stdio.h> #include <math.h> long fac(int n,int a) { long sum; if(n==1) sum=a; else sum=(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<stdio.h> 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<stdio.h> 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<stdio.h> 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<stdio.h> 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<stdio.h> 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<stdio.h> 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<stdio.h> 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<stdio.h> #include<string.h> 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<stdio.h> #include<string.h> 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++]; else break; } for(i = 0; s[i] != '\0'; i++) putchar(s[i]); return 0; } 第八章作业 1. #include<stdio.h> 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<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); } 11. #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'; } else if((*(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<stdio.h> #include<stdlib.h> 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<stdio.h> struct{ int hour,minute,second; }time; int main(void) { scanf("%d:%d:%d",time.hour,time.minute,time.second); time.second++; if(time.second==60){ time.minute++; time.second=0; if(time.minute==60){ time.hour++; time.minute=0; if(time.hour==24) time.hour=0; } } printf("%d:%d:%d",time.hour,time.minute,time.second); 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",m.n,m.m,m.n,m.m.c1,m.m.c2); return 0; } 8. #include<stdio.h> #define N 10 struct 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); index=
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服