C语言课后答案.docx
- 文档编号:30185218
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:28
- 大小:78.94KB
C语言课后答案.docx
《C语言课后答案.docx》由会员分享,可在线阅读,更多相关《C语言课后答案.docx(28页珍藏版)》请在冰豆网上搜索。
C语言课后答案
C语言实验报告
课程________________实验名称_______________第页共页
系别_________________________________实验日期年月日
专业班级________________________________实验报告日期年月日
姓名________________学号_____________报告退发
教师审批签字
一.实验目的
参见实验大纲
二.实验内容
(-)实验题目一:
设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
用scanf输入数据,输出结果,取2位小数。
1.要点分析:
根据数学公式用c语言编写程序
2.实验步骤
#definepi3.1415926535
#include
voidmain()
{floatl,s1,s2,v1,v2,r,h;
scanf("%f,%f",&r,&h);
l=2*pi*r;s1=pi*r*r;v2=pi*r*r*h;
s2=4*pi*r*r;v1=4.0/3*pi*r*r*r;
printf("l=%.2f,s1=%.2f,s2=%.2f,v1=%.2f,v2=%.2f",l,s1,s2,v1,v2);}
3.实验结果
(二)实验题目二:
输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9*(F-32)
1.要点分析:
2.实验步骤:
#include
voidmain()
{floatc,F;
scanf("%f",&F);
c=5.0/9*(F-32);
printf("%.2f",c);}
3.实验结果:
任意输入一个符合实际的数例如85,可得如下结果
(三)实验题目三:
有3个整数啊,a,b,c,由键盘输入,输出其中最大的数。
1.要点分析:
2.实验步骤:
#include
voidmain()
{inta,b,c,t;
scanf("%d,%d,%d",&a,&b,&c);
if(a
{t=a;a=b;b=t;}
if(a {t=a;a=c;c=t;} printf("%d",a);} 3.实验结果: 随便输入三个整数,例如4,32,8.得出如下结果 (四)实验题目四: 有一个函数: 当x<1时y=x;当1<=x<10时,y=2x-1;当x>=10时,y=3x-11.写一段程序,输入x,输出y的值。 1.要点分析: 2.实验步骤: #include voidmain() {floatx,y; scanf("%f",&x); if(x<1) y=x; else if(x>=10)y=3*x-11; elsey=2*x-1; printf("%f",y);} 3.实验结果: 任意输入一个值例如25,可得如下结果 (一)实验题目一: 要求按照百分制分数段输出考试成绩的等级,用switch语言编写程序。 1.要点分析: 用switch语言编写程序 2.实验步骤: #include voidmain() {inta;floatc; scanf("%f",&c); a=int(c/10); if(a<=5)a=5; switch(a) {case10: case9: printf("A\n");break; case8: printf("B\n");break; case7: printf("C\n");break; case6: printf("D\n");break; case5: printf("E\n");break;}} 3.实验结果: 输入任意一个百分制分数例如86.5,可输出如下结果 (二)实验题目二: 第5.7题,求应发奖金总数? 1.要点分析: 用switch语言编写程序 2.实验步骤: #include voidmain() {floatsum;inta; scanf("%f",&sum); a=int(sum/100000); if(int(sum/100000)==0)a=int(sum/100000)-1; if(a>=10)a=10; switch(a) {case0: printf("奖金总数为: %f\n",sum*0.1);break; case1: printf("奖金总数为: %f\n",10000+sum*0.075-100000*0.075);break; case2: case3: printf("奖金总数为: %f\n",17500+sum*0.05-200000*0.05);break; case4: case5: printf("奖金总数为: %f\n",27500+sum*0.03-400000*0.03);break; case6: case7: case8: case9: printf("奖金总数为: %f\n",33500+sum*0.015-600000*0.015);break; case10: printf(奖金总数为: %f\n",39500+sum*0.01-1000000*0.01);break;}} 3.实验结果: 任意输入一个数例如657903.98可得如下结果 (三)实验题目三: 输入两个正整数m和n,求其最大公约数和最小公倍数。 1.要点分析: 根据for循环语言编写程序 2.实验步骤: #include voidmain() {intm,n,i,j,k,a; scanf("%d,%d",&m,&n); if(m elsek=n; for(i=1;i if(m%i==0&&n%i==0)a=i; printf("最大公约数: %d",a); for(j=n;j>=n;j++) if(j%m==0&&j%n==0)break; printf("最小公倍数: %d\n",j);} 3.实验结果: 任意输入两个正整数例如12和64,可得如下结果 (四)实验题目四: 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。 )1.要点分析: 2.实验步骤: #include voidmain() {chara;intyw=0,kg=0,sz=0,qt=0; while((a=getchar())! ='\n') {if(a>='a'&&a<='z'||a>='A'&&a<='Z')yw++; elseif(a=='')kg++; elseif(a>='0'&&a<='9')sz++; elseqt++;} printf("英文字母数: %d\n空格数: %d\n数字数: %d\n其他数: %d\n",yw,kg,sz,qt);} 3.实验结果: 任意输入一串字符 (五)实验题目五: 求1! +2! +3! +4! +···+20! 1.要点分析: 2.实验步骤: #include voidmain() {inti;floatk=1,a=0; for(i=1;i<=20;i++) k=k*i;a=a+k; printf("%e\n",a);} 3.实验结果: (六)实验题目六: 求1+2+3+···+100+1*1+2*2+3*3+···+50*50+1/1+1/2+1/3+···+1/101.要点分析: 2.实验步骤: #include voidmain() {inti,j,h;floats3,s0,s1,s2; for(i=1,s1=0;i<=100;i++) s1=s1+i; for(j=1,s2=0;j<=50;j++) s2=s2+j*j; for(h=1,s3=0;h<=10;h++) s3=s3+1.0/h; s0=s1+s2+s3; printf("%.2f\n",s0);} 3.实验结果: (七)实验题目七: 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身,例如153 1.要点分析: 2.实验步骤: #include voidmain() {intmax,g,s,b; for(max=100;max<=999;max++) {b=max/100;s=(max/10)%10; g=max%10; if(max==b*b*b+s*s*s+g*g*g) printf("%d\n",max);}} 3.实验结果: (八)实验题目八: 有一分数序列2/1,3/2,5/3,8/5,13/8,21/13···求出这个数列的前20项之和。 1.要点分析: 2.实验步骤: #include voidmain() {inti;floata=1,b=2,c=0,t; for(i=1;i<21;i++) {t=a,a=b;b=t+b,c=c+b/a;} printf("%f\n",c);} 3.实验结果: (九)实验题目九: 一个球从100m高度自由下落,每次落地后反跳回原高度的一半,再落下,在反弹。 求它第10次落地后,共经过多少米? 第十次反弹多高? 1.要点分析: 2.实验步骤: #include voidmain() {floath=100,p=0;intt; for(t=1;t<=10;t++) {p=p+h+h/2;h=h/2;} printf("经历十次共经过%f米",p); printf("第十次反弹%f米\n",h);} 3.实验结果: 实验内容 (一)实验题目一: 输入一行字符,统计其中‘a’的个数,并将‘a’替换成‘e’。 1.要点分析: 2.实验步骤: #include voidmain() {charstr[100];charstring[100];inti,j,num=0; charm; printf("输入一行字符: "); gets(str); for(i=0;(m=str[i])! ='\0';i++) if(m=='a')num++; printf("'a'的个数为%d个\n",num); for(i=0;(m=str[i])! ='\0';i++) if(m=='a')string[i]='e'; elsestring[i]=str[i]; printf("替换后字符: %s\n",string);} 3.实验结果: 输入任意一行字符,可输出如下结果: (二)实验题目二: 求一个3*3的整型矩阵对角线元素之和。 1.要点分析: 2.实验步骤: #include voidmain() {inta[3][3],sum=0,i,j; printf("输入数字: "); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); sum=a[0][0]+a[1][1]+a[2][2]; printf("对角线元素之和为%d\n",sum);} 3.实验结果: 任意输入一组数据,可得如下结果 (三)实验题目三: 已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 1.要点分析: 根据for循环语言编写程序 2.实验步骤: #include voidmain() {intm[7]={98,56,19,11,9,4,1}; ints,i,j; for(i=0;i<8;i++) printf("%3d",m[i]); printf("\n"); scanf("%d",&s); if(s else {for(i=0;i<8;i++) if(m[i] {for(j=7;j>=i;j--) m[j+1]=m[j];m[i]=s;break;}} printf("插入后数组为: "); for(i=0;i<9;i++) printf("%3d",m[i]); printf("\n");} 3.实验结果: 在一列数组中插入10得: (四)实验题目四: 将一个数组中的值按逆序重新存放。 例如原来顺序为8,6,5,4,1。 要求改为1,4,5,6,8。 )1.要点分析: 2.实验步骤: #include voidmain() {inta[5];inti,j; printf("输入一组数: "); for(i=0;i<6;i++) scanf("%d",&a[i]); for(i=0;i<3;i++) {j=a[i];a[i]=a[4-i];a[4-i]=j;} printf("转换后数为: "); for(i=0;i<6;i++) printf("%3d",a[i]); printf("\n");} 3.实验结果: 任意输入一串字符 (五)实验题目五: 求1! +2! +3! +4! +···+20! 1.要点分析: 2.实验步骤: #include voidmain() {inti;floatk=1,a=0; for(i=1;i<=20;i++) k=k*i;a=a+k; printf("%e\n",a);} 3.实验结果: 三.实验目的 参见实验大纲 实验内容 (一)实验题目一: 求1! +2! +3! +···+20! 1.要点分析: 2.实验步骤: #include voidmain() {inti;longintsum=0; intjc(inta); for(i=1;i<=20;i++) {sum=jc(i)+sum;} printf("sum=%ld\n",sum);} intjc(inta) {inti,b=1; for(i=1;i<=a;i++) b=b*i; return(b);} 3.实验结果: (二)实验题目二: 求5^1+5^2+5^3+···+5^10 1.要点分析: 2.实验步骤: #include voidmain() {inti,sum=0; intjh(inta); for(i=1;i<=10;i++) sum=jh(i)+sum; printf("sum=%ld\n",sum);} intjh(inta) {inti,b=1; for(i=1;i<=a;i++) b=b*5; returnb;} 3.实验结果: (三)实验题目三: 写两个函数,输入两个正整数a和b,求其最大公约数和最小公倍数,并输出结果。 1.要点分析: 2.实验步骤: #include voidmain() {inta,b,c,d; intzd(intx,inty); intzx(intx,inty); printf("输入两个整数: "); scanf("%d,%d",&a,&b); c=zd(a,b);d=zx(a,b); printf("最大公约数为: %d\n",c); printf("最小公倍数为: %d\n",d);} intzd(intx,inty) {intk,i; for(i=1;i<=x;i++) {if(x%i==0&&y%i==0)k=i;} return(k);} intzx(intx,inty) {intp,i; for(i=x*y;i>=x;i--) {if(i%x==0&&i%y==0)p=i;} return(p);} 3.实验结果: 任意输入两个正整数例如12和8,可得如下结果 (四)实验题目四: 求方程a*x[2]+b*x+c=0的根,用3个函数分别求当b[2]-4*a*c大于0,等于0和小于0时的根并输出结果。 从主函数输入a,b,c. 1.要点分析: 2.实验步骤: #include #include floatx1,x2,t; voidmain() {voidm(float,float); voidn(float,float); floata,b,c; printf("输入a,b,c的值分别为: "); scanf("%f,%f,%f",&a,&b,&c); t=b*b-4*a*c; printf("方程的根为: "); if(t>0) {m(a,b);} elseif(t==0) {n(a,b);} elseprintf("方程无实数根\n"); printf("\n");} voidm(floatx,floaty) {x1=(-y+sqrt(t))/(2*x); x2=(-y-sqrt(t))/(2*x); printf("x1=%fx2=%f",x1,x2);} voidn(floatx,floaty) {x1=x2=(-y)/(2*x); printf("x1=%fx2=%f",x1,x2);} 3.实验结果: (五)实验题目五: 写一个判素数的函数,在主函数输入一个整数,输出是否为素数的信息。 1.要点分析: 2.实验步骤: intshusu(intx) {inti,j=1; for(i=2,j=1;i if(x%i==0)j=0; return(j);} #include voidmain() {inta; printf("输入任意一个整数: "); scanf("%d",&a); if(shusu(a)) printf("%d是个素数\n",a); elseprintf("%d不是个素数\n",a);} 4.实验结果: (六)实验题目六: 用递归调用的方法求fibonacci数列的第20个数。 1.要点分析: 2.实验步骤: #include voidmain() {inti,j; inths(intn); scanf("%d",&i); j=hs(i); printf("第%d个数为: %d\n",i,j);} inths(intn) {intm; if(n==1||n==2)return1; else {m=hs(n-1)+hs(n-2);returnm;}} 3.实验结果: (七)实验题目七: 写一个函数,使给定的一个3*3的二维整型数组转置。 1.要点分析: 2.实验步骤: #include voidmain() {inta[3][3],i,j; voiddz(intx[3][3]); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); printf("\n"); dz(a);} voiddz(intx[3][3]) {intp,q,m; for(p=0;p<3;p++) for(q=0;q<3;q++) {m=x[p][q];x[p][q]=x[q][p];x[q][p]=m;} for(p=0;p<3;p++) {for(q=0;q<3;q++) printf("%d",x[q][p]); printf("\n");}} 3.实验结果: (八)实验题目八: 编写一个函数,由实参转来一个字符串,统计此字符串中字母,数字,空格和其他字符的个数,在主函数中输入字符串及输出上述的结果。 1.要点分析: 2.实验步骤: #include voidmain() {chara[100];intzm,sz,kg,qt; voidzfc(chara[]); gets(a); zfc(a); } voidzfc(charm[]) {intzm=0,sz=0,kg=0,qt=0,i; for(i=0;m[i]! ='\0';i++) {if((m[i]>='a'&&m[i]<='z')||(m[i]>='A'&&m[i]<='Z'))zm++; elseif(m[i]>='0'&&m[i]<='9')sz++; elseif(m[i]=='')kg++; elseqt++;} printf("字母个数为%d个数字个数为%d个空格个数为%d个其他个数为%d个\n",zm,sz,kg,qt);} 3.实验结果: (九)实验题目九: 8.13用递归方法求n阶勒让德多项式的值。 1.要点分析: 2.实验步骤: #include voidmain() {intn,x; floata(intn,intx); scanf("%d,%d",&n,&x); printf("%d\n",a(n,x));} floata(intn,intx) {floatk; if(n==0)return (1); elseif(n==1)return(x); elsek=((2*n-1)*x-a(n-1,x)-(n-1)*a(n-2,x))/n; return(k);} 3.实验结果: 实验内容 (一)实验题目一: 输入3个字符串,按由小到大的顺序输出。 1.要点分析: 2.实验步骤: #include #include voidmain() {charm[3][100]; char*p1,*p2,*p3,*n; inti; for(i=0;i<=2;i++) gets(m[i]); p1=m[0];p2=m[1];p3=m[2]; if(strcmp(p1,p2)>0) {n=p1;p1=p2;p2=n;} if(strcmp(p1,p3)>0) {n=p1;p1=p3;p3=n;} if(strcmp(p2,p3)>0) {n=p2;p2=p3;p3=n;} printf("从小到大输出为: \n"); printf("%s\n",p1); printf("%s\n",p2); printf("%s\n",p3);} 3.实验结果: (二)实验题目二: 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 写3个函数: 1输入10个数;2进行处理;3输出10个数。 1.要点分析: 2.实验步骤: #include voidmain() {int*sr(int*p); int*yx(int*p);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 答案