




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计上机指导答案实验一参考答案四 1、 Hello, world ! Welcome to the C language world! Everyone has been waiting for. 2、 a+b=579579五 1、 b=2; 2、 int a; 3、 area六 x=5,y=8, 改为x=5,y=8;七写程序1、编写程序输出用6颗星构成的等边三角形。main()printf( * n);printf( * * n);printf(* * *n);2、 编写程序求25和5两个整数的和与差。main()int a,b,c,d;a=10;b=20;c=35;d=(a+b+c)/3;printf(%dn,d);实验二参考答案:一1、 A , 65 B, 66 2、 x=1,y=1,z=53、 a=%d,b=%d二1、 char a;int b; 2、 a,a,a 3、a=865 a,h,m 4、 u=2*sqrt(a)+b-10; “%fn”三1、 第1行 ch1=a; 改为char ch1=a; 第2行 ch2=98; 改为char ch2=98;2、 第7行 w=x%y; 改为w=x/y;3、 int u=v=89; 改为int u,v; u=v=89;4、 第3行改为scanf(“%d,%d”,&x,&y); /格式字符串有错。 第5行改为printf(The average is %d:a); /格式字符串有错。四 写程序1、编程求的和(精确到小数点后两位)。main( ) float i;i=1.0/2+1.0/3+1.0/4; printf(%7.2f,i);2、鸡兔同笼。总头数head=60,总脚数feet=160。编程求鸡、兔各多少只。main( ) int h=60,f=160;int r,c;r=(f-2*h)/2;c=h-r;printf(n%d,%d,c,r);3、输入圆半径(5),输出圆的面积。main( )float r; 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 )=0 2、(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、 正确。输入数字字符:5 5对应的数字为:53四写程序1、 设j=6,求表达式 (j+)-3的值和此时j的值。#includemain( )int j=6;int i;i=-(j+)-3;printf(i=%d,j=%d,i,j);2、 设a=10,求表达式a%=a+=a-=a*a的值。#includemain( )int a=10;printf(n%d,a%=a+=a-=a*a);实验四 参考答案:一1、 output integer,17, 17,17 ,00000171234.567017,1234.57 2、 x=12,y=5 3、 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行 加int j=6 2、7行 m=100*a+10*b+c 改为m=100*c+10*b+a;四写程序 编程求出某学生期末三门课程的总分及平均分。结果保留小数点后一位。main( ) float a,b,c;float s,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=1 a2=1 b1=0 b2=14、x=25、输入1答案1 2 3 4 输入3答案3 4二1、ch=A&chc& c+ba& c+a b a= =b&b= =c a= =b|b= =c |a= =c三2、错误在 行应改为:if (x3&x-1&x0) y=x+3;4、错误在1-6行应改为: int x ,y ,w; scanf(%d ,&x); w=x=0; switch(w) case 1: y=2; break; case 0: y=-2; break; printf(y=%dn , y); 四输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E方法一:(用if嵌套)分析:由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0100之间。#includestdio.hmain() int score; char grade; printf(nplease input a student score:); scanf(%f,&score); if(score100|score=90) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; else grade=E; printf(nthe student grade:%c,grade); 输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。方法二:用switch语句分析:switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。#includestdio.hmain()int g,s;char ch;printf(ninput a student grade:);scanf(%d,&g);s=g/10;if(s10) printf(ninput error!);else switch (s) case 10: case 9: ch=A; break; case 8: ch=B; break; case 7: ch=C; break; case 6: ch=D; break; default: ch=E; printf(nthe student scort:%c,ch); 实验六 参考答案:一1、a=3,b=72、x=5y=0z=0二1、n%10; n = n/10;2、n*=2 count+三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()int day,x,y;day=9;y=1;while(day0)x=(y+1/)2;y=x;day-;printf(“totall=%dn”,x);实验七 参考答案:一1、 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 2、k=23、m=3二1、 for( k = 0;k=100;k+) 10*k+20*i+50*j=100 2、m=n; m=m/10;三1、错误在 7 行应改为:if (i=100)break;2、错误在 3 行应改为:for(j=1;j=5;j+)3、第3行改为for(; 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(sum is :%ldn,sum); 没有变化四1、main()float sn=80,hn=sn/2;int n;for(n=2;n=10;n+)sn=sn+2*hn; hn=hn/2;printf(%fm,%fmn,sn,hn);2、main()int i;double m=100000,n,s;n=0.01;s=0;for(i=1;i=30;i+)s+=n;n=n*2; printf(%f %fn,s,m*30 );实验八 参考答案:一1、s=123452、7, 5, 3,3、=6二1、% for(j=k;j0;j-)2、 ai%2=0 ai三1、 错在第1行应改为: int a 4 = 0 ;:2、 错在第2,3,4行应改为: for ( i =1 ; i =10 ; i + +) scanf ( “%d“, &ai);a 0 = a 0 + a i ;3、第二行改为int i,n=10,a10,av=0;第4行改为scanf(%d,&ai); 第12行改为printf(av=%dn,av);四1、分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,取出其中两种作为参考。 方法一:起泡排序 从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。 源程序如下: #define N 10 #includestdio.h main() int aN,i,j,temp; printf(please input %d numbersn,N); for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN-1;i+) for(j=0;jaj+1) temp=aj; aj=aj+1; aj+1=temp; printf(the array after sort:n); for(i=0;iN;i+) printf(%5d,ai); 方法二:选择排序 首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。 #includestdio.h #define N 10 main() int aN,i,j,r,temp; printf(please input %d numbersn,N); for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN-1;i+) r=i; for(j=i+1;jN;j+) if(ajar) r=j; if(r!=i) temp=ar; ar=ai; ai=temp; printf(the array after sort:n); for(i=0;iN;i+) printf(%5d,ai); printf(n); 2、#define N 6 main() int i,j,sum=0; int aNN=0; printf(input 55 data:n); for(i=1;iN;i+) printf(Input the %d line data:n,i); for(j=1;jN;j+) scanf(%d,&aij); for(i=1;iN;i+) for(j=1;jN;j+) printf(%5d,aij); printf(n); for(i=1;iN;i+) for(j=1;j0 或 strcmp(temp,str)=0 ; i - - )3、在main()函数前加#include 第1行应改为char a10,b10,ch;第8-10行改为:if(cd)for(k=0;kd;k+) ch=ak;ak=bk;bk=ch;for(k=d;kc;k+)bk=ak;bk=0;ad=0;四1、#include main()char s80,c1,c2= ;int i=0,num=0;gets(s);while (si!=0)c1=si;if(i=0)c2= ;else c2=si-1;if(c1!= &c2= )num+;i+;printf(There are %d wards.n,num); 2、#include main()char a80,c; int i=0,n; gets(a); n=strlen(a); for(i=0;i=n/2;i+) c=ai;ai=an-1-i;an-1-i=c;puts(a); 实验十 参考答案:一1、382、3,5,5,33、9二1、double max(double a,double b);2、z=z*x; main()int a,b; scanf(“%d%d”,&a,&b); printf(“%f”,fun(a,b); 三1、错误在1行应改为:float func ( float a , float b );四void select()int i,j;for(i=0;i10;i+)for(j=0;j10;j+) if(i*10+j)%3=0)&(i=5|j=5)printf(%d,i*10+j);main()select();实验十一 参考答案:一 1、wlo2、k=133、22 4、10.0二1、 stri i char s80;scanf(%s,s); printf(nlen=%dn,mystrlen(s);2、 xx*x*x+1三 1、 3行 si&tj 改成 si+&tj+2、 7行 c = age (n-1)+2 ; 改成 if(n=1) c=10; else c=age(n-1)+2;3、可能的修改程序:#include int sum(int a, int b) /函数可以嵌套定义吗?return(a+b);void main(void)int x, y;/x = 1;/y = 2;scanf(%d,%d,&x,&y);printf(%dn, sum(x, y);四file1.cmain() int a10,i,c,d; for(i=0;i10;i+) scanf(%d,&ai); max(a); scanf(%d %d,&c,&d); yue(c,d);file2.cmax(int a) int i; int m=a0,n=a0; for(i=1;i10;i+) if(mai) n=ai; printf(the max is %dn,m); printf(the min is %dn,n);file3.cyue(int m,int n) int temp,p,r; if(nm) temp=n;n=m;m=temp; p=n*m; while(m!=0) r=n%m; n=m; m=r; printf(the max comm is %dn,n); printf(the min com is %dn,p/n);实验十二 参考答案一1、 2 6 422、 40,363、 50,50,15,25二1、 func(x);2、 f = f*n;3、 extern a, b ;三float Max=0,Min=0;float average(float a,int n)int i;float aver,sum=a0;Max=a0;Min=a0;for(i=1;iMax) Max=ai; else if(aiMin) Min=ai; sum=sum+ai; aver=sum/n; return(aver);main()float ave,wage30;int i;for(i=0;i30;i+) scanf(%f,&wagei);ave=average(wage,30);printf(Max=%6.2fnMin=%6.2fnAverage=%6.2fn,Max,Min,ave);实验十三参考答案:一1、sum=122、s=503、a=20,204、k=0 k=1 k=3 k=6 k=105、n1=1,n2=86、 2 6 8二1、scanf(“%c”, &a) printf(“%c”,b)2、s *= *(p+i);三1、错误在 4行应改为:p=&a;q=&b; scanf(%d,%d, p ,q);2、错误在 6行应改为:p=a错误在 7行应改为: while( p b)t=a;a=b;b=t;main() int t,x,y,z; scanf(%d%d%d,&x,&y,&z); select(x,y) select(x,z) select(y,z) printf(%d %d %dn ,x,y,z); 2、#define N 15 search(int a,int n,int x)int mid,top,bot,i,find;top=0;bot=n-1;find=0;domid=(top+bot)/2;if(x=amid) printf(find:%3d,it is a%2d,x,mid); find=1;else if(xamid) top=mid+1;while(top=bot)&(find=0);if(find=0)printf(NO FIND);main()int a100,x,i;printf(input the numbers:);for(i=0;iN;i+)scanf(%d,&ai);printf(input x to look for:);scanf(%d,&x);search(a,N,x);实验十四参考答案:一 1、 2,4,6,8,10,12,14,16,18,20 20,18,16,14,12,10,8,6,4,2 2、 6二 1、 *sptr+2、 pa+,pb+*pa=*pb;mystrcat(a,b);三1、 8 行 pa=va0;pb=vb0; 改成 pa=&va0;pb=&vb0; 2、 14 行 p=p1;p1=p2;p2=p; 改成 strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p) 四#include main()char *week=Monday,Tuesday,Wednesday,Friday,Tuesday,Saturday,Sunday; int n; printf(nWeekday:);scanf(%d,&n);if (n=1&nx,(+p)-x);重新运行程序结果为4 二1、scanf(“%x”,&val,n) 2、s=(struct node *) malloc (sizeof(node); 3、pd-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 委托室试题及答案
- 外国文学作品试题及答案
- 涂装试题库及答案
- 2025年机油采购协议范例
- 2025官方电子版借款协议
- 2025年财产调整协议标准文本
- 2025年婚前财产明确协议格式
- 2025年建筑分包策划工程质量保障协议
- 2025年志愿服务质量管理协议
- 高等教育改革与产教融合发展的面临的问题、机遇与挑战
- 新人培训:非车险基础知识
- 课标视角下数学跨学科项目式学习案例设计与思考
- 国开《离散数学》大作业及答案
- 离婚协议专用(2025年版)
- 离婚协议书 标准版电子版(2025年版)
- DB11∕T2341-2024城市轨道交通车辆主动式障碍物检测系统应用技术要求
- 物业客服服务沟通技巧培训课件
- 污水处理设施运维服务投标方案(技术标)
- 安全总监竞聘上岗
- 【道法】做自信的人课件 2024-2025学年统编版道德与法治七年级下册
- 污泥处置年产54000吨生物质燃料原材料项目可行性研究报告模板
评论
0/150
提交评论