c实验报告1参考答案.doc_第1页
c实验报告1参考答案.doc_第2页
c实验报告1参考答案.doc_第3页
c实验报告1参考答案.doc_第4页
c实验报告1参考答案.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高级语言程序设计实验报告 班级: 学号: 姓名: 成绩: 实验1熟悉Visual C+6.0环境及运行C程序一、实验目的1掌握在Visual C+6.0环境下C程序的建立、编辑、编译和执行过程。2掌握C程序的最基本框架结构,完成简单程序的编制与运行。3了解基本输入输出函数scanf()、printf ()的格式及使用方法。4掌握发现语法错误、逻辑错误的方法以及排除简单错误的操作技能。二、实验内容1下列程序的功能是:从键盘输入两个数a和b,求它们的平方和,并在屏幕上输出。输入该C程序,编译并运行之,记下屏幕的输出结果,以文件名sy1_1.c保存。#include main() int a,b,sum; /*定义整型变量a、b、sum */printf(Please Input a,b n ); /*输出提示信息*/scanf(%d%d,&a,&b); /*从键盘输入两个整数分别赋予a和b*/sum=a*a+b*b; /*赋值语句,把a2+b2的结果赋给变量sum*/printf(%d*%d+ %d*%d=%dn,a,a,b,b,sum); /*输出语句*/该程序的运行结果:Please Input a,b2 42*2+4*4=202 改错题在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。(1)下列程序的功能为:计算x*y的值并将结果输出。试纠正程序中存在的错误,以实现其功能。程序以文件名sy1_2.c保存。#include main main() int x=2;y=3;a int x=2;y=3;a;A=x*y a=x*y;print (a=%d,A); printf (a=%d,a);printf(n);该程序的运行结果:a=6(2)下程序的功能为:求两数中的较大数据并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy1_3.c保存。#include viod main() void main() int a ,b , max;Scanf(“%d,%d”,&a,&b); scanf(“%d,%d”,&a,&b);Max=a; max=a;If(maxb) max=b; if(maxb) max=b;Printf(“max=%d”,max); printf(“max=%d”,max);该程序的运行结果:5,3max=5 3程序填空题(1)从键盘输入两个整数,输出这两个整数的和。根据注释信息填写完整程序,以实现其功能。以文件名sy1_4.c保存。#includemain() int x,y,total; /* 定义整型变量x,y,total*/printf(Please input x,y ! ); /* 输出提示信息 */ scanf(“%d%d”,&x,&y); /* 由键盘输入两个数分别赋予x和y*/total=x+y; /* 赋值语句 */printf(%d + %d=%dn,x,y,total); /* 输出两个整数的和 */该程序的运行结果:Please input x,y !2 42+4=6该程序的运行结果:Input a,b please !20 1720-17=3(2)从键盘输入两个整数,输出这两个整数的差。根据注释信息填写完整程序,以实现其功能。程序以文件名sy1_5.c保存。#includemain() int a,b,m; printf(Input a,b please ! ); scanf(%d%d,&a,&b); _m=a-b;_ /* 赋值语句,将a和b的差值赋给m */_printf(“%d-%d=%dn”,a,b,m);_ /* 输出a 和b差的结果值后换行 */ 4编程题(1)编程序,运行后输出如下信息:“Better City,Better Life!”。程序以文件名sy1_6.c保存。#include main() printf(Better City,Better Life!n); (2)编程序,从键盘输入3个整数,输出它们的平方和。程序以文件名sy1_7.c保存。#include main() int a,b,c,sum; printf(Please Input a,b,c n ); scanf(%d,%d,%d,&a,&b,&c); sum=a*a+b*b+c*c; printf(%d*%d+%d*%d+%d*%d=%dn,a,a,b,b,c,c,sum);该程序的运行结果:Please Input a,b,c2,3,42*2+3*3+4*4=29 实验2 数据类型、运算符和表达式一、实验目的1理解语言中各种数据类型的意义,掌握各种数据类型的定义方法。2掌握C语言常量、变量的定义与使用。3掌握C语言数据类型及运算符的使用规则。二、实验内容1改错题在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。(1)下列程序的功能为:已知圆锥半径r和高h,计算圆锥体积v。纠正程序中存在的错误,以实现其功能。程序以文件名sy2_1.c保存。计算圆锥体积的公式为:v=13r2h#include stdio.h #includemain(); main() float r=10,h=5; float r=10,h=5,v;v=1/3*3.14159*r2*h; v=1.0/3*3.14159*r*r*h;printf(v=%dn,v) printf(v=%dn,v);该程序的运行结果:v=523.598333(2)下列程序的功能为:通过键盘输入两个整数分别存放在变量x、y中,不借用第3个变量实现变量x、y互换值。纠正程序中存在的错误,以实现其功能。程序以文件名sy2_2.c保存。#include main()int x,y;printf(请输入两个整数n);scanf(%d%d,x, y); scanf(%d%d,&x, &y);printf(初始状态下的x:%d y: %dn,x,y ); x=x+y x=x+y;y=x-y;x=x-y; printf(最终状态下的x:%d y: %d/n,x,y);该程序的运行结果:请输入两个整数2 5初始状态下的x:2 y: 5最终状态下的x:5 y: 22程序填空题该程序的运行结果:61.176471(1) 计算当x=4时,公式2x2 的值。补充完善程序,以实现其功能。程序以文件名sy2_3.c保存。#include main()float x=4.0,y; y=(1+x*x*x)/(x*x+4*sqrt(x)+10)*2*x*x; printf(%f,y);(2) 下列程序的功能为:从键盘输入3个整数分别存入变量a、b、c,然后,将变量a的值存入变量b,将变量b的值存入变量c,将变量c的值存入变量a,输出经过转存后变量a、b、c的值。(提示:使用中间变量)补充完善程序,以实现其功能。程序以文件名sy2_4.c保存。该程序的运行结果:Please input a,b,c:1 2 3a=3b=1c=2#include main ()int a,b,c, t ;printf(Please input a,b,c: );scanf(%d%d%d, &a,&b,&c ); t=a ; a=c ; c=b ; b=t ;printf(a=%dnb=%dnc=%dn,a,b,c);3编程题(1)从键盘输入3个大写英文字母,把它们转换成小写字母后输出。程序以文件名sy2_5.c保存。该程序的运行结果:ABCabc#include main()char c1,c2,c3;scanf(%c%c%c,&c1,&c2,&c3);c1=c1+32;c2=c2+32;c3=c3+32;printf(%c%c%cn,c1,c2,c3);(2)从键盘输入3个整数,输出它们的平均值与积。程序以文件名sy2_6.c保存。#include main()int a,b,c,ji;float ave;printf(请输入3个整数n);scanf(%d%d%d,&a,&b,&c); ave=(a+b+c)/3.0;ji=a*b*c; printf(ave=%f,ji=%dn,ave,ji);该程序的运行结果:请输入3个整数2 4 6ave=4.000000,ji=48实验3 顺序结构程序设计一、实验目的1掌握scanf()、printf()以及其他常用输入、输出函数的使用。2掌握格式控制符的使用。3掌握顺序结构程序设计的方法。二、实验内容1改错题在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。该程序的运行结果:请输入一个华氏温度:75摄氏温度为:23.89(1)下列程序的功能为: 输入一个华氏温度,要求输出摄氏温度。公式为:C= ,输出取2位小数。纠正程序中存在的错误,以实现其功能。程序以文件名sy3_1.c保存。#include main()float c,f;printf(请输入一个华氏温度:n);scanf(%f,f); scanf(%f,&f);c=(5/9)*(f-32); c=(5.0/9)*(f-32);printf(摄氏温度为:%5.2fn c); printf(摄氏温度为:%5.2fn, c);(2)下列程序的功能为:按下列公式计算并输出x的值。其中a和b的值由键盘输入。纠正程序中存在的错误,以实现其功能。程序以文件名sy3_2.c保存。该程序的运行结果:4,6x=0.480000 #include main() int a,b; float x; scanf(%d,%d,a,b); scanf(%d,%d,&a,&b); x=2ab/(ab)(ab); x=2.0*a*b/(ab)*(ab); printf(x=%dn,x); printf(x=%fn,x); 该程序的运行结果:aa,97A,65(3)下列程序的功能为:从键盘输入一个小写字母,要求改用大写字母输出。请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy3_3.c保存。#include main() char c1,c2; c1=getchar; c1=getchar(); /* 从键盘输入一个小写字母 */ printf(%c,%dn,c1,c1); c2=c1+26; c2=c1-32; /* 转换为大写字母 */ printf(%c,%dn,c2,c2); /* 输出大写字母及其ASCII码值 */2程序填空题(1)下列程序的功能为:按给定格式输入数据,按要求格式输出结果。补充完善程序,以实现其功能。程序以文件名sy3_4.c保存。该程序的运行结果:enter x,y:2 3.4x+y=5.4输入形式 enter x,y:2 3.4输出形式 x+y=5.4#include main() int x;float y;printf (enter x,y: ); scanf(%d%f,&x,&y); printf(x+y=%.1fn,x+y);(2) 下列程序的功能为:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后位数字。(周长l=2,圆面积s=,圆球表面积sq=,圆球体积vq=;圆柱体积vz=),请补充完善程序,以实现其功能。程序以文件名sy3_5.c保存。#include main()float pi,h,r,l,s,sq,vq,vz;pi=3.1415926;printf(请输入圆半径r,圆柱高h:n); scanf(%f%f,&r,&h) ;l= 2*pi*r ;s= pi*r*r ;sq= 4*pi*r*r ;vq= 4.0/3*pi*r*r*r ;该程序的运行结果:请输入圆半径r,圆柱高h:1.5 3圆周长为:9.42圆面积为:7.07圆球表面积为:28.27圆球体积为:14.14圆柱体积为:21.21vz= pi*h*r*r ;printf(圆周长为:%.2fn,l );printf(圆面积为:%.2fn, s );printf(圆球表面积为:%.2fn, sq );printf(圆球体积为:%.2fn, vq );printf(圆柱体积为:%.2fn, vz );该程序的运行结果:请输入x,y:3 5交换后的x:5 y:3(3) 下列程序的功能为:通过键盘输入两个整数,分别存入变量x、y中,当xy时,通过中间变量t互换x、y之值,并输出。补充完善程序,以实现其功能。程序以文件名sy3_6.c保存。#include main() int x,y,t; printf(请输入x,y:n); scanf(%d%d,&x,&y) ; if (xy) /*如果xy */ t =x ; x=y ; y=t; /* x与y交换 */ printf(交换后的x:%d y:%d n,x,y);3编程题(1)编写一个程序实现如下功能:从键盘输入3个字符,然后在屏幕上分3行输出该3个字符。程序以文件名sy3_7.c保存。该程序的运行结果:ABCABC#include main() char c1,c2,c3; c1=getchar(); c2=getchar(); c3=getchar(); putchar(c1); putchar(n); putchar(c2); putchar(n); putchar(c3); putchar(n);(2)编写一个程序实现如下功能:输入一元二次方程ax2+bx+c=0的系数a、b、c,求方程的根。要求:运行该程序时,输入a、b、c的值,分别使b2-4ac的值大于、等于和小于零,观察并分析运行结果。程序以文件名sy3_8.c保存。求根公式如下:该程序的运行结果:a=1,b=3,c=2x1=-1.00x2=-2.00.x=-bb2-4ac2a #include #include void main() float a,b,c,disc,x1,x2,p,q; scanf(a=%f,b=%f,c=%f,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%5.2fnx2=%5.2fn,x1,x2);实验四 选择结构程序设计(解答)1改错题(1)下列程序的功能为:输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c保存。该程序的运行结果:Enter a character:gFGH#include main() char ch,c1,c2; printf(Enter a character:); ch=getchar();if(ch=a)|(ch=a)&(ch=z) ch-=32; c1=ch-1; c2=ch+1;if(ch=A) / if(ch=A)c1=ch+25;else if(ch=Z) / else if(ch=Z) c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar(n);改正后的程序:#include main() char ch,c1,c2; printf(Enter a character:); ch=getchar(); if(ch=a)&(chb) if (ba) max=c; /* cba */else /* bc */if (ca) max=b; /* bca */printf(3个数中最大者为:%dn,max);改正后的程序:#include stdio.hmain()int a,b,c,max;printf (请输入3个整数:n);scanf (%d%d%d,&a,&b,&c);max=a;if (cb) if (ca) max=c; else if (ba) max=b; printf(3个数中最大者为:%dn,max);(3)下列程序的功能为:输入1-4月份号,输出该月份对应的英语表示法。例如,输入“3”,则输出“Mar”。纠正程序中存在错误,以实现其功能。程序以文件名sy4_3.c保存。#include stdio.hmain()该程序的运行结果:input the month number:2Feb char m; printf(“input the month number:n”); scanf (“%c”,&m); switch (m) case 1:printf (“Jan”); case 2:printf (“Feb”); case 3:printf (“Mar”); case 4:printf (“Apr”); 改正后的程序:改法一#include stdio.hmain() char m; printf(input the month number:n); scanf (%d,&m); switch (m) case 1:printf (Jan);break; case 2:printf (Feb);break; case 3:printf (Mar);break; case 4:printf (Apr); 改法二#include stdio.hmain() char m; printf(input the month number:n); scanf (%c,&m); switch (m) case 1:printf (Jan);break; case 2:printf (Feb);break; case 3:printf (Mar);break; case 4:printf (Apr); 2程序填空(1) 下列程序的功能为:判断从键盘上输入的一个字符,并按下列要求输出。若该字符是数字 输出字符串0-9若该字符是大写字母 输出字符串A-Z若该字符是小写字母 输出字符串a-z若该字符是其他字符 输出字符串!,补充完善程序,以实现其功能。程序以文件名sy4_4.c保存。 #include 该程序的运行结果:da-z main() char c; scanf(_%c, &c _); if(0=c&c=A & c =Z_) printf(A-Zn); _ else if _(a=c&c=z) printf(a-zn); _ else _ printf(!,n);该程序的运行结果:Please input a expression:2*62*6=12(2)下列程序的功能为:实现加、减、乘、除四则运算。补充完善程序,以实现其功能。程序以文件名sy4_5.c保存。#include main() int a,b,d; char ch; printf(Please input a expression:); scanf(%d%c%d, &a,&ch,&b ); switch(ch) case +:d=a+b; printf(%d+%d=%dn,a,b,d); break; case -:d=a-b; printf(%d-%d=%dn,a,b,d); break; case *:d=a*b; printf(%d*%d=%dn,a,b,d); break; case /: if( b=0 ) printf(Divisor is zeron); else printf(%d/%d=%fn,a,b,( float )a/b); /*强制类型转换*/ break; default: printf(Input Operator error!n); (3)下列程序的功能为:猜价格,用户输入自己估计的价格,程序判断其正确性。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_6.c保存。#include stdio.hmain()该程序的运行结果:请主持人输入时尚手机的实际价格1500请观众猜时尚手机的价格1450低了float a,b; printf(请主持人输入时尚手机的实际价格n); scanf(%f,&b); printf(nn请观众猜时尚手机的价格n); scanf(%f,&a); if( ab ) printf(高了n);3编程题(1)从键盘输入三个整数,输出这三个整数的和、平均值(保留2位小数)、积、最小值以及最大值。程序以文件名sy4_7.c保存。参考源程序#include main() int sum=0, a, b, c, max, min;long ji=0; float ave; printf(输入三个整数:(a=? b=? c=?)n); scanf(a=%d b=%d c=%d, &a, &b, &c); sum=a+b+c; ave=sum/3.0; ji=a*b*c; max=(ab?a:b)c)?(ab?a:b):c; min=a; if (bmin) min=b;if(cmin)min=c;printf(a+b+c=%d a*b*c=%ld ave=%.2f, sum,ji, ave); printf(nmax=%d min=%dn, max, min);(2)有一分段函数如下,要求用scanf函数输入x的值,求y值并在屏幕上输出。程序以文件名sy4_8.c保存。 0 x5 y = x-1 5x15 6x21 x15参考源程序#includevoid main() float x,y; scanf(%f, &x); if(x5) y=0; else if(x15) y=x-1; else y=6*x*x-1; printf(x=%f, y=%fn, x,y); (3)从键盘输入一个数字06,输出相应星期几的英文单词,其中数字0对应Sunday,数字16对应MondaySaturday,如果输入的不是06的数字,则显示错误信息。程序以文件名sy4_9.c保存。参考源程序#include main() int m; printf(请输入数字(0-6):); scanf (%d,&m); switch (m) case 0:printf (Sunday );break; case 1:printf (Monday );break; case 2:printf (Tuesday );break; case 3:printf (Wednesday );break; case 4:printf (Thursday );break; case 5:printf (Friday );break; case 6:printf (Saturday );break; default:printf (数据输入错误。); 实验5 循环结构程序设计一、实验目的1掌握循环结构程序设计的3种控制语句while语句、dowhile语句、for语句的使用方法。2了解用循环的方法实现常用的算法设计。二、实验内容1改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。)该程序的运行结果:The sum from 1 to 100 is 5050(1)下列程序的功能为:求1100之和(和值为5050)并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_1.c保存。#include main() int i,sum=0; i=1; while(i100) while(i=100) sum=sum+i; sum=sum+i; i+; i+; printf(“The sum from 1 to 100 is %dn”,sum); 该程序的运行结果:(2)下列程序的功能为:倒序打印26个英文字母。纠正程序中存在的错误,以实现其功能,程序以文件名sy5_2.c保存。#include main() char x; x=z; while(x!=a) while(x!=a-1)或while(x=a) printf(%3d,x); printf(%3c,x); x+; x- -; (3)下列程序的功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第一行和最末行为止。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_3.c保存。例如,输入字母D,打印出如下图形:#include main() int i,j,k; char ch; scanf(%c,&ch); k=ch-A+1; for (i=1;i=i;j-) printf(%c, ); for (j=1;j=i-1;j+) for (j=1;j=1;i-) for (i=20;i=i;i-) for (j=20;j=i;j-) printf(%c, ); for (j=1;j2*i-1;j+) for (j=1;j=2*i-1;j+) printf(%c,A+i-1); printf(n); 2程序填空题(1)用辗转相除法求两个正整数的最大公约数和最小公倍数。补充完善程序,以实现其功能,程序以文件名sy5_4.c保存。该程序的运行结果: #include main () int r, m, n,k, t ; scanf (%d%d,&m,&n); if (mn) t=m;m=n;n=t; /*交换两数*/ k=m*n;r = m%n; while (r) m=n;n=r;r= m%n ; printf (%d %dn, n , k/n ); /*输出最大公约数和最小公倍数*/(2)假设有1020个西瓜,第一天卖了一半多两个,以后每天卖剩的一半多两个,求几天后能卖完。补充完善程序,以实现其功能。程序以文件名sy5_5.c保存。#include main( ) int day,x1,x2; day=0; x1=1020; while( x10 ) 该程序的运行结果:该程序的运行结果:day=8该程序的运行结果: x2= x1/2-2 ; x1=x2;day+; printf(day=%dn,day); (3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数.补充完善程序,以实现其功能。程序以文件名sy5_6.c保存。#include main() int i,j; for(i=0; _ i10 _; i+) j=i*10+6; if (_ i%3!=0 _) continue; printf(%d,j); 3编程题(写出程序运行结果)(1)计算1100之间所有含8的数之和。程序以文件名sy5_7.c保存。参考程序:#include main() int i, sum=0; for(i=1; i=100; i+) if(i%10=8 | i/10=8) sum+=i; printf(sum=%dn,sum);(2)编写程序,利用下列近似公式计算e值,误差应小于10-5。程序以文件名sy5_8.c保存。该程序的运行结果:参考程序:#include main() int i=0 ; long n=1; float e=0, t=1; while(t1e-5) e+=t;i+;n*=i;t=1.0/n; printf(e=%fn,e);(3)某学校有近千名学生,在操场上排队,若5人一行余2人,7人一行余3人,3人一行余1人。编写程序,求该校的学生总人数。程序以文件名sy5_9.c保存。该程序的运行结果:该程序的运行结果:参考程序:#include main() int i; for(i=900;i=1000;i+)if(i%5=2&i%7=3&i%3=1)break;printf(学生总人数=%dn,i); (4)从键盘输入N个学生的学号和每人M门课程的成绩,计算每个学生的总分及平均分。输出内容包括每个学生的学号、总分和平均分。程序以文件名sy5_10.c保存。#includevoid main()int i,j,n,m,no,score,sum;float ave;printf(输入学生数和每人课程数:);scanf(%d%d,&n,&m);for(i=1;i=n;i+) sum=0;printf(输入第%d个学生的学号: ,i);scanf(%d,&no); printf(输入第%d个学生的%d门课程成绩: ,i,m); for(j=1;j=m;j+) scanf(%d,&score); sum+=score;ave=(float)sum/m; printf(n*第%d个学生的学号为:%d 总分为:%d 平均分为:%.2fnn,i,no,sum,ave);实验6 数组程序设计一、实验目的1 掌握一维数组和二维数组的定义、赋值和输入输出的方法。2 掌握字符数组和字符串函数的使用。3 掌握与数组有关的算法。二、实验内容 1改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。)(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_1.c保存。该程序的输出结果:#includevoid main()int n=10,i,sum=0; int an; int a10; for(i=0;i10;i+) scanf(%d,ai); scanf(%d,&ai); sum=sum+ai;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论