实验一(1)三角形输入三边求面积:顺序结构编写输入三角形的三边x,y,z(能构成三角形),求三角形的周长c和面积s,得到的结果保留2位小数。#includestdio.h#includemath.hmain(){floatx,y,z,c,s,t;scanf(%f,%f,%f,&x,&y,&z);c=x+y+z;t=c/2;s=sqrt(t*(t-x)*(t-y)*(t-z));printf(c=%.2fs=%.2f\n,c,s);}(2)利用循环结构编写程序,打印图案,输出的三角形如下(循环语句)(3)功能是:输入一行字符,统计其中的字母和非字母的个数。例如,输入B5a3d,#则输出4,5。(循环,分支结构)#includestdio.hmain(){charch;inta,b;a=b=0;ch=getchar();while(ch!='\n'){if((ch='A'&&ch='Z')||(ch='a'&&ch='z'))a++;elseb++;ch=getchar();}printf(%d,%d\n,a,b);实验二1、输入三角形的三边,求三角形的面积。A.以前:#includestdio.h#includemath.hmain(){floata,b,c,s;doublearea;printf(Pleaseinputthreesides'length:\n);scanf(%f,%f,%f,&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(Theareaoftriangleis%5.2f,area);}B.函数的方法来实现#includestdio.h#includemath.hdoublearea(floatx,floaty,floatz){doubles,p;p=(x+y+z)/2;s=sqrt(p*(p-x)*(p-y)*(p-z));returns;}main(){floata,b,c;printf(Pleaseinputthreesides'length:\n);scanf(%f,%f,%f,&a,&b,&c);printf(Theareaoftriangleis%5.2f,area(a,b,c));}2、编写函数,求两个整数的最大公约数。思路二:辗转相除法例如:(1)若ab,则a、b交换值;(2)r=a%b;(3)若r==0,转(5);(4)a=b,b=rr=a%b;(5)输出b以前:#includestdio.hvoidmain(){inta,b,r,sa,sb;printf(Inputtwointegernumbers:\n);scanf(%d%d,&a,&b);sa=a;sb=b;if(ab){r=a;a=b;b=r;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}printf(Thegreatestcommondivisor:%d\n,b);printf(Thelowestcommonmultiple:%d\n,sa*sb/b);}答案:#includestdio.hinttranslate(intsa,intsb);voidmain(){inta,b,result;printf(Inputtwointegernumbers:\n);scanf(%d%d,&a,&b);result=translate(a,b);printf(Thegreatestcommondivisor:%d\n,result);}inttranslate(inta,intb){intsa=a;intsb=b;intr;if(ab){r=a;a=b;b=r;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}returnb;}3、输入n,输出高度为n的三角形。用函数的方式来实现:主函数:main()输入n,自定义函数:triangle(intn)例如当输入:5,输出的三角形如下:A.以前:B.函数的方法来实现答案:#includestdio.hvoidtriangle(intn);voidmain(){intn;scanf(%d,&n);triangle(n);}voidtriangle(intn){inti,j,k;for(k=1;k=n;k++){for(i=0;in-k;i++)printf();for(j=1;j=2*k-1;j++)printf(*);printf(\n);}}第三次(1)编写一个程序,要求输入一个正整数n,计算n!的递归调用/*1.用递归函数法求n!*/#includestdio.hlongfac(intn){longresult;if(n==0||n==1)result=1;elseresult=n*fac(n-1);returnresult;}main(){intn;longf;printf(Pleaseentervalueofn:\n);scanf(%d,&n);if(n=0)printf(Sorry!Youenterawrongnumber!\n);else{f=fac(n);printf(%d!=%ld\n,n,f);}}(2)用递归的方法计算学生年龄。已知第一位学生年龄最小为10岁,其余学生一个比一个大2岁,求第五位学生的年龄;#includestdio.hintmain(){intage(intn);printf(NO.5,age:%d\n,age(5));return0;}intage(intn){intc;1.if(n==1)c=10;elsec=age(n-1)+2;return(c);}(3)编写函数计算组合数:c(n,k)=n!/(k!(n−k)!)见课本参考答案加强练习:2.(1)编写计算X的Y次幂的递归函数,并在主函数中实现输入,输出#includestdio.hlongintgetpower(intx,inty){if(y==1)returnx;returnx*getpower(x,y-1);}main(){intx,y;printf(inputx,y:\n);scanf(%d%d,&x,&y);printf(%ld\n,getpower(x,y));}(2)计算S=1K+2k+3k+……+Nk(f1函数完成Nk;f2函数完成求和;主函数中实现输入,输出)#includestdio.hintfun1(intN,intk){inti,s1;for(i=1;ik;i++){s1=N*N;}returns1;}intfun2(intN,intk){inti,s2=0;for(i=1;i=N;i++){s2=s2+fun1(i,k);}returns2;}main(){intN,k,s;printf(请输入N和k的值:);scanf(%d%d,&N,&k);s=fun2(N,k);printf(%d\n,s);}实验四1.有一个一维数组score,内放3个学生成绩,求学生的平均成绩。(1)只写一个主函数完成这项工作;(2)写一个aver函数完成求平均成绩;主函数完成数据的输入/输出;函数调用采用数组元数做为参数。(3)写一个aver完成求平均成绩;主函数完成数据的输入/输出;函数调用采用数组名做为参数。答案:(1)#includestdio.hmain(){floatscore[3],sum,aver;//声明得分数组和总分数以及平均数inti;//声明for循环的游标for(i=0;i3;i++)//for循环体scanf(%f,&score[i]);//输入成绩sum=score[0]+score[1]+score[2];//求总分数printf(sum=%f\n,sum);//显示总分数aver=sum/3;//求平均分数printf(aver=%f,aver);//显示平均分数}(2)#includestdio.hmain(){floatave(floata,floatb,floatc);floatscore[3],sum,aver;//声明得分数组和总分数以及平均数inti;//声明for循环的游标for(i=0;i3;i++)//for循环体scanf(%f,&score[i]);//输入成绩aver=ave(score[0],score[1],score[2]);printf(aver=%f,aver);//显示平均分数}floatave(floata,floatb,floatc){return((a+b+c)/3.0);}(3)#includestdio.hmain(){floatave(floatb[3]);floatscore[3],sum,aver;//声明得分数组和总分数以及平均数inti;//声明for循环的游标for(i=0;i3;i++)//for循环体scanf(%f,&score[i]);//输入成绩aver=ave(score);printf(aver=%f,aver);//显示平均分数}floatave(floatb[3]){return((b[0]+b[1]+b[2])/3.0);}2.下面的程序完成的功能是输入5个数据,然后求它们的和并输出结果。找出程序的错误编辑修改。上机调试运行。main(){intI,a[5],sum;for(i=0;i=5;i++)scanf(“%d”,a);sum=sum+a[i];printf(“sum=%d\n”,sum);答案:#includestdio.hvoidmain(){inti,a[5],sum=0;//错误1:声明I和循环体中i不一致,sum没有初始值for(i=0;i5;i++)//错误2:脚码超出{scanf(%d,&a[i]);//错误3:输入应写在循环体中,输入需要用取地址符,需要指定数组下标sum=sum+a[i];}//错误4:需要为循环体添加大括号printf(sum=%d\n,sum);}3.编写一个程序用三种方式输入/输出字符串;分析程序的运行结果,掌握字符串输入/输出的不同方法。答案://输入hello!进行测试#includestdio.hvoidmain(){charHelloChar1[10];//为第一种方法声明存储charHelloChar2[10];//为第二种方法声明存储charHelloChar3[10];//为第三种方法声明存储inti;printf(请输入\hello!\进行测试:\n);//方法1:利用scanfprintf(方法1-利用scanf:\n);for(i=0;i6;i++)//输入scanf(%c,&HelloChar1[i]);getchar();//接收回车键for(i=0;i6;i++)//输出printf(%c,HelloChar1[i]);printf(\n);//方法2:利用getchar,putcharprintf(方法2-利用getchar,putchar:\n);for(i=0;i6;i++)//输入HelloChar2[i]=getchar();getchar();//接收回车键for(i=0;i6;i++)//输出putchar(HelloChar2[i]);printf(\n);//方法3:printf(方法3-利用gets,puts:\n);gets(HelloChar3);//输入puts(HelloChar3);//输出printf(\n);}加强练习:4.阅读p64页例题:2-11输入8种商品的价格并打印出来,求平均价格、最高价、最低价,并将平均价格、最高价、最低价打印出来。分析:可以用一个数组把不同商品的价格保存起来,为了程序的通用性,可定义不同的函数来实现对商品的价格输入、输出;求平均价格、最高价、最低价。用数组wares来保存8种商品的价格,其他各函数的功能如下:readpr