资源描述
实验一(1) C程序运行环境及简单程序的运行(解答)P231 .编辑、运行简单的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=%dn,a,b,sum);/*prin tf(%d - %d=%dn,a,b,m);prin tf(%d * %d=%dn,a,b,f); prin tf(%d / %f=%fn,a,2,d);请输入、编译并运行之,观察并记下屏幕的输出/*定义整型变量 a, b,sum, m f*/定义实型变量d */ 输出语句*/输入语句由键盘输入两个数分别赋予a和b*/赋值语句*/输出语句*/运行结果:实醴报告YPieInput4 64 + & =ia4 - &=-24 * & =244 / 2三2*0阿目0002.改错题(1)下列程序的功能为:计算x*y的值并将结果输出;请纠正程序中存在错误(程序中有8处错误),使程序实现其功能,程序以文件名存盘。#in elude mainx=10k=l愛行为;应bx=0第2行为;amn32) fn,x+y);(2)下列程序的功能为:设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后2位数字。3(周长1=2 r,圆面积 s= r2,圆球表面积sq=4 r2,圆球体积 vq= r3 ;圆柱体积42vz= 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(%f%f,&r,&h);printf(”printf(”printf(printf(printf(圆周长为:%.2fn,l 圆面积为:%.2fn, s 圆球表面积为:););%.2fn, sq ););圆球体积为:%.2fn, vq 圆柱体积为:%.2fn, vz );(3)下列程序的功能为:通过键盘输入两个整数,分别存入变量x, y中,当x小于y时,通过中间变量t互换x, y之值,并输出之。请填写适当的符号或语句,使程序实现其功能,程序以文件名存盘。#in elude main () int x,y,t;printf( 请输入 x, y: n);seanf(%d%d,&x,&y);if (xy) t=x; x=y ; y=t;/x与 y 交换printf(交换后的 x: %d y : %d n , x, y);3.编程题(1)编写一个程序实现如下功能:输入一元二次方程的系数a, b, c,求方程的根。要求:运行该程序时,输入a,b,c的值,分别使b2-4ac的值大于、等于和小于零,观察运行时的报错信息(程序以文件名存盘)。#in clude #in clude void 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;printf(输入一个字符串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, %dn,sizeof(int),sizeof(i),sizeof(10);printf(%d, %d, %d,%dn,sizeof(long),sizeof(s),sizeof(50000),sizeof(10L);printf(%d, %d, %dn,sizeof(float), sizeof(b),sizeof);printf(%d, %d, %dn,sizeof(double), sizeof(f1), sizeof);printf(%d, %d, %d,%dn,sizeof(char), sizeof(ch), sizeof(a), sizeof(101);实验四 循环结构程序设计 ( 解答 )1改错题(1) 下列程序的功能为:求 1100之和(和值为5050)并输出。请纠正程序中存在 错误,使程序实现其功能,程序以文件名存盘。#include main()int i,sum=0;i=1; while(i100) sum=sum+i;i+;printf(“ The sum from 1 to 100 is %dn ”,sum);改正后的程序:#include main()int i,sum=0;i=1;while(i =100)sum=sum+i;i+; printf(The sum from 1 to 100 is %dn,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);x - - ;(3)下列程序的功能为:输出如下的图形,要求顶端的*定位在第 21 字符位置,请纠正程序中存在错误,使程序实现其功能,程序以文件名存盘。*#include void main() int i,j;for (i=0;i4;i+) for (j=0;j=20;j+)printf(n);for (j=0;j2*i+1;j+)printf(*);改正后的程序:#in elude void mai n() int i,j;for (i=0;i4;i+) for (j=0;j=20-i;j+)printf(” );for (j=0;j2*i+1;j+)prin tf(*); prin tf(n); 2. 程序填空(1)下列程序的功能为:用辗转相除法求两个正整数的最大公约数;请填写适当的符 号或语句,使程序实现其功能,程序以文件名存盘。提示:“辗转相除法”求两个正整数的最大公约数的算法如下: 将两数中大的那个数放在m中,小的放在n中。 求出m被n除后的余数r。 若余数为0则执行步骤(7);否则执行步骤(4 )。 把除数作为新的被除数;把余数作为新的除数。 求出新的余数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 (%dn, n);(2) 下列程序的功能为: 计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个);请填写适当的符号或语句,使程序实现其功能,程序以文 件名存盘。#in elude main () int day,x1,x2; day=O;x仁 1020;while(_x10)x2=_x1/2-2;x1=x2;day+; printf(“ day=%dn”,day);(3) 下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数;请填写适当的符号或语句,使程序实现其功能,程序以文件名存盘。#in clude main () int i,j;for(i=0;10; i+) j=i*10+6;if (i%3!=0) con ti nue;prin tf(%d,j);3. 编程题(1)编写一个程序实现如下功能:计算1100之间所有含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=%dn,sum);(2) 编写一个程序实现如下功能:用下列近似公式计算e值,误差应小于10-5 (程序以文件名存盘)。111 1 e 1一1!2!3! n!参考程序:#in elude main ()int i=0 ;long n=1;float e=0, t=1;while(t1e-5)e+=t;i+; n *=i;t=n;prin tf(e=%fn,e);(3) 编写一个程序实现如下功能:验证下列结论:任何一个自然数n的立方都等于 n个连续奇数之和。例如: 1 3 =1; 23 =3+5 ; 33 =7+9+11。要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止(程序以文件名存盘)。参考程序:#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(%dn, a);(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( 学生总人数 =%dn,i);数组程序设计实验解答1改错题(1)#includevoid main()int n=10,i,sum=0;int a 10; /an改为 a10for(i=0;i10;i+)scanf(%d, &ai ); /scanf(%d,ai);sum=sum+ai;printf(sum=%dn,sum);(2)#includevoid main( ) char a 20=wel,b=come; /a=welint i,n=0;while (an!=0 ) n+; /!anfor(i=0;bi!=0;i+)an+i=bi;an+i=0;printf(%sn,a);(3)#in elude void mai n()int a23,b23,c23,i,j;0; i2;i+)0; j3; j+)&aij);0; i2; i+) 0; j3; j+) ,&bij);0; i2; i+)0; j3; j+)for ( i =for( j=sca nf(%d, for ( i =for( j =scan f(%d,for ( i =(for( j =cij=aij+bij;for ( i =0; i2; i+) for( j=0; j3; j+)prin tf(%3d,cij);prin tf(n);/for ( i = 1; i2;i+) /for( j=1; j3; j+) / sca nf(%d,aij)/for ( i = 1; i2;i+)/for( j=1; j3; j+) /sca nf(%d,bij)/for ( i = 1; i2;i+) /for( j=1; j3; j+)/for ( i = 1; i2; i+)for(j=1; j3; j+)2. 程序填空(1)#i nclude #defi ne N 10main ()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(%d, &k);while (lowk)high=mid-1; 1 elselow=mid+1;/2if(!find) printf(%d未找到 n”,k);(2)#defi ne N 20#in clude#i nclude / 添加都不要)(#i nclude/添加或者和语句 srand( (un sig ned)time( NULL )void mai n() int aN,i,j,k,t;添加或者和#include都不要)(srand( (unsigned)time( NULL ) ); / printf(排序前:n);for(i=0;iN;i+) ai=ran d()%100; 1prin tf(%5d,ai);for(i=0;iN-1;i+) k=i;for(j=i+1;jN;j+)if(akaj)/2k=j;if(k!=i)_3 t=ak; ak=ai; ai=t;printf(n 排序后:n);for(i=0;iN;i+)prin tf(%5d,ai);(3)#in clude#in cludevoid mai n()char lin e80;char ch;int i,j;in t le n;prin tf(输入一行字符n);gets(line) ;1printf(输入要删除字符);ch=getchar();i=0;while(li nei!=0)while( lin ei!=0 & linei!=ch) i+;2Ien=strle n( li ne);for(j=i;jle n-1;j+)lin ej=li nej+1 ;3lin ej=0;puts(li ne);3. 编程题(程序以文(1)编写一个程序实现如下功能:任意输入10个整数的数列完成下列运算件名存盘): 要求用选择排序法将数列由小到大排序; 在排序好的数列中插入一个数,使数列保持从小到大的顺序。#defi ne N 11#in cludevoid mai n() int aN,i,j,k,t,p;printf(请输入%d个整数 :n”,N);for(i=0;iN-1;i+)scan f(%d, &ai);for(i=0;iN-2;i+)/选择排序 k=i;for(j=i+1;jaj)k=j;if(k!=i) t=ak; ak=ai; ai=t;printf(n 排序后:n);for(i=0;i=0 & ajp)/找插入位置aj+1=aj;j-; aj+1=p;/插入printf(n插入后:n);for(i=0;iN;i+)prin tf(%5d,ai);prin tf(n);(2)编写一个程序实现如下功能:输入字符串s1和s2以及插入位置d,在字符串s1?中的指定位置d处插入字符串s2。如:输入字符串SHHAI、”ANG和位置3,则输出:SHANGHAI;若d大于串si长度时,串s2插入在si后面,如s仁SHANG, S2=HAI , d = 8,贝U s仁SHANGHAI(程序以文件名存盘)。#include#includevoid main( ) char sii00,s220;int i,d,n,ni;printf( 输入第一个串: );scanf(%s,si);printf(输入第二个串:);scanf(%s,s2);printf(输入插入位置:);scanf(%d,&d);n=strlen(si);ni=strlen(s2);if(dn) strcat(si,s2);else for(i=n;i=d-i;i-)sini+i=sii;for(i=0;ini;i+)sid+i-i=s2i;printf(%sn,si);( 3)编写一个程序实现如下功能:找出一个二维数组的“鞍点”,即该位置上的元素 在该行是最大,在该列是最小。注意二维数组可能没有“鞍点”(程序以文件名存盘)#include#include#includevoid main()int a34;int i,j, nj,p,flag,k;srand( (unsigned)time( NULL ) );for(i=0;i3;i+)for(j=0;j4;j+)aij= rand()%i000;printf(%4d,aij);printf(n);for(i=0;i3;i+) p=ai0;nj=0;for(j=1;jp) nj=j;p=aij;flag=1;for(k=0;kaknj) flag=0;if(flag) printf(”鞍点为第 2d行,第 2d列,值为 4dn,i+1,nj+1,p);
展开阅读全文