高级语言程序设计实验与练习答案.docx
- 文档编号:16411418
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:22
- 大小:35.35KB
高级语言程序设计实验与练习答案.docx
《高级语言程序设计实验与练习答案.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计实验与练习答案.docx(22页珍藏版)》请在冰点文库上搜索。
高级语言程序设计实验与练习答案
实验一
(1)C程序运行环境及简单程序的运行
(解答)
P23
1.编辑、运行简单的C程序
下面是一个简单的C程序,请输入、编译并运行之,观察并记下屏幕的输出结果,最后以文件名存盘。
#include<>
main()
{
inta,b,sum,m,f;/*定义整型变量a,b,sum,m,f*/
floatd;/*定义实型变量d*/
printf("PleaseInputa,b\n");/*输出语句*/
scanf("%d%d",&a,&b);/*输入语句由键盘输入两个数分别赋予a和b*/
sum=a+b;/*赋值语句*/
m=a-b;
f=a*b;
d=a/;
printf("%d+%d=%d\n",a,b,sum);/*输出语句*/
printf("%d-%d=%d\n",a,b,m);
printf("%d*%d=%d\n",a,b,f);
printf("%d/%f=%f\n",a,2,d);
}
运行结果:
2.改错题
(1)下列程序的功能为:
计算x*y的值并将结果输出;请纠正程序中存在错误(程序中有8处错误),使程序实现其功能,程序以文件名存盘。
#include<>
main
f\n",x+y);
}
(2)下列程序的功能为:
设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
(周长l=2
,圆面积s=
,圆球表面积sq=
,圆球体积vq=
;圆柱体积vz=
)
请填写适当的符号或语句,使程序实现其功能,程序以文件名存盘。
#include<>
main()
{
floatpi,h,r,l,s,sq,vq,vz;
pi=;
printf("请输入圆半径r,圆柱高h:
\n");
scanf("%f%f",&r,&h);;
l=2*pi*r;
s=pi*r*r;
sq=4*pi*r*r;
vq=4*pi*r*r*r;
vz=pi*h*r*r;
printf("圆周长为:
%.2f\n",l);
printf("圆面积为:
%.2f\n",s);
printf("圆球表面积为:
%.2f\n",sq);
printf("圆球体积为:
%.2f\n",vq);
printf("圆柱体积为:
%.2f\n",vz);
}
(3)下列程序的功能为:
通过键盘输入两个整数,分别存入变量x,y中,当x小于y时,通过中间变量t互换x,y之值,并输出之。
请填写适当的符号或语句,使程序实现其功能,程序以文件名存盘。
#include<>
main()
{
intx,y,t;
printf("请输入x,y:
\n");
scanf("%d%d",&x,&y);
if(x {t=x;x=y;y=t;}//x与y交换 printf("交换后的x: %dy: %d\n",x,y); } 3.编程题 (1)编写一个程序实现如下功能: 输入一元二次方程的系数a,b,c,求方程的根。 要求: 运行该程序时,输入a,b,c的值,分别使b2-4ac的值大于、等于和小于零,观察运行时的报错信息(程序以文件名存盘)。 参考程序: #include<> #include<> voidmain() {floata,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/*a); q=sqrt(disc)/*a); x1=p+q; x2=p-q; printf("x1=%\nx2=%\n",x1,x2); } (2)编写一个程序实现如下功能: 在屏幕显示提示信息(“输入一个字符串”),用户输入完成后在屏幕上再现该字符串(程序以文件名存盘)。 参考程序: #include<> voidmain() {charc1,c2,c3; printf("输入一个字符串\n"); c1=getchar(); c2=getchar(); c3=getchar(); putchar(c1); putchar(c2); putchar(c3); putchar('\n'); } (3)编写一个程序实现如下功能: 利用sizeof(),求得所有基本数据类型的长度(程序以文件名存盘)。 参考程序: #include<> voidmain() {inti,j; longs; floata,b; doublef1,f2; charch; printf("%d,%d,%d\n",sizeof(int),sizeof(i),sizeof(10)); printf("%d,%d,%d,%d\n",sizeof(long),sizeof(s),sizeof(50000),sizeof(10L)); printf("%d,%d,%d\n",sizeof(float),sizeof(b),sizeof); printf("%d,%d,%d\n",sizeof(double),sizeof(f1),sizeof); printf("%d,%d,%d,%d\n",sizeof(char),sizeof(ch),sizeof('a'),sizeof('\101')); } }实验四循环结构程序设计(解答) 1.改错题 (1)下列程序的功能为: 求1~100之和(和值为5050)并输出。 请纠正程序中存在错误,使程序实现其功能,程序以文件名存盘。 #include<> main() { inti,sum=0; i=1; while(i<100) sum=sum+i; i++; printf(“Thesumfrom1to100is%d\n”,sum); } 改正后的程序: #include<> main() { inti,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("Thesumfrom1to100is%d\n",sum); } (2)下列程序的功能为: 倒序打印26个英文字母。 请纠正程序中存在错误,使程序实现其功能,程序以文件名存盘。 #include<> main() { charx; x='z'; while(x! ='a') { printf("%3d",x); x++; } } 改正后的程序: #include<> main() { charx; x='z'; while(x! ='a'-1) { printf("%3c",x); x--; } } (3)下列程序的功能为: 输出如下的图形,要求顶端的*定位在第21字符位置,请纠正程序中存在错误,使程序实现其功能,程序以文件名存盘。 * *** ***** ******* #include<> voidmain() {inti,j; for(i=0;i<4;i++) {for(j=0;j<=20;j++) printf("\n"); for(j=0;j<2*i+1;j++) printf("*"); } } 改正后的程序: #include<> voidmain() {inti,j; for(i=0;i<4;i++) {for(j=0;j<=20-i;j++) printf(""); for(j=0;j<2*i+1;j++) printf("*"); printf("\n"); } } 2.程序填空 (1)下列程序的功能为: 用辗转相除法求两个正整数的最大公约数;请填写适当的符号或语句,使程序实现其功能,程序以文件名存盘。 提示: “辗转相除法”求两个正整数的最大公约数的算法如下: 1将两数中大的那个数放在m中,小的放在n中。 2求出m被n除后的余数r。 3若余数为0则执行步骤(7);否则执行步骤(4)。 4把除数作为新的被除数;把余数作为新的除数。 5求出新的余数r。 6重复步骤(3)到(5)。 7输出n,n即为最大公约数。 #include<> main() { intr,m,n,t; scanf("%d%d",&m,&n); if(m {t=m;m=n;n=t;} r=m%n; while(r) {m=n; n=r; r=m%n; } printf("%d\n",n); } (2)下列程序的功能为: 计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个);请填写适当的符号或语句,使程序实现其功能,程序以文件名存盘。 #include<> main() { intday,x1,x2; day=0; x1=1020; while(x1>0) { x2=x1/2-2; x1=x2; day++; } printf(“day=%d\n”,day); } (3)下列程序的功能为: 输出100以内能被3整除且个位数为6的所有整数;请填写适当的符号或语句,使程序实现其功能,程序以文件名存盘。 #include<> main() {inti,j; for(i=0;i<10;i++) {j=i*10+6; if(i%3! =0)continue; printf("%d",j); } } 3.编程题 (1)编写一个程序实现如下功能: 计算1~100之间所有含8的数之和(程序以文件名存盘)。 参考程序: #include<> main() { inti,sum=0; for(i=1;i<=100;i++) if(i%10==8||i/10==8) sum+=i; printf("sum=%d\n",sum); } (2)编写一个程序实现如下功能: 用下列近似公式计算e值,误差应小于10-5(程序以文件名存盘)。 … 参考程序: #include<> main() { inti=0; longn=1; floate=0,t=1; while(t>1e-5) { e+=t; i++; n*=i; t=n; } printf("e=%f\n",e); } (3)编写一个程序实现如下功能: 验证下列结论: 任何一个自然数n的立方都等于n个连续奇数之和。 例如: 13=1;23=3+5;33=7+9+11。 要求: 程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止(程序以文件名存盘)。 参考程序: #include<> main() { intnum,a,i; while (1) { printf("输入一个自然数(输入0则结束程序): "); scanf("%d",&num); if(! num) break; a=num*num-num+1;//a为第一个奇数 printf("%d*%d*%d=",num,num,num); for(i=1;i<=num-1;i++) { printf("%d+",a); a+=2; } printf("%d\n",a); } } (4)编写一个程序实现如下功能: 求该校的学生总人数(学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人(程序以文件名存盘))。 要求: ①使用循环结构编写程序。 ②可以使用break语句。 ③编译、运行程序,并写出结果 参考程序: #include<> main() {inti; for(i=900;i<=1000;i++) if(i%5==2&&i%7==3&&i%3==1) break; printf("学生总人数=%d\n",i); } 《数组程序设计》实验解答 1.改错题 (1) #include<> voidmain() {intn=10,i,sum=0; inta[10];//a[n]改为a[10] for(i=0;i<10;i++) { scanf("%d",&a[i]);//scanf("%d",a[i]); sum=sum+a[i]; } printf("sum=%d\n",sum); } (2) #include<> voidmain() {chara[20]="wel",b[]="come";//a[]="wel" inti,n=0; while(a[n]! ='\0')n++;//! a[n] for(i=0;b[i]! ='\0';i++) a[n+i]=b[i]; a[n+i]='\0'; printf("%s\n",a); } (3) #include<> voidmain() { inta[2][3],b[2][3],c[2][3],i,j; for(i=0;i<2;i++)//for(i=1;i<2;i++) for(j=0;j<3;j++)//for(j=1;j<3;j++) scanf("%d",&a[i][j]);//scanf("%d",a[i][j]) for(i=0;i<2;i++)//for(i=1;i<2;i++) for(j=0;j<3;j++)//for(j=1;j<3;j++) scanf("%d",&b[i][j]);//scanf("%d",b[i][j]) for(i=0;i<2;i++)//for(i=1;i<2;i++) for(j=0;j<3;j++)//for(j=1;j<3;j++) c[i][j]=a[i][j]+b[i][j]; for(i=0;i<2;i++)//for(i=1;i<2;i++) {for(j=0;j<3;j++)//for(j=1;j<3;j++) printf("%3d",c[i][j]); printf("\n"); } } 2.程序填空 (1) #include"" #defineN10 main() { inta[]={0,1,2,3,4,5,6,7,8,9},k; intlow=0,high=N-1,mid,find=0; printf("请输入欲查找的值: \n"); scanf("%d",&k); while(low<=high) { mid=(low+high)/2; if(a[mid]==k) { printf("找到位置为: %d\n",mid+1);find=1; } if(a[mid]>k) high=mid-1;//1 else low=mid+1;//2 } if(! find)printf("%d未找到\n",k); } (2) #defineN20 #include<> #include<>//添加 (#include<>//添加或者和语句srand((unsigned)time(NULL))都不要) voidmain() {inta[N],i,j,k,t; (srand((unsigned)time(NULL));//添加或者和#include<>都不要) printf("排序前: \n");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言程序设计 实验 练习 答案