实验二参考答案1.输入两个整型数字,输出他们的和。#includestdio.hmain(){inta,b,sum;scanf(“%d%d”,&a,&b);sum=a+b;printf(“a+b=%d”,sum);}2.输入两个实型数,输出他们的和与乘积。#includestdio.hmain(){floata,b,sum,product;scanf(“%f%f”,&a,&b);sum=a+b;product=a*b;printf(“a+b=%5.2f,a*b=%5.2f”,sum,product);}3.求方程02cbxax的根(设042acb)(其中a,b,c的值由键盘输入)。#includestdio.h#includemath.hmain(){floata,b,c,dt,x1,x2;scanf(“%f%f%f”,&a,&b,&c);dt=sqrt(b*b-4*a*c);x1=(-b+dt)/(2*a);x2=(-b-dt)/(2*a);printf(“x1=%5.2f,x2=%5.2f”,x1,x2);}4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数)#includestdio.hmain(){inth,f,x,y;scanf(“%d%d”,&h,&f);x=2*h-f/2;y=f/2-h;printf(“x=%d,y=%d”,x,y);}实验三参考答案1.输入三个数a、b、c,要求按由小到大的顺序输出。#includestdio.hmain(){floata,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}printf(“%f,%f,%f”,a,b,c);}2.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。(1)#includestdio.hmain(){floata,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}if(a+bc){if(a==b||b==c){if(a==c)printf(“等边三角型”);elseif(c*c==a*a+b*b)printf(“等腰直角三角形”);elseprintf(“一般等腰三角形”);}elseif(c*c==a*a+b*b)printf(“一般直角三角形”);elseprintf(“一般三角形”);}elseprintf(“不构成三角形”);}(2)#includestdio.hmain(){floata,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}if(a+b=c)printf(“不构成三角形”);elseif(a==b&&b==c&&a==c)printf(“等边三角型”);elseif(a==b&&c*c==a*a+b*b)printf(“等腰直角三角形”);elseif(a==b)printf(“一般等腰三角形”);elseif(c*c==a*a+b*b)printf(“一般直角三角形”);elseprintf(“一般三角形”);}3.编程实现下列函数x(x1)y=2x-1(101x)|3x-11|(10x)#includestdio.h#includemath.hmain(){intx,y;printf(inputx=:);scanf(%d,&x);if(x1)y=x;elseif(x10)y=2*x-1;elsey=abs(3*x-11);printf(x=%dy=%d\n,x,y);}4.编写程序,输入一百分制成绩,对应输出等级A、B、C、D、E,90分以上为A,80分—89分为B,70分—79分为C,60分—69分为D,60分以下为E。方法一:用if语句#includestdio.hmain(){floatscore;chargrade;scanf(%f,&score);if(score100||score0)printf(\ninputerror!);else{if(score=90)grade='A';elseif(score=80)grade='B';elseif(score=70)grade='C';elseif(score=60)grade='D';elsegrade='E';}printf(thestudentgrade=%c\n,grade);}方法二:用switch语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。#includestdio.hmain(){floatscore,ints;chargrade;scanf(%f,&score);s=score/10;if(s0||s10)printf(\ninputerror!);else{switch(s){case10:case9:grade='A';break;case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;default:grade='E';}printf(thestudentgrade=%c\n,ch);}}实验四参考答案1.编写程序,计算以下级数前n项之和。!/...!4/!3/!2/1432nxxxxxsumn#includestdio.hvoidmain(){inti,n;floats=1.0,sum=1.0,x;scanf(“%d,%f”,&n,&x);for(i=1;i=n;i++){s=s*x/i;sum=sum+s;}printf(“sum=%5.2f”,sum);}2.编程打印如下图案(书后习题第3题):********************************************************#includestdio.hmain(){inti,j,n;for(i=1;i=7;i++){for(j=0;j14-2*i;j++)printf();for(j=0;j2*i;j++)printf(*);printf(\n);}}3.编写程序实现输入整数n,输出如下所示由数字组成的菱形。(图中n=5)11211232112343211234543211234321123211211#includestdio.hmain(){inti,j,n;scanf(%d,&n);for(i=1;in;i++){for(j=1;ji;j++)printf(%d,j);for(j=i;j0;j--)printf(%d,j);printf(\n);}for(i=n;i0;i--){for(j=1;ji;j++)printf(%d,j);for(j=i;j0;j--)printf(%d,j);printf(\n);}}4.输出Fibonacci数列第n项。其数列通项公式为Fn=Fn-1+Fn-2,F1=1,F2=1。方法一:#includestdio.hmain(){floatf,f1=1,f2=1;inti,n;scanf(%d,&n);for(i=3;i=n;i++){f=f1+f2;f1=f2;f2=f;}printf(%10.0f\n,f);}方法二:#includestdio.h#defineNUM20voidmain(){inti;floatf[NUM]={1,1};for(i=2;iNUM;i++)f[i]=f[i-2]+f[i-1];for(i=0;iNUM;i++)printf(%10.0f\n,f[i]);}实验五参考答案1.编写程序,将1,2,3这三个数赋给数组a,将5,6,7赋给数组b,将两数组对应元素相加的和赋给数组c,输出数组c#includestdio.hvoidmain(){inta[3]={1,2,3},b[3]={4,5,6},c[3];inti;for(i=0;i3;i++){c[i]=a[i]+b[i];printf(%d,c[i]);}}2.输入任意10个数,按从大到小或从小到大的顺序输出(“冒泡”排序)#includestdio.h#defineNUM10voidmain(){inta[NUM],i,j,temp,flag;printf(input%dnumbers:\n,NUM);for(i=0;iNUM;i++)scanf(%d,&a[i]);for(i=1;iNUM;i++)for(j=0;jNUM-i;j++){flag=0;if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;flag=1;}if(flag==0)break;}printf(thesortednumbers:\n);for(i=0;iNUM;i++)printf(%d,a[i]);}3.输入10个整数并存放在一维数组中,找出其中最大值和此元素的下标#includestdio.h#defineNUM10voidmain(){inta[NUM];inti,max,index;for(i=0;iNUM;i++)scanf(%d,&a[i]);max=a[0];for(i=0;iNUM;i++){if(maxa[i]){max=a[i];index=i;}}printf(max=%d,index=%d,max,index);}4.将从键盘输入的字符串进行逆序输出,逆序后的字符串仍然保留在原来字符数组中。(不得调用任何字符串处理函数包括strlen)#includestdio.h#defineNUM80voidmain(){chara[NUM],temp;inti,j,index;for(i=0;iNUM;i++){scanf(%c,&a[i]);if(a[i]=='\n')break;}a[i]='\0';index=i;for(i=0,j=index-1;i=index/2;i++,j--){temp=a[i];a[i]=a[j];a[j]=temp;}for(i=0;iNUM;i++){if(a[i]=='\0')break;printf(%c,a[i]);}printf(\n);}实验五参考答案1.编写函数,求表达式452xx的值,x有由主函数输入。(请同学们用有返回值和无返回值两种方式去做,练习简单的函定义、声明、及调用方法)有返回值#includestdio.hfloatfun(floatx){floatm;m=x*x-5*x+4;returnm;}voidmain(){floata,f;scanf(%f,&a);f=fun(a);printf(%f\n,f);}无返回值#includestdio.hvoidfun(floatx){floatm;m=x*x-5*x+4;printf(%f\n,m);}voidmain(){floata;scanf(%f,&a);fun(a);}2.编写函数,按如下递归公式求函数值。1(n=0)fun(n)=1)1(2nfun(n0)#includestdio.hintfun(intn){