您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > c程序设计实验参考答案
《C程序设计上机指导》答案实验一参考答案四.1、Hello,world!WelcometotheClanguageworld!Everyonehasbeenwaitingfor.2、a+b=579579五.1、b=2;2、inta;3、area六.x=5,y=8,改为x=5,y=8;七.写程序1、编写程序输出用6颗星构成的等边三角形。main(){printf(*\n);printf(**\n);printf(***\n);}2、编写程序求25和5两个整数的和与差。main(){inta,b,c,d;a=10;b=20;c=35;d=(a+b+c)/3;printf(%d\n,d);}实验二参考答案:一.1、A,65B,662、x=1,y=1,z=53、a=%d,b=%d二.1、chara;intb;2、a,a,a3、a=865a,h,m4、u=2*sqrt(a)+b-10;“%f\n”三.1、第1行ch1=’a’;改为charch1=’a’;第2行ch2=98;改为charch2=98;2、第7行w=x%y;改为w=x/y;3、intu=v=89;改为intu,v;u=v=89;4、第3行改为scanf(“%d,%d”,&x,&y);//格式字符串有错。第5行改为printf(Theaverageis%d:a);//格式字符串有错。四.写程序1、编程求111234的和(精确到小数点后两位)。main(){floati;i=1.0/2+1.0/3+1.0/4;printf(%7.2f,i);}2、鸡兔同笼。总头数head=60,总脚数feet=160。编程求鸡、兔各多少只。main(){inth=60,f=160;intr,c;r=(f-2*h)/2;c=h-r;printf(\n%d,%d,c,r);}3、输入圆半径(5),输出圆的面积。main(){floatr;scanf(“%f”,&r);s=3.14159*r*r;printf(\n%d,s);}实验三参考答案:一.1、2.4*x-1/2=23.500000x%2/5–x=-10.000000y=(x-=x*10,x/=10)=02、(1)9,11,9,10(2)9,11,8,11(3)8,10(4)9,11(5)9,11,8,10(6)9,9,8,-9二.1、a%=(b/=2)2、c=(char)i;三.1、5行printf(%f,%c,%d,u-v,u+v,w)改为printf(“%d,%d,%d”,u-v,u+v,w);2、4行n=int(f+20)%3;改为n=(int)(f+20)%3;3、正确。输入数字字符:55对应的数字为:53四.写程序1、设j=6,求表达式–(j++)-3的值和此时j的值。#includestdio.hmain(){intj=6;inti;i=-(j++)-3;printf(i=%d,j=%d,i,j);}2、设a=10,求表达式a%=a+=a-=a*a的值。#includestdio.hmain(){inta=10;printf(\n%d,a%=a+=a-=a*a);}实验四参考答案:一.1、outputinteger,17,17,17,00000171234.567017,1234.572、x=12,y=53、x=-45.200001,k1=-35y=1.100000,k2=11二.1、c2=c1-32;2、c=(a+b)*4/(a*b);3、s=a*pow(1+p,n)―a;三.1、2行加intj=62、7行m=100*a+10*b+c改为m=100*c+10*b+a;四.写程序编程求出某学生期末三门课程的总分及平均分。结果保留小数点后一位。main(){floata,b,c;floats,v;scanf(%f,%f,%f,%f,&a,&b,&c);s=a+b+c;v=s/3.0;printf(\n%7.1f,%7.1f,s,v);}实验五参考答案一.1、a=10,b=30,c=102、-23、a1=1a2=1b1=0b2=14、x=25、输入1答案1234输入3答案34二.1、ch=’A’&&ch=’Z’ch=ch-322、a+bc&&c+ba&&c+aba==b&&b==ca==b||b==c||a==c三.2、错误在行应改为:if(x3&&x=9)y=x*(x+2);错误在4行应改为:elseif(x-1&&x=3)y=2*x;3、错误在5行应改为:{if(x0)y=x+3;}4、错误在1--6行应改为:{intx,y,w;scanf(%d,&x);w=x=0;switch(w){case1:y=2;break;case0:y=-2;break;}printf(y=%d\n,y);}四.输入某学生的成绩,经处理后给出学生的等级,等级分类如下:90分以上(包括90):A80至90分(包括80):B70至80分(包括70):C60至70分(包括60):D60分以下:E方法一:(用if嵌套`)分析:由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。#includestdio.hmain(){intscore;chargrade;printf(\npleaseinputastudentscore:);scanf(%f,&score);if(score100||score0)printf(\ninputerror!);else{if(score=90)grade='A';else{if(score=80)grade='B';else{if(score=70)grade='C';else{if(score=60)grade='D';elsegrade='E';}}}printf(\nthestudentgrade:%c,grade);}}输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。方法二:用switch语句分析:switch语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。#includestdio.hmain(){intg,s;charch;printf(\ninputastudentgrade:);scanf(%d,&g);s=g/10;if(s0||s10)printf(\ninputerror!);else{switch(s){case10:case9:ch='A';break;case8:ch='B';break;case7:ch='C';break;case6:ch='D';break;default:ch='E';}printf(\nthestudentscort:%c,ch);}}实验六参考答案:一.1、a=3,b=72、x=5y=0z=0二.1、n%10;n=n/10;2、n*=2count++三.1、错误在2行应改为:while(k!=0)2、错误在6行应改为:{s=s+1.0/n;4、(1)第10行应改为x=x*i1+1++1/2+1/(2*3)+1/(2*3*4)+……(2)当detax1时,不进入循环不会只循环一次当detax=1时,循环2次当detax=0时,进入死循环为了能知道程序循环次数,应在程序第15行后加语句printf(\n%d,i-1);(3)(4)死循环(5)没变化四.main(){intday,x,y;day=9;y=1;while(day0){x=(y+1/)2;y=x;day--;}printf(“totall=%d\n”,x);}实验七参考答案:一.1、1223334444555552、k=23、m=3二.1、for(k=0;k=100;k++)10*k+20*i+50*j==1002、m=n;m=m/10;三.1、错误在7行应改为:if(i==100)break;2、错误在3行应改为:for(j=1;j=5;j++)3、第3行改为for(;i=20;i++)第6行改为printf(sumis:%ld\n,sum);(1)若i20,j3,则不循环若i=20,j3,则外循环1次,不进入内循环若i=20,j=3,则内外循环各1次若i=20,j=2,则外循环1次,内循环2次若i=19,j=3,则外循环2次,内循环1次若i=2,j=1,则外循环19次,内循环3次若i=1,j=2,则外循环20次,内循环2次若i=0,j=1,则外循环21次,内循环3次(2)外循环20次,内循环3次(4)第3行改为for(i=1;i=20;i++)第7行改为sum=sum+(i+1)*(i+1)*k;第9行改为printf(sumis:%ld\n,sum);没有变化四.1、main(){floatsn=80,hn=sn/2;intn;for(n=2;n=10;n++){sn=sn+2*hn;hn=hn/2;}printf(%fm,%fm\n,sn,hn);}2、main(){inti;doublem=100000,n,s;n=0.01;s=0;for(i=1;i=30;i++){s+=n;n=n*2;}printf(%f%f\n,s,m*30);}实验八参考答案:一.1、s=123452、7,5,3,3、1,2=6二.1、%for(j=k;j0;j--)2、a[i]%2==0a[i]三.1、错在第1行应改为:inta[4]={0};:2、错在第2,3,4行应改为:for(i=1;i=10;i++){scanf(“%d“,&a[i]);a[0]=a[0]+a[i];}3、第二行改为inti,n=10,a[10],av=0;第4行改为scanf(%d,&a[i]);第12行改为printf(av=%d\n,av);四.1、分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,取出其中两种作为参考。方法一:起泡排序从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。源程序如下:#defineN10#includestdio.hmain(){inta[N],i,j,temp;printf(pleaseinput%dnumbers\n,N);for(i=0;iN;i++)scanf(%d,&a[i]);for(i=0;iN-1;i++)for(j=0;jN-1-i;j++){if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}printf(thearrayaftersort:\n);for(i=0;iN;i++)printf(%5d,a[i]);}方法二:选择排序首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。#includestdio.h#defineN10main(){inta[N],i,j,r,temp;printf(pleaseinput%dnumbers\n,N);for(i=0;iN;i++)scanf(%d,&a[i]);for(i=0;
本文标题:c程序设计实验参考答案
链接地址:https://www.777doc.com/doc-2907575 .html