1、扬州大学C语言上机作业19整理答案仅供参考实验一4设计main函数实现从键盘上输入两个整型变量a、b的值,交换它们的值并输出。#includevoid main()int a,b,c;printf(enter first integer : );scanf(%d,&a);printf(enter second integer : );scanf(%d,&b);c=a;a=b;b=c;printf(%d,%dn,a,b);getch();5设计main函数实现从键盘上输入两个整型变量a、b的值,并将b的值加入到a中,输出a的值。 #includevoid main()int a,b,c;prin
2、tf(enter first integer : );scanf(%d,&a);printf(enter second integer : );scanf(%d,&b);c=a+b;a=c;printf(a=%d,b=%dn,a,b);getch();6从键盘输入整数x的值,根据公式y=x3+3x2+x-10求y的值,输出x和y的值。#includevoid main()int x,y;printf(enter first integer : );scanf(%d,&x);y=x*x*x+3*x*x+x-10;printf(x=%d,y=%dn,x,y);getch();实验二1编写程序,从键
3、盘上输入一个整数(例如560)表示分钟,将其换算成用小时和分钟表示,然后输出至屏幕。#include void main() int a,b,hour,min; printf(enter first integer : ); scanf(%d,&a); b=60; hour=a/b; min=a%b; printf(hour=%d,min=%dn,hour,min); getch(); 2编写程序,输入两个整数(例如1500和350),求出它们的商和余数并进行输出。#include void main() int a,b,c,d; a=1500,b=350; c=a/b; d=a%b; pri
4、ntf(%d,%d,c,d); getch();3.编写程序,读入3个整数给分别变量a,b,c,然后将a,b,c的值输出到屏幕,再交换它们中的数值,把a中原来的值给b,把b中原来的值赋给c,把c中原来的值赋给a,然后再次输出a,b,c的值到屏幕。#include void main() int a,b,c,d;printf(enter first integer : );scanf(%d,&a);printf(enter second integer : );scanf(%d,&b);printf(enter third integer : );scanf(%d,&c); printf(a=%
5、d,b=%d,c=%dn,a,b,c);d=c;c=b;b=a;a=d;printf(a=%d,b=%d,c=%d,a,b,c);getch();4编写程序,读入3个双精度数,求它们的平均值输出到屏幕。#include void main() double sum=0; double a,b,c,d;printf(enter first integer : );scanf(%lf,&a);printf(enter second integer : );scanf(%lf,&b);printf(enter third integer : );scanf(%lf,&c);sum=a+b+c; d=
6、sum/; printf(d=%lf,d); getch(); 5下列程序中,要求main函数实现如下功能:从键盘上输入3个正整数,求出它们中的最大值。请完善程序,并在程序最后用注释的方式给出你的测试数据及在这组测试数据下的运行结果。#include void main() int a ,b ,c ,d ,max; printf(“Enter three integers:”); scanf(“%d%d%d”,&a,&b,&c); if(ab) max=a; else max=b; if(cmax) max=c; printf(“max of the three numbers is %d”,
7、max);grtch();6. 请编程序:对从键盘上输入的x值,根据以下函数关系计算出相应的y值(设x,y均为整型量)。x值的范围计算y的公式x000=x10x10=x201020=x40-5x+20#include void main() int x,y; printf(x=); scanf(%d ,&x); if (x0) y=0; else if (x=0) y=x; else if (x=10&x=20&x40) y=(-5)*x+20; printf(%d ,y); getch(); 实验三1. 下列程序想求出满足如下条件的三位数n:(1)n除以11(整数相除)所得到的商等于n的各位
8、数字的平方和;(2)n中至少有二位数字相同。如:131除以11的商为11,131各位数字的平方和为11,131中有二位数字相同,故131是所要求出的三位数中的一个;又如550,也是满足条件的三位数。源程序中有些错误,请你改正并最终使程序得到如下的运行结果:131 550 900#include void main() int n , a , b , c;for(n=1; n1000; n+) a=n/100; b=n/10%10; c=n%10;if(n/11=a*a+b*b+c*c&(a=b|a=c|b=c)printf(%dn,n); getch();2. 请编程序,实现从键盘上输入任意一
9、个整数n,求出n的各位数字之和。例如,当n为263时,各位数字之和为11。下面是一个可以实现逐位数字累加功能的程序段,试理解后应用到自己的程序中。k=0;n=263;do k+=n%10;n/=10; while(n);#include void main() int n,k; scanf(%d,&n); k=0; do k+=n%10; n/=10; while(n); printf(%d,k); getch(); 3. 试找出符合下列条件的正整数:(1)该数是一个三位数;(2)该数是37的倍数;(3)该数循环左移后得到的另两个数也是37的倍数。例如148是37的倍数,481和814也是37
10、的倍数。#includevoid main()int n,a,b;for(n=100;n1000;n+)if(n%37=0)a=n/10+n%10*100;b=n/100+n%100*10;if(a%37=0&b%37=0)printf(%dn,n);getch();4请编程序利用下列公式求的近似值。公式为:要求:先求出前2n项的值,再求出2n+2项的值,直至二者之差小于105为止。#includevoid main()int n;float a,b;a=1,b=3;n=1;while(b-a=1e-5)a=b;n+;b=b*4*n*n/(2*n-1)/(2*n+1);printf(%f,%f
11、,2*a,2*b);getch();5. 请编程序求出满足如下条件的四位数n:(1)n的范围为5000,8000;(2)n千位上的数减百位上的数减十位上的数减个位上的数大于零。编程要求:以每行5个输出满足条件的数及该类数的个数。#includevoid main()int n,a,b,c,d,k=0; for(n=5000;n0) printf(%5d,n);k+; if(k%5=0) printf(n); printf(k=%d,k); getch(); 6请编程序求出满足如下条件的一个四位整数,它的9倍恰好是其反序数(例如,1234与4321互为反序数)。#includevoid main
12、()int n,e,a,b,c,d; for(n=1000;n=9999;n+) a=n/1000;b=n/100%10;c=n/10%10;d=n%10;e=d*1000+c*100+b*10+a;if(9*n=e)printf(%d,n);getch();7请编程序求出从键盘上输入的两个正整数a和b的最大公约数和最小公倍数。#include void main() int m,n,r,x; scanf(%d,%d,&m,&n); x=m*n;while(n!=0) r=m%n; m=n; n=r; printf(%d %d,m,x/m);getch();8请编程序计算1!+2!+3!+n!
13、的前10项之和。#include void main() long sum,k; int i,j; sum=0; for(i=1;i=10;i+) for(j=1,k=1;j=i;j+) k*=j; sum+=k; printf(%ldn,sum); getch(); 实验四1. 反序数。例如,123的反序数是321。请设计程序,从键盘上输入一个整数,求其反序数并输出。#include main() int n,k;printf(n=);scanf(%d,&n);k=0;while(n!=0)k=k*10+n%10;n/=10;printf(k=%d,k);getch();2. 完备数。完备数
14、是一些特殊的自然数,它所有的真因子(即除了自身以外的约数)之和恰好等于该数本身。例如,6=1+2+3,故6是一个完备数。请设计程序,找出500以内的所有完备数。#include void main() int n,i,k;for(n=1;n=500;n+) k=0;for(i=1;i=n-1;i+) if(n%i=0) k+=i; if(n=k) printf(%dn,n);getch();3. 回文数。一个数如果正读和倒读(即反序数)相同,称该数是回文数。例如,121、1331均为回文数。请设计程序,找出200300之间的所有回文数,并以每行8个数输出至屏幕。#include void ma
15、in() int n,k,i,m=0; for(n=200;n=300;n+) k=0; i=n; while(i!=0) k=k*10+i%10; i/=10; if(n=k) m+; printf(%8d,n); if(m%8=0) printf(n); getch(); 4. 回文质数。一个数如果是回文数,同时又是质数,则该数被称为回文质数。请设计程序,找出100500之间的所有回文质数,并以每行5个输出至屏幕。#include #include void main() int n,k,i,m;for(n=100;n=500;n+) k=0; i=n; while(i!=0) k=k*1
16、0+i%10; i/=10; if(n=k) for(m=2;msqrt(n) printf(%4d,n);account+;if(account%5=0)printf(“n”); getch();5. 绝对质数。如果一个数和其反序数均为质数,则该数被称为绝对质数。如,13是质数,其反序数31也为质数,则13和31是一对绝对质数。请设计程序,找出200以内的绝对质数。#include #include void main() int n,k,i,m,a; for(n=1;n=200;n+) for(a=2;asqrt(n) i=n,k=0; while(i!=0) k=k*10+i%10; i
17、/=10; for(m=2;msqrt(k) printf(%5d,n); getch(); 6. 平方镜反数。如果一个数的平方数,是其反序数的平方数的反序数,则称该数和其反序数是一对平方镜反数。例如,12的平方数是144,其反序数为21,21的平方数是441,其反序数是12的平方数144,故12和21是一对平方镜反数。请设计程序找出200以内的所有平方镜反数对。#include #include void main() int n,k,i,a,b; for(n=1;n=200;n+) k=0; i=n; while(i!=0) k=k*10+i%10; i/=10; a=k*k; b=0;
18、while(a!=0) b=b*10+a%10; a/=10; if(b=(n*n) printf(%dn,n); getch(); 7黑洞数。黑洞数又称陷阱数,是类具有奇特转换特性的整数。任何一个数字不全相同整数,经有限“重排求差”操作,总会得到某个数,这些数即为黑洞数。“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数。随便造一个四位数,如a1=1231,先把组成部分1231的四个数字由大到小排列得到a2=3211,再把1231的四个数字由小到大排列得a3=1123,用大的减去小的a2-a1=3211-1123=2088。把2088按上面的方法再作一遍,由大到小排列
19、得8820,由小到大排列得288,相减8820-288=8532。把8532按上面的方法再作一遍,由大到小排列得8532,由 小到大排列得2358,相减8532-2358=6174。如果再往下做,奇迹就出现了!7641-1467=6174,又回到6174。6174便是一个4位黑洞数。请编写程序,用上述方法找出3位黑洞数。暂无答案实验五1. 有一张足够大的纸,厚毫米,问将它对折多少次后可以达到珠穆朗玛峰的高度(8848米)#include void main()double a=9e-2; int n=0;while(a=8848)a=a*2;n+; printf(a=%d,n);getch()
20、;2. 请设计程序采用递推法计算下列级数的近似值,当n取某一值使得|x(2n+1)/n!|= m=-m; p*=(x*x); q+=2; k+; n*=k; sum+=(m*p)/(q*n); printf(%lf,sum); getch(); 3. 请设计程序,根据下列公式计算cos(x)的近似值。精度要求:当通项的绝对值小于等于10-6为止。cos(x)=1-x2/2!+x4/4!-x6/6!+(-1)nx2n/(2n)!#include #include void main() double x,k,sum,term,a,b,m; printf(x=); scanf(%lf,&x); s
21、um=1; m=1; a=0; k=1; b=1; term=1; while(fabs(term) k*=(x*x); m=-m; a+=2; b*=(a*(a-1); sum+=(m*k)/b); term=(m*k)/b; printf(cos(x)=%lf,sum); getch(); 4. 请设计程序采用递推法计算的值。即求-+的值。其中x为键盘输入的一个任意的单精度实数。#include void main()int i,p;float x,m,q,sum;printf(x=);scanf(%f,&x);sum=x;m=x;p=1;q=1;for(i=1;i k*=(x*x); m
22、=-m; a+=2; b*=(a*(a-1); sum+=(m*k)/b); term=(m*k)/b; sum=(-1)*sum*cos(x)/x; sum+=2; printf(%lf,sum); getch(); 实验六3. 水仙花数是指一个3位数,其各位数字的立方和等于该数本身。请完善下列程序中的函数int daffodil(int n),其功能是判断整数n是否为水仙花数,如是,则该函数返回值,否则返回值。注意,不能更改main函数。#include int daffodil(int n) int k=0,m; m=n; do k+=(m%10)*(m%10)*(m%10); m/=1
23、0;while(m); if(n=k) return 1; else return 0;main() int m,i=0; for(m=100;m1000;m+) if(daffodil(m)=1) printf(%5d,m); i+; if(i%5=0)printf(n); getch();4. 请编写程序,找出满足如下条件的整数m:(1)该数在11,999之内;(2) m、m2、m3均为回文数。例如m=11,m2=121,m3=1331,11、121、1331皆为回文数,故m=11是满足条件的一个数。请设计函数int value(long m),其功能是判断m是否是回文数,如是,该函数返回
24、值1,否则返回值0。编写main函数,求出11,999内满足条件的所有整数。#include int value(long m) long s,n; s=0; n=m; while(n) s=s*10+n%10; n/=10; if(s=m) return 1; else return 0;main() long m; for(m=11;m1000;m+) if(value(m)=1&value(m*m)=1&value(m*m*m)=1) printf(%5ld,m); getch();5. 设n0是一个给定的正整数。对于i=0,1,2,定义:若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。用这种方法产生
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1