1、中南大学C+上机程序题答案首先把以下所有内容复制到VC6.0中,然后删去注释符号适当调试就可以咯。不用谢我是雷锋 隔壁老王不过哈,那个数组的貌似有些问题呢,碰上数组算我栽了吧。/* 第一题:n为一个整数(小于10万),它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?#include#includeusing namespace std;int judge(int a) int b=sqrt(a); if(a=b*b) return 1; else return 0;void main() int i,t; for(i=-99;i100000;i+) if (ju
2、dge(i+100)&judge(i+168) coutiendl;*/*第二题:求1000之内的完全数。说明:完全数就是:除了它本身以外所有因子之和等于其本身,例如:6=1+2+3。#includeusing namespace std;void main() int a,b,sum=0; for(a=1;a=1000;a+) for(b=1;b=a/2;b+) if(a%b=0) sum=sum+b; if(sum=a) coutaendl; sum=0; */*第三题:求出 900, 1000间有偶数个因子(这里因子不含1和自身)的数有多少个,其中最小的一个?#includeusing
3、namespace std;void main() int a,b,c=0,d=0,min; for(a=1000;a=900;a-) for(b=2;b=a/2;b+) if(a%b=0) +c; if(c%2=0) +d; min=a; coutmin=min一共有:dendl; */*第四题:编写一个自定义函数:int f( int M, int N) ,f( )的功能是:对给定的正整数M和N,找出满足方程7x+4y=M的正整数解中x是偶数且y是奇数的解,其中:x,y属于1,N的范围。要求:若M和N不都是正整数,则结束函数并返回1;只有M和N都是正整数时,才继续求解操作,用二重循环进行求
4、解:(1)在函数中输出满足条件的正整数解x和y(2)并且使函数值返回满足条件的正整数解的组数#includeusing namespace std;int f(int M,int N) int x,y,k=0; if(M0|N0) cout0)&N=x;x+=2) for(y=1;Ny;y+=2) if(M-7*x-4*y=0) coutx=x y=yendl; +k; coutk=k; return k;void main() int M,N; coutM; coutN; f(M,N);*/*第五题:编写一个自定义函数:int f( char x, int N) ,f( )的功能是:对给定的
5、字符c和整数N,用c代表的符号打印一个N行的图案,每行开头没有任何空格。比如,当c为*且N为5时,打印的图案如本题图所示。且函数值返回1。#includeusing namespace std;int f(char x,int n) int i,j; for(i=1;i=n;i+) for(j=1;j=i;j+) coutx; coutendl; return 0;int main() f(*,5);return 0;*/*第六题:编写一个自定义函数:int f( int N) ,f( )的功能是:对给定的正整数N,打印一个N行N列的由A、B、C以及空格 符号组成的方阵图案。比如,当N为5时,
6、打印的图案如本题图所示。且函数值返回1。#includeusing namespace std;int f(int N) int i,j; char a100100; for(i=0;i=2*N-1;i+) for(j=0;ji&i%2=0&j%2=0) aij=B; else if(j%2!=0|i%2!=0) aij=t; else aij=C; coutaij; return 1;void main() f(5);*/*第七题:根据下列要求和提示,编写一个函数f(N)判断某数N是否为完全数,N由主函数给出;如果N是完全数则函数值返回1,N不是完全数则函数值返回0。完全数定义如下:如果一个
7、数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为完全数。如:6的因子是1、2、3,而6=1+2+3,则6是个完全数。#includeusing namespace std;int f(int N);void main() int N; cinN; if(f(N)=1) coutN是完全数endl; else coutN不是完全数endl;int f(int N) int a,sum=0; for(a=1;a=N/2;a+) if(N%a=0) sum+=a; if(N=sum)return 1;elsereturn 0;*/*第八题:编写程序,求e的值,e1+1/1!+1/2!+
8、1/3!+1/4!+.,最后一项的值小于1e-6。#includeusing namespace std;int jiecheng(int N) int i,c=1; for(i=1;i=N;i+) c=c*i; return c;void main() double e=1.0; int t; for(t=1;(jiecheng(t)=100000000;t+) e=e+1.0/jiecheng(t);couteendl;*/*第九题:有十进制数字a,b,c,d和e,求满足式子:abcd*e=dcba(a非0,e非0非1)的四位数中:(1)共有多少个?(2)最小的abcd;(3)与之相对应的
9、e。#includeusing namespace std;int f(int n)int m,sum=0; while(n) m=n%10; sum=sum*10+m; n=n/10; return sum;void main() int i,j=0,k; for(i=4999;i=1000;i-) if(f(i)/i*i=f(i)&f(i)i) j+; k=i; coutjendl; coutkendl; coutf(k)/k;*/*第十题:有一个7层灯塔,每层所点灯数都等于该层上一层的两倍,灯的总数是381盏,求:塔底灯数?第几层的灯数为48?#includeusing namespac
10、e std;int f(int n) if(n=1) return 1; else return 2*f(n-1); void main() int i,x,sum=0; for(x=1;x100;x+) for(i=1;i=7;+i) sum+=x*f(i); if(sum!=381) sum=0; else coutx=xendl; */*第十一题:有3个红球,5个白球,6个黑球,从中任意取出8个球,且其中必须有白球,请求出共有多少种取法?#includeusing namespace std;int main() int x,y,sum=0; for(x=1;x=5;x+) for(y=
11、0;y=3;y+) if(8-x-y)=6) sum+; coutsum; return 0;*/*第十二题:求数列1,3,3,3,5,5,5,5,5,7,7,7,7,7,7,7。求:第40项的值;值为17的第1个数是数列中第几项?#includeusing namespace std;void main() int i,sum=0; for(i=1;sum=40;i+=2) sum+=i; i-=2; coutiendl; sum=0; for(i=1;i17;i+=2) sum+=i; coutsum+1endl;*/*第十三题:计算p的近似值,直到最后一项的绝对值小于10-8为止,近似公
12、式为#includeusing namespace std;int f(int N) if(N%2=0) return (-1); else return 1;void main() int i,c=0;double p=0; for(i=1;i100000000;i+=2) c=c+1; p+=1.0/i*f(c); coutpendl;*/第十四题:用牛顿迭代法求方程3x3-4x2-5x+13=0在x=1附近的根,要求精度为10-6。/*#include#includeusing namespace std;double y(double x) double y; y=3*x*x*x-4*
13、x*x-5*x+13; return y;double k(double x) double y; y=9*x*x-8*x-5; return y;void main() double x=1.0; while(1) int a=(x-y(x)/k(x)*1000000; int b=x*1000000; if(a=b) coutsetprecision(7)x; break; else x=x-y(x)/k(x); */*第十五题:编写一个自定义函数:int f( int M, int N) ,函数f的功能是:对给定的正整数M和N,找出满足方程5x+6y=M的正整数解中x和y都是偶数的解。要
14、求:若M和N不都是正整数,则结束函数并返回1;只有M和N都是正整数时,且x,y1,N, 才继续求解操作,并用二重循环进行求解:(1)在函数中输出满足条件的正整数解x和y,(2)使函数值返回满足条件的正整数解的组数。#includeusing namespace std;int f(int M,int N) int x,y,k=0; if(M0|N0) cout0)&N=x;x+=2) for(y=2;Ny;y+=2) if(M-5*x-6*y=0) coutx=x y=yendl; +k; coutk=k; return k; void main() int M,N; coutM; coutN
15、; f(M,N);*/*第十六题:求s=2+22+222+.+222.2的和,即第n个加数是一个n位的整数,且各数位上的数字均为2,例如当n=4时,s=2+22+222+2222。要求设计一个函数int f(int n)求每一个加数,在main()中用累加求和方式求出总和。#includeusing namespace std;int f(int N) int i,p=0; for(i=1;i=N;i+) p=p*10+2; return p;int main() int s=0,i,n; coutn; for(i=1;i=n;i+) s=s+f(i); cout2+22+222=sendl;
16、 return 0;*/第十七题:所有能被13整除又能被17整除且末位不是偶数的三位数有几个?最大的一个?/如何处理多个数中输出最大的/*#includeusing namespace std;int main() int i=100,j=0,a; for(;i=999;i+) if(i%13=0&i%17=0&i%2!=0) a=i; j+; couta jendl; return 0;*/第十八题:基本解决,有两个疑问,为何不能执行,为何写1.0/*#includeusing namespace std;double f(int n) if(n=1) return 1.0; else if
17、(n=2) return 2.0; else return f(n-1)+f(n-2);void main() double sum=0; int i; for(i=1;i=20;i+) sum+=f(i)/f(i+1); coutsumendl; coutf(i)/f(i+1);*/*/*第二十题:从键盘上输入一个正整数,判别它是否为一回文数。如:123321#includeusing namespace std;void main() int a,b,c=0,d; cout请输入正整数d;b=d; while(b) a=b%10; c=c*10+a; b=b/10; if(d=c) coutyes; else coutNO;*/
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1