




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、01、编写一个求直角三角形的面积的函数。在main函数中从键盘输入直角三角形的两个直角边,然后调用该函数求该直角三角形的面积(精确到小数点后2位)。#includefloat s(int a,int b) float s; s=a*b/2.0; return s;main() int a,b; float area; float s(int a,int b); scanf(%d%d,&a,&b); area=s(a,b ) ; printf(%.2f,area);02.写一个函数,判断某一个四位数是不是玫瑰花数(所谓玫瑰花数即该四位数各位数字的四次方和恰好等于该数本身,如:1634=14+64
2、+34+44)。在主函数中从键盘任意输入一个四位数,调用该函数,判断该数是否为玫瑰花数,若是则输出“yes”,否则输出“no”。#includeint rose(int n)int a,b,c,d;a=n/1000;b=n/100%10;c=n/10%10;d=n%10;if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d=n)return 1;elsereturn 0;main()int m;int s;printf(nEnter m:);scanf(%d,&m);s=rose(m);if(s=1)printf(yes);elseprintf(no);03. 、编写一个求1n
3、内的偶数和的函数,在main()函数中输入n,然后调用该函数求1n的偶数和并输出。#includelong sum(int n)int i;long sum=0;for(i=1;i=n;i+) if(i%2=0) sum=sum+i;return sum;main()int n;long s;printf(nEnter n:);scanf(%d,&n);s=sum(n);printf(The s is %ld,s);04.将1-1000中所有21的倍数存到一个一维数组中,再按每行5个数据输出到屏幕上。要求将该程序以文件名test2.c保存到K盘根目录。#include main()int i,
4、j=0,a50;for (i=1;i=1000;i+) if (i%21=0) aj=i; printf(%5d,aj); if (j%5=4) printf(n); j+; 05. 编写程序,从键盘输入圆柱体的底面半径r和高h,求圆柱体的体积并输出(=3.14159,结果保留2位小数)。#include #define PI 3.14159main ()float r,h,v;scanf(%f%f,&r,&h);v=PI*r*r*h;printf(n%8.2f,v);06.写一个函数计算两个正整数的最大公约数,在主函数中用scanf输入m,n两个正整数,调用函数后,打印函数返回值(即这两个正
5、整数的最大公约数)。#includeint gcd(int m,int n)if(m%n=0) return n;else return gcd(n,m%n);main()int a,b,c,temp;scanf(%d%d,&a,&b);if(ab) temp=a; b=temp; a=b;c=gcd(a,b);printf(%d,c);07. 用scanf输入一个梯形的上底(a)下底(b)和高(h),求这个梯形的面积(s)。(结果保留2位小数)。#include main ()float a,b,h,s;scanf(%f,%f,%f,&a,&b,&h);s=(a+b)*h/2.0;print
6、f(n%8.2f,s);编写一个函数isPrime(int x),该函数的功能是判断一个整数是不是素数,在main函数中调用该函数,输出1-1000以内所有的素数。并按照每行5个输出。要求将该程序以文件名test2.c保存到K盘根目录#includemain()int x,t,y;y=0;for(x=100;x=300;x+) for(t=2;tc&b=c(2)!ab&b!=c|x+y=x+y)?c-a:y-x(4)!(x=a)&(y=b)&0(5)!(a+b)+c-1&b+c/2(6)a|1+a&b&c解:(1)0;(2)1;(3)2;(4)0;(5)1;(6)1。4.2有三个整数a、b、c
7、,由键盘输入,输出其中最大的数。参考源程序:main() int a,b,c,t; scanf(%d %d %d,&a,&b,&c); if(ab) if(ac) t=a; else t=c; else if(bc) t=b; else t=c; printf(%dn,t); 4.3给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,8089分为B,7079分为C,6069分为D, 60分以下为E。参考源程序:main() int number,md;char c1; scanf(%d,&number); md=number/10; switch(md) case 10: c
8、ase 9: c1=A;break; case 8: c1=B;break; case 7: c1=C;break; case 6: c1=D;break; case 5: case 4: case 3: case 2: case 1: case 0: c1=E;break; printf(%cn,c1); 4.4给一个不多于5位的正整数,要求:求出它是几位数;分别打印出每一位数字;按逆顺序打印出各位数字,例如原来为321,应输出123。参考源程序:main() int a,b,c,d,e,n;long m; scanf(%ld,&m); a=0.0001*m;b=10*(0.0001*m-a
9、);c=100*(0.0001*m-a-0.1*b); d=1000*(0.0001*m-a-0.1*b-0.01*c);e=m-10000*a-1000*b-100*c-10*d; if(a!=0)n=5,printf(%d%d,%d,%d,%d,%d%d%d%d%d%dn,n,a,b,c,d,e,e,d,c,b,a); else if(b!=0) n=4,printf(%d %d,%d,%d,%d %d%d%d%dn,n,b,c,d,e,e,d,c,b); else if(c!=0) n=3,printf(%d %d,%d,%d %d%d%dn,n,c,d,e,e,d,c); else i
10、f(d!=0) n=2,printf(%d %d,%d %d%dn,n,d,e,e,d); else n=1,printf(%d %d %dn,n,e,e); 4.5企业发放的奖金根据利润提成。利润(I)低于或等于10万元的,奖金可提10%;利润高于10万元,低20万元(100000I200000)时,低于10万元的部分按10%提成,高于1000000元的部分,可提成7.5%;2000000I4000000,低于20万元的部分仍按上述方法提成(下同)高于20万元的部分按5%提成;4000000I6000000时,高于40万元的部分按3%提成,600000010000000时,超过100万元的部
11、分按1%提成。从键盘输入当月利润I,求应发奖金总数。 要求:用if语句编程序;用switch语句编程序。 用if语句编程序: main() int a,b,c,d,e;float d1=0.01,d2=0.015,d3=0.03,d4=0.05,d5=0.075,d6=0.10; double jj,k;long i; scanf(%ld,&i); k=0.00001*i;a=k-10;b=k-6;c=k-4;d=k-2;e=k-0; if(a0) a=0; if(b0) b=0; if(c0) c=0; if(d0) d=0; jj=a*d1+(b-a)*d2+(c-b)*d3+(d-c)*
12、d4+(e-d)*d5+(k-e)*d6; printf(jj=%.3fn,100000*jj); 用switch语句编程序: main() int a,b,c,d,e,n,x;float d1=0.01,d2=0.015,d3=0.03,d4=0.05,d5=0.075,d6=0.10; double jj,k;long i; scanf(%ld,&i); k=0.00001*i;a=k-10;b=k-6;c=k-4;d=k-2;e=k-0;x=k; switch(x) case 0:e=0; case 1:d=0; case 3:c=0; case 5:b=0; case 9:a=0; d
13、efault:n=0; jj=a*d1+(b-a)*d2+(c-b)*d3+(d-c)*d4+(e-d)*d5+(k-e)*d6; printf(jj=%.3fn,100000*jj); 4.6输入四个整数,要求按大小顺序输出。 参考源程序:main() int a,b,c,d,t;scanf(%d,%d,%d,%d,&a,&b,&c,&d); if(ab) t=a,a=b,b=t; if(ac) t=a,a=c,c=t; if(ad) t=a,a=d,d=t; if(bc) t=b,b=c,c=t; if(bd) t=b,b=d,d=t; if(c1) h=0; else h=10; pri
14、ntf(%dn,h); 第5章 循环结构程序设计5.1求n!(n=1-20),(即求1!+2!+3!+4!+5!+20!)参考源程序: main() int n,i=1;long sum=0,s=1; scanf(%d,&n); while(i=n) s=s*i;sum=sum+s;i+; printf(sum=%ldn,sum); 5.2输入两个正整数m和n,求其最大公约数和最小公倍数。 main() long m,n,i=1,j,s; scanf(%ld,%ld,&m,&n); for(;i=m&i=n) j=m; else j=n; for(;!(j%m=0&j%n=0);j+); pr
15、intf(s=%ld,j=%ldn,s,j); 5.3输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。参考源程序: #includestdio.h main() char c;int i=0,j=0,k=0,l=0; while(c=getchar()!=n) if(c=65&c=97&c=48&c=57) j+; else if(c=32) k+; else l+; printf(i=%d,j=%d,k=%d,l=%dn,i,j,k,l); 5.4求Sn=a+aa+aaa+aaaaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),
16、n由键盘输入。参考源程序: #includemath.h main() int n,sum=0,i=1,s=2; scanf(%d,&n); while(i=100&x1000)a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b; if(x=(pow(a,3)+pow(b,3)+pow(c,3) printf(%5d,x);x+; 5.6一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出其因子:6itsfactorsare1、2、3参考源程序: main()
17、 int m,i,j,s; for(m=6;m10000;m+) s=1; for(i=2;im;i+) if(m%i=0) s=s+i; if(m-s=0) printf(%5d its fastors are 1 ,m);for(j=2;jm;j+) if(m%j=0) printf(%d ,j);printf(n); 或 main() int m,i,j,s; for(m=6;m1000;m+) s=m-1; for(i=2;im;i+) if(m%i=0) s=s-i; if(s=0) printf(%5d its fastors are 1 ,m);for(j=2;jm;j+) if
18、(m%j=0) printf(%d ,j);printf(n); 5.7有一分数序列: 2/1,3/2,5/3,8/5,13/8,21/13求出这个数列的前20项之和。参考源程序: main() int i=1,n;double t,x=1,y=2,s,sum=0; scanf(%ld,&n); while(i=n) s=y/x;sum=sum+s;t=y;y=y+x;x=t;i+; printf(%fn,sum); 5.8一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高?参考源程序: main() int i,n;double
19、 h=100,s=100; scanf(%d,&n); for(i=1;i=n;i+) h*=0.5;if(i=1) continue;s=2*h+s; printf(h=%f,s=%fn,h,s); 5.9猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。参考源程序: main() int i=1,sum=0; for(;i=0.00001); printf(%.3fn,x1); 5.11用二分法求方程在(-10
20、,10)之间的根 2x3-4x2+3x-6=0参考源程序: main() double x1,x2,y1,y2;x1=-10;x2=10; doy1=2*x1*x1*x1-4*x1*x1+3*x1-6; x1=x1-y1/(6*x1*x1-8*x1+3);while(y1!=0); doy2=2*x2*x2*x2-4*x2*x2+3*x2-6; x2=x2-y2/(6*x2*x2-8*x2+3);while(y2!=0); printf(x1=%.3f,x2=%.3fn,x1,x2); 5.12打印以下图案 * * * * * * *参考源程序: #includemath.h main() i
21、nt i=1,k,l,m; for(;i=49;i+) k=i%7;l=3-fabs(i-1)/7-3);m=fabs(i-4-7*(i-1)/7); if(k=1) printf(n); if(m=l) printf(*); else printf( ); printf(n); 第6章 数组6.1用筛选法求100以内的素数。参考源程序: main() int i,j,a100; for(i=2;i100;i+) ai=i; for(j=2;j=i;j+) if(ji) if(ai%j=0) break; if(ai-j=0) printf(%5d,ai); printf(n); 或 #inc
22、ludemath.h main() static int i,j,k,a98; for(i=2;i100;i+) ai=i;k=sqrt(i); for(j=2;j=ai;j+) if(j=k+1) printf(%5d,ai); printf(n); 6.2求一个矩阵对角线元素之和。解:以3*3矩阵为例,参考源程序如下: main() int i=0,j=0,a33,s1,s2; for(i=0;i3;i+) for(j=0;j0;i-) if(aiai-1) t=ai-1;ai-1=ai;ai=t; for(i=0;i10;i+)printf(%5d,ai);printf(n); 6.4将
23、一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。参考源程序: main() int i,b10; for(i=0;i-1;i-) printf(%5d,bi); printf(n);6.5 打印出以下杨辉三角形(要求打印出10行)。 1 11 121 1331 14641 15101051 参考源程序:main() static int m,n,k,b1515; b01=1; for(m=1;m15;m+) for(n=1;n=m;n+) bmn=bm-1n-1+bm-1n; printf(%-5d,bmn);printf(n); 6.6找出一个
24、二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。参考源程序:#define N 10#define M 10main()int I,j,m,n,flag1,flag2,aNM,max,maxj;/*输入二维数组array1*/printf(“输入二维数组的行数:”);scanf(“%d”,&n);printf(“输入二维数组的列数:”);scanf(“%d”,&m);printf(“输入二维数组:n”);for(i=0;in;i+) for(j=0;jm;j+) prinf(“请输入a%2d%2d:”,I,j); scanf(“%d”,&aij); printf(
25、“n”);/*输出数组*/prinf(“二维数组为:n”);for(i=0;in;i+) for(j=0;jm;j+) printf(“%dt”,aij); printf(“n”); /*寻找鞍点*/flag2=0; /*flag2作为数组中是否有鞍点的标志*/for(i=0;in;i+) max=ai0; for(j=0;jmax) max=aij; maxj=j; for(k=0,flag1=1;kakmaxjj)/*判断行中的最大值是否也是列中的是大值*/ flag1=0; if(flag1) printf(“n第%d行第%d列的%d是鞍点n”,j,maxj,max); flag2=0;
26、 if(!flag2) printf(“n无鞍点!n”); 6.7 从键盘上输入多个字符,编程统计其中字母、空格、数字及其他字符的个数。参考源程序:#include “stdio.h”Main()char str40;int alphabet=0,digit=0,space=0,other=0,i=0;printf(“请输入一串字符:n”);gets(str);while(stri!=o) if(A=stri)&(stri=Z)|&(a=stri)&(stri=z) +alphabet; else if(stri= ) +space; else if(stri=0) +digit; else
27、+other; Printf(“其中有%d个字母,%d个空格,%d个数字,%d个其他字符!”,alphabet,space,digit,other);6.8 有n个学生,学习m门课程,已知所有学生全部课程的成绩,要求输出每门课程最高分的学生学号、课程代号和成绩。参考源程序:#define N 50#define m 20main()char aN10;float scoreNM,max_score;int n,m,i,j,studid;/*输入学生的学号和各门课程的成绩*/printf(“请输入学生数n和课程数m;”);scanf(“%d,%d”,&n,&m);for(i=1;i=n;i+)
28、printf(“请输入第%d位学生的学号:”,i); scanf(“%s”,ai); printf(“请按课程顺序输入成绩:”); for(j=1;j=m;j+) scanf(“%f”,&scoreij); /*找出每门课程最高的学生学号、课程代号和成绩并输出*/For(j=1;j=m;j+) studid=1;max_score=score1j;for(i=1;i max_score) max_score=scoreij; studid=i; Printf(“第%d门课程最高分的学生学号是:%s,成绩为:%.2fn”,j,astudid,max_score); 第7章 函数7.1 写出函数定
29、义的一般形式,并说明各部分的意义。解:(略)7.2 函数调用有哪几种形式,各自有什么特点?解:在C语言中,可以用以下几种方式调用函数:函数表达式。函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。函数语句。C语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用作为一各独立的语句。函数实参。函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。7.3写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。解:参考源程序: int maxyueshu(int m,int n) int m,n; int i=1,t; for(;i=m&i=n) j=m; else j=n; for(;!(j%m=0&j%n=0);j+); return j; main() int a,b,max,min; prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 图书批发商库存控制考核试卷
- 私募股权投资高端制造行业投资分析考核试卷
- 智能健身设备创新与市场分析考核试卷
- 2025科技部技术服务合同书范本
- 2025合同债务潜藏风险
- 2025年如何评估合同违约的财务影响
- 《2025聘请技术人才合同协议书》
- 2025电子产品购销合同范本模板
- 学校食堂食品安全0428
- 苏教版九年级语文(上)教案
- 人教版小学数学知识点总结大全
- 毕业设计(论文)-基于SolidWorks的厨余垃圾处理器设计
- 北师大版小学数学家长会发言稿范文
- GMP取样管理课件
- 安徽省普通高中2024学年学业水平合格性测试英语试题(原卷版)
- 《中国古代物理学》课件
- 《阿西莫夫短文两篇》-课件
- 培训机构教务管理岗位职责
- 各行业消防安全培训课件
- 书店承包经营合同2024版
- 国际标准与国内标准的融合
评论
0/150
提交评论