C语言课后答案.docx

上传人:b****5 文档编号:30185218 上传时间:2023-08-05 格式:DOCX 页数:28 大小:78.94KB
下载 相关 举报
C语言课后答案.docx_第1页
第1页 / 共28页
C语言课后答案.docx_第2页
第2页 / 共28页
C语言课后答案.docx_第3页
第3页 / 共28页
C语言课后答案.docx_第4页
第4页 / 共28页
C语言课后答案.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C语言课后答案.docx

《C语言课后答案.docx》由会员分享,可在线阅读,更多相关《C语言课后答案.docx(28页珍藏版)》请在冰豆网上搜索。

C语言课后答案.docx

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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1