收藏 分销(赏)

华农C语言教材习题答案.docx

上传人:w****g 文档编号:5877871 上传时间:2024-11-22 格式:DOCX 页数:13 大小:16.15KB
下载 相关 举报
华农C语言教材习题答案.docx_第1页
第1页 / 共13页
华农C语言教材习题答案.docx_第2页
第2页 / 共13页
点击查看更多>>
资源描述
注:答案仅供参考 分期还款: #include <stdio.h> #include <math.h> int main() { double d, p,r; scanf("%lf%lf%lf",&d,&p,&r); printf("%.1f", log10(p/(p-d*r))/log10(1+r)); return 0; } 计算分段函数函数值: #include <stdio.h> int main() { double x; scanf("%lf",&x); if(x<1) printf("%.2f", x); else if(x>=1 && x<10) printf("%.2f", 2*x-1); else printf("%.2f", 3*x-11); } 成绩等级评分: #include <stdio.h> #include <math.h> int main() { int score; scanf("%d", &score); if(score>100 || score<0) printf("error"); else if(score>=90) printf("A"); else if(score>=80) printf("B"); else if(score>=70) printf("C"); else if(score>=60) printf("D"); else printf("E"); return 0; } 20秒后时间: #include <stdio.h> #include <stdlib.h> int main() { int h,m,s; scanf("%d:%d:%d", &h,&m,&s); s=s+20; if(s>59) { s=s%60; m++; if(m>59) { m=m%60; h++; if(h>23) h=0; } } printf("%02d:%02d:%02d\n", h, m, s); return 0; } 分期还款(加强版): #include <stdio.h> #include <math.h> int main() { double d, p,r; scanf("%lf%lf%lf",&d,&p,&r); if(d==0) printf("0.0\n"); else if(d*(1+r)-p>d) printf("God\n"); else { printf("%.1f", log10(p/(p-d*r))/log10(1+r)); } return 0; } 字母分类统计: #include <stdio.h> #include <math.h> int main() { char ch; int nL=0, nN=0, nS=0, nO=0; while((ch=getchar())!='\n') { if(ch>='a'&&ch<='z'|| ch>='A'&&ch<='Z') nL++; else if (ch>='0'&&ch<='9') nN++; else if (ch==' ') nS++; else nO++; } printf("%d %d %d %d\n", nL, nN, nS, nO); return 0; } 计算数列和: #include<stdio.h> main() { int i,n; double a=2,b=1,s=0; scanf("%d",&n); for(i=1;i<=n;i++) { s=s+a/b; a=a+b; b=a-b; } printf("%.4f\n",s); } 自由落体: #include <stdio.h> #include <math.h> int main() { double sum=-100, d=100; int i,n; scanf("%d", &n); for(i=1; i<=n; i++) { sum+=2*d; d/=2; } printf("%.3f %.3f", sum, d); return 0; } 迭代法求平方根: #include <stdio.h> #include <math.h> int main() { double a, x0, x1=1; scanf("%lf", &a); do { x0=x1; x1=1.0/2*(x1+a/x1); }while(fabs(x1-x0)>=1e-5); printf("%.4lf\n", x1); return 0; } 打印三角形: #include <stdio.h> #define abs(x) ((x)>=0?(x):-(x)) int main() { int n,i,j; scanf("%d", &n); for(i=-(n-1); i<=(n-1); i++) { for(j=0; j<abs(i); j++) printf(" "); for(j=0; j<n-abs(i); j++) printf("*"); printf("\n"); } return 0; } 勾股数: #include <stdio.h> #include <math.h> int main() { int i,j,k,n; scanf("%d", &n); for(i=1; i<=n; i++) for(j=i; j<=n; j++) { k=(int)sqrt(i*i+j*j); if(k*k==i*i+j*j && k<=n) printf("%d %d %d\n", i,j,k); } return 0; } 插入数据: int n,i; scanf("%d", &n); for(i=14; i>=0; i--) if(a[i]>n) a[i+1]=a[i]; else break; a[i+1]=n; 输出不同的数: #include"stdio.h" main() { int a[20]; int i,t,p=0; for(i=0;i<10;i++) { scanf("%d",&a[i]); for(t=0;t<i;t++) if(a[t]==a[i])break; if(t==i) printf("%d\n", a[i]); } } 鞍点: #include <stdio.h> #include <stdlib.h> int main() { int i,j,a[3][4],flag=0,col,r; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) { col=0; for(j=1;j<4;j++) if(a[i][j]>a[i][col]) col=j; for(j=0;j<4;j++) { if(a[i][j]==a[i][col]) { for(r=0;r<3;r++) if(a[r][j]<a[i][j]) break; if(r==3) { printf("%d\n", a[i][j]); flag=1; } } } } if(!flag) printf("NO\n"); return 0; } 回文串: #include "stdio.h" #include "string.h" main() { int i, j; char buf[100]; scanf("%s",buf); for(i=0, j=strlen(buf)-1;i<j; i++, j--) if(buf[i]!=buf[j]) break; if(i>=j) printf("Y"); else printf("N"); } ASCII码值之和的差: #include <stdio.h> int sum(char *s) { int t=0,i=0; while(s[i]!='\0') t+=s[i++]; return t; } int main() { char s1[81],s2[82]; gets(s1); gets(s2); printf("%d", sum(s1)-sum(s2)); return 0; } 所有数字之和: #include "stdio.h" int sum(int n) { int ret=0; while(n>0) { ret+=n%10; n/=10; } return ret; } main() { int n; scanf("%d", &n); printf("%d", sum(n)); } 元音字母: #include "stdio.h" void yuan(char *s,char *s2) { while(*s!='\0') { if(*s=='a' ||*s=='o' ||*s=='e' ||*s=='i' ||*s=='u' || *s=='A' ||*s=='O' ||*s=='E' ||*s=='I' ||*s=='U') {*s2=*s; s2++;} s++; } *s2='\0'; } main() { char str[81], str2[81]; gets(str); yuan(str,str2); printf("%s", str2); } 字符统计: #include <stdio.h> #include <string.h> #include <math.h> int nL=0, nN=0; int statistics(char *s) { int ret=0; while(*s!='\0') { if(*s>='a'&&*s<='z'|| *s>='A'&&*s<='Z') nL++; else if (*s>='0'&&*s<='9') nN++; else if (*s==' ') ret++; s++; } return ret; } int main() { char s[81]; int nS; gets(s); nS = statistics(s); printf("%d %d %d\n", nL, nN, nS); return 0; } 选择排序: #include <stdio.h> int sort(int a[], int n) { int i,j,k,tmp; for(i=0;i<n-1; i++) { k=i; for(j=i+1; j<n; j++) if(a[k]>a[j]) k=j; tmp=a[k];a[k]=a[i];a[i]=tmp; } } int main() { int a[10]; int i; for(i=0; i<10; i++) scanf("%d", &a[i]); sort(a,10); for(i=0; i<10; i++) printf("%d\n", a[i]); return 0; } x的n次方: #include <stdio.h> int F(int x, int n) { if(n==1) return x; else return F(x, n-1)*x; } int main() { int x, n; scanf("%d%d", &x, &n); printf("%d", F(x, n)); return 0; } 行列互换: #include <stdio.h> void swap(int *a, int *b) { int temp; temp=*a;*a=*b;*b=temp; } void col(int a[][4], int i, int j) { int k; for(k=0; k<4; k++) swap(&a[k][i], &a[k][j]); } void row(int a[][4], int i, int j) { int k; for(k=0; k<4; k++) swap(&a[i][k], &a[j][k]); } int main() { int a[4][4]; int i,j; for(i=0; i<4; i++) for(j=0; j<4; j++) scanf("%d", &a[i][j]); col(a,0,2); row(a,0,2); col(a,1,3); row(a,1,3); col(a,0,3); row(a,0,3); for(i=0; i<4; i++) { for(j=0; j<4; j++) printf("%d ", a[i][j]); printf("\n"); } return 0; } 学生信息统计: #include <stdio.h> void average(double a[][5], int n) { int i,j;double sum; for(i=0; i<n; i++) { sum=0; for(j=0; j<5; j++) sum+=a[i][j]; printf("%.2f ", sum/5); } printf("\n");} void average2(double a[][5], int n) { int i,j;double sum; for(j=0; j<5; j++) { sum=0; for(i=0; i<n; i++) sum+=a[i][j]; printf("%.2f ", sum/n); } printf("\n");} void top(double a[][5], int n) { int i,j; double max; for(j=0; j<5; j++) { max=a[0][j]; for(i=1; i<n; i++) if(a[i][j]>max) max = a[i][j]; printf("%.2f ", max); } printf("\n");} int main() { double a[10][5]; int i, j; for(i=0; i<10; i++) for(j=0; j<5; j++) scanf("%lf", &a[i][j]); average(a,10); average2(a,10); top(a,10); return 0; } 一年的第几天: #include <stdio.h> struct DATE { int year; int month; int day; }; int days(struct DATE date) { int day,sum; if(date.year%4==0&&date.year%100!=0||date.year%400==0) { day=29; } else { day=28; }; switch(date.month) { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=31+day;break; case 4:sum=62+day;break; case 5:sum=92+day;break; case 6:sum=123+day;break; case 7:sum=153+day;break; case 8:sum=184+day;break; case 9:sum=215+day;break; case 10:sum=245+day;break; case 11:sum=276+day;break; case 12:sum=306+day;break; }; return(sum+date.day); } int main() { struct DATE d; scanf("%d-%d-%d", &d.year, &d.month, &d.day); printf("%d", days(d)); }学生成绩表: #include <stdio.h> struct data { int num; char name[20]; double score[3]; double average;}; int main() { int i,j; struct data stu[10],tmp; for(i=0; i<10; i++) { scanf("%d%s%lf%lf%lf", &stu[i].num, stu[i].name, stu[i].score, stu[i].score+1, stu[i].score+2); stu[i].average=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; } for(i=0; i<9; i++) for(j=0; j<9-i; j++) { if(stu[j].average<stu[j+1].average) { tmp=stu[j];stu[j]=stu[j+1];stu[j+1]=tmp; } } for(i=0; i<10; i++) { printf("%d %s %.0lf %.0lf %.0lf\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]); } return 0; } 13 / 13
展开阅读全文

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


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服