高级语言程序设计试验与练习答案

上传人:ail****e3 文档编号:52507037 上传时间:2022-02-08 格式:DOC 页数:17 大小:115.50KB
收藏 版权申诉 举报 下载
高级语言程序设计试验与练习答案_第1页
第1页 / 共17页
高级语言程序设计试验与练习答案_第2页
第2页 / 共17页
高级语言程序设计试验与练习答案_第3页
第3页 / 共17页
资源描述:

《高级语言程序设计试验与练习答案》由会员分享,可在线阅读,更多相关《高级语言程序设计试验与练习答案(17页珍藏版)》请在装配图网上搜索。

1、实验一(1) C程序运行环境及简单程序的运行 (解答) P23 1 .编辑、运行简单的C程序 下面是一个简单的C程序, 结果,最后以文件名存盘。 #in elude <> main () { int a,b,sum,m,f; float d; /* prin tf("Please In put a,b \n "); /* sca nf("%d%d", &a,&b); /* sum=a+b; /* m=a-b; f=a*b; d=a/; prin tf("%d + %d=%d\n",a,b,sum); /* prin tf("%d - %d=

2、%d\n",a,b,m); prin tf("%d * %d=%d\n",a,b,f); prin tf("%d / %f=%f\n",a,2,d); } 请输入、编译并运行之,观察并记下屏幕的输出 /* 定义整型变量 a, b,sum, m f*/ 定义实型变量d */ 输出语句*/ 输入语句由键盘输入两个数分别赋予 a和b*/ 赋值语句*/ 输出语句*/ 运行结果: 实醴报告Y PieInput 4 6 4 + & =ia 4 - &

3、=-2 4 * & =24 4 / 2三2*0阿目000 2.改错题 (1)下列程序的功能为:计算 x*y的值并将结果输出;请纠正程序中存在错误(程序中 有8处错误),使程序实现其功能,程序以文件名存盘。 #in elude <> main x=10 k=l 愛■行为;应 b x=0 第2行为;a m n 32) f\n",x+y); (2)下列程序的功能为:设圆半径 r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、 圆球体积、圆柱体积。用 scanf输入数据r、h,输出计算结果,输出时要求有文字说明, 取小数点后2位数字。

4、 3 (周长1=2 r,圆面积 s= r2,圆球表面积 sq=4 r2,圆球体积 vq= r3 ;圆柱体积 4 2 vz= hr ) 使程序实现其功能,程序以文件名存盘。 请填写适当的符号或语句, #in elude <> main () { float pi , h, r, l , s, sq, vq , pi=; vz ; h: \n"); 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(" 请输入圆半径r,圆柱高 sea nf("%

5、f%f",&r,&h); ; printf(” printf(” printf(" printf(" printf(" 圆周长为:%.2f\n",l 圆面积为:%.2f\n", s 圆球表面积为: ); ); %.2f\n", sq ); ); 圆球体积为:%.2f\n", vq 圆柱体积为: %.2f\n", vz ); (3)下列程序的功能为:通过键盘输入两个整数,分别存入变量 x, y中,当x小于y时, 通过中间变量t互换x, y之值,并输出之。请填写适当的符号或语句, 使程序实现其功能, 程序以文件名存盘。 #in elude <> main ()

6、 { int x,y,t; printf(" 请输入 x, y: \n"); seanf("%d%d",&x,&y) ; if (x #in clude <> void

7、 mai n() {float a,b,c,disc,x1,x2,p,q; scan f("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; prin tf("x1=%\nx2=%\n",x1,x2); } (2)编写一个程序实现如下功能:在屏幕显示提示信息( “输入一个字符串”),用户输 入完成后在屏幕上再现该字符串(程序以文件名存盘)。 参考程序: #in clude <> void mai n() {char c1,c2,c3; p

8、rintf(" 输入一个字符串\n”); c1=getchar(); c2=getchar(); c3=getchar(); putchar(c1); putchar(c2); putchar(c3); putchar('\n'); } (3)编写一个程序实现如下功能:利用 sizeof(),求得所有基本数据类型的长度(程 序以文件名存盘)。 参考程序: #include <> void main() {int i,j; long s; float a,b; double f1,f2; char ch; printf("%d, %d, %d\n",size

9、of(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('\1

10、01')); } }实验四 循环结构程序设计 ( 解答 ) 1.改错题 (1) 下列程序的功能为:求 1〜100之和(和值为5050)并输出。请纠正程序中存在 错误,使程序实现其功能,程序以文件名存盘。 #include <> main() { int i,sum=0; i=1; while(i<100) sum=sum+i; i++; printf( “ The sum from 1 to 100 is %d\n ”,sum); } 改正后的程序: #include <> main() { int i,sum=0; i=1; while(i< =100)

11、 { sum=sum+i; i++; } printf("The sum from 1 to 100 is %d\n",sum); 2)下列程序的功能为: 倒序打印 26 个英文字母。 请纠正程序中存在错误, 使程序实 现其功能,程序以文件名存盘。 #include <> main() { char x; x='z'; while(x!='a') { printf("%3d",x); x++; } } 改正后的程序: #include <> main() { char x; x='z'; while(x!='a' -1) { printf("%3 c",x)

12、; x - - ; } } (3)下列程序的功能为:输出如下的图形,要求顶端的 *定位在第 21 字符位置,请纠正程 序中存在错误,使程序实现其功能,程序以文件名存盘。 * ***** ******* #include <> void main() { int i,j; for (i=0;i<4;i++) { for (j=0;j<=20;j++) printf("\n"); for (j=0;j<2*i+1;j++) printf("*"); } } 改正后的程序: #in elude <> void mai n() { int i,j; for

13、(i=0;i<4;i++) { for (j=0;j<=20-i;j++) printf(” "); for (j=0;j<2*i+1;j++) prin tf("*"); prin tf("\n"); } } 2. 程序填空 (1)下列程序的功能为:用辗转相除法求两个正整数的最大公约数;请填写适当的符 号或语句,使程序实现其功能,程序以文件名存盘。 提示: “辗转相除法”求两个正整数的最大公约数的算法如下: ① 将两数中大的那个数放在 m中,小的放在n中。 ② 求出m被n除后的余数r。 ③ 若余数为0则执行步骤(7);否则执行步骤(4 )。 ④ 把除数作为新的被除数

14、;把余数作为新的除数。 ⑤ 求出新的余数r。 ⑥ 重复步骤(3)至U( 5)。 ⑦ 输出n, n即为最大公约数。 #in elude <> main () { int r, m, n, _ t sea nf ("%d%d",&m,&n); if (m< n) { t=m; m=n; n=t; } r = m%n; while (r) { m=n; n=r; r= _m%n ; } printf ("%d\n", n); } (2) 下列程序的功能为: 计算1020个西瓜几天后能卖完(第一天卖了一半多两个, 以 后每天卖剩的一半多两个);请填写适当的符号或语句

15、,使程序实现其功能,程序以文 件名存盘。 #in elude <> main () { int day,x1,x2; day=O; x仁 1020; while( _x1>0 ) { x2= _x1/2-2 ; x1=x2; day++; } printf( “ day=%d\n”,day); } (3) 下列程序的功能为:输出 100以内能被3整除且个位数为6的所有整数;请填写 适当的符号或语句,使程序实现其功能,程序以文件名存盘。 #in clude <> main () { int i,j; for(i=0; 」<10 ; i++) { j=i*10+6

16、; if ( i%3!=0 ) con ti nue; prin tf("%d",j); } } 3. 编程题 (1)编写一个程序实现如下功能:计算 1〜100之间所有含8的数之和(程序以文件名 存盘)。 参考程序: #in clude <> main () { int i, sum=0; for(i=1; i<=100; i++) if(i%10==8 || i/10==8) sum+=i; prin tf("sum=%d\n",sum); } (2) 编写一个程序实现如下功能:用下列近似公式计算 e值,误差应小于10-5 (程序以 文件名存盘)。 1

17、11 1 e 1 …一 1! 2! 3! n! 参考程序: #in elude <> main () { int i=0 ; long n=1; float e=0, t=1; while(t>1e-5) { e+=t; i++; n *=i; t=n; } prin tf("e=%f\n",e); } (3) 编写一个程序实现如下功能:验证下列结论:任何一个自然数 n的立方都等于 n 个连续奇数之和。例如: 1 3 =1 ; 23 =3+5 ; 33 =7+9+11。 要求:程序对每个输入的自然数计算并输出相应的连续奇数, 直到输入的自然数为 0时 止

18、(程序以文件名存盘)。 参考程序: #in clude <> main () { int num, a, i; while(1) { printf(” 输入一个自然数(输入0则结束程序):”); sca nf("%d",&n um); if(! num) break; a=num*num-nu m+1; //a 为第一个奇数 prin tf("%d*%d*%d=", num, num, num); for(i=1; i<=nu m-1; i++) { prin tf("%d+", a); a+=2; } prin tf("%d\n", a); } }

19、 (4) 编写一个程序实现如下功能:求该校的学生总人数(学校有近千名学生,在操场 上排队, 5人一行余 2人, 7人一行余 3人, 3人一行余 1人(程序以文件名存盘)) 要求: ①使用循环结构编写程序。 ②可以使用 break 语句。 ③编译、运行程序,并写出结果 参考程序: #include <> main() {int i; for(i=900;i<=1000;i++) if(i%5==2&&i%7==3&&i%3==1) break; printf(" 学生总人数 =%d\n",i); } 《数组程序设计》实验解答 1.改错题 (1) #include<

20、> void main() {int n=10,i,sum=0; int a[ 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<> void main( ) { char a[ 20]="wel",b[]="come"; //a[]="wel" int i,n=0; while (a[n]!='\0' ) n++; //!a[n] for

21、(i=0;b[i]!='\0';i++) a[n+i]=b[i]; a[n+i]='\0'; printf("%s\n",a); } (3) #in elude <> void mai n() { int a[2][3],b[2][3],c[2][3],i,j; 0; i<2;i++) 0; j<3; j++) &a[i][j]); 0; i<2; i++) 0; j<3; j++) ,&b[i][j]); 0; i<2; i++) 0; j<3; j++) for ( i = for( j= sca nf("%d", for ( i = for( j

22、= scan f("%d", for ( i = ( for( j = c[i][j]=a[i][j]+b[i][j]; for ( i = 0; i<2; i++) { for( j= 0; j<3; j++) prin tf("%3d",c[i][j]); prin tf("\n"); } } //for ( i = 1; i<2;i++) //for( j=1; j<3; j++) // sca nf("%d",a[i][j]) //for ( i = 1; i<2;i++) //for( j=1; j<3; j++) //sca nf("%d",b[i][j]

23、) //for ( i = 1; i<2;i++) //for( j=1; j<3; j++) //for ( i = 1; i<2; i++) 〃for(j=1; j<3; j++) 2. 程序填空 (1) #i nclude "" #defi ne N 10 main () { int a[ ]={0,1,2,3,4,5,6,7,8,9},k; int low=0,high=N-1,mid,find=0; printf(" 请输入欲查找的值:\n"); scan f("

24、%d", &k); while (low<=high) { mid=(low+high)/2; if(a[mid]==k) { prin tf(" 找到位置为: %d\n",mid+1);fi nd=1; } if(a[mid]>k) high=mid-1; 〃1 else low=mid+1; //2 if(!find) printf("%d 未找到 \n”,k); } (2) #defi ne N 20 #in clude<> #i nclude<> // 添加 都不要) (#i nclude<> // 添加或者和语句 srand(

25、 (un sig ned)time( NULL )) void mai n() { int a[N],i,j,k,t; 添加或者和#include<>都不要) (srand( (unsigned)time( NULL ) ); // printf(" 排序前:\n"); for(i=0;i

26、=a[k]; a[k]=a[i]; a[i]=t;} } printf("\n 排序后:\n"); for(i=0;i #in clude<> void mai n() {char lin e[80]; char ch; int i,j; in t le n; prin tf(" 输入一行字符\n"); gets(line) ; 〃1 printf(" 输入要删除字符"); ch=getchar(); i=0; while(li ne[i]!='\0') {while(

27、 lin e[i]!='\0' && line[i]!=ch) i++; 〃2 Ien=strle n( li ne); for(j=i;j void mai

28、n() { int a[N],i,j,k,t,p; printf(" 请输入%d个整数 :\n”,N); for(i=0;ia[j]) k=j; if(k!=i) { t=a[k]; a[k]=a[i]; a[i]=t;} } printf("\n 排序后:\n"); for(i=0;i

29、入整数:"); sca nf("%d",&p); j=9; while(j>=0 && a[j]>p) // 找插入位置 {a[j+1]=a[j];j--;} a[j+1]=p; // 插入 printf("\n 插入后:\n"); for(i=0;i

30、插入在si后面,如s仁"SHANG", S2="HAI" , d = 8,贝U s仁"SHANGHAI"(程序以文件名存盘)。 #include<> #include<> void main( ) { char si[i00],s2[20]; int i,d,n,ni; printf(" 输入第一个串: "); scanf("%s",si); printf(" 输入第二个串: "); scanf("%s",s2); printf(" 输入插入位置: "); scanf("%d",&d); n=strlen(si); ni=strlen(s2); if(d>n) st

31、rcat(si,s2); else { for(i=n;i>=d-i;i--) si[ni+i]=si[i]; for(i=0;i #include<> #include<> void main() { int a[3][4]; int i,j, nj,p,flag,k; srand( (

32、unsigned)time( NULL ) ); for(i=0;i<3;i++) {for(j=0;j<4;j++) {a[i][j]= rand()%i000; printf("%4d",a[i][j]); } printf("\n"); } for(i=0;i<3;i++) { p=a[i][0];nj=0; for(j=1;j<4;j++) if(a[i][j]>p) {nj=j;p=a[i][j];} flag=1; for(k=0;k<3;k++) if(p>a[k][nj]) flag=0; if(flag) printf(” 鞍点为第 %2d行,第 %2d列,值为 %4d\n",i+1,nj+1,p); } }

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!