中南大学C++上机程序题答案.docx

上传人:b****7 文档编号:9476091 上传时间:2023-02-04 格式:DOCX 页数:20 大小:19.02KB
下载 相关 举报
中南大学C++上机程序题答案.docx_第1页
第1页 / 共20页
中南大学C++上机程序题答案.docx_第2页
第2页 / 共20页
中南大学C++上机程序题答案.docx_第3页
第3页 / 共20页
中南大学C++上机程序题答案.docx_第4页
第4页 / 共20页
中南大学C++上机程序题答案.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

中南大学C++上机程序题答案.docx

《中南大学C++上机程序题答案.docx》由会员分享,可在线阅读,更多相关《中南大学C++上机程序题答案.docx(20页珍藏版)》请在冰豆网上搜索。

中南大学C++上机程序题答案.docx

中南大学C++上机程序题答案

首先把以下所有内容复制到VC6.0中,然后删去注释符号适当调试就可以咯。

不用谢

我是雷锋

隔壁老王

不过哈,那个数组的貌似有些问题呢,碰上数组算我栽了吧。

/*第一题:

n为一个整数(小于10万),它加上100后是一

个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

#include

#include

usingnamespacestd;

intjudge(inta)

{

intb=sqrt(a);

if(a==b*b)

return1;

else

return0;

}

voidmain()

{

inti,t;

for(i=-99;i<100000;i++)

if

(judge(i+100)&&judge(i+168))

cout<

}*/

/*第二题:

求1000之内的完全数。

说明:

完全数就是:

除了它本身以外所有因子之和等于其

本身,例如:

6=1+2+3。

#include

usingnamespacestd;

voidmain()

{

inta,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)

cout<

sum=0;

}

}

*/

/*第三题:

求出[900,1000]间有偶数个因子(这里因子不

含1和自身)的数有多少个,其中最小的一个?

#include

usingnamespacestd;

voidmain()

{

inta,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;

}

}

cout<<"min="<

"<

}

*/

/*第四题:

编写一个自定义函数:

intf(intM,intN),f()的功能是:

对给定的正整数M和N,找出满足方程"7x+4y=M"的正整数解中x是偶数且y

是奇数的解,其中:

x,y属于[1,N]的范围。

要求:

若M和N不都是正整数,则结束函数并返回-1;只有M和N都是正整数

时,才继续求解操作,用二重循环进行求解:

(1)在函数中输出满足条件的正整数解x和y

(2)并且使函数值返回满足条件的正整数解的组数

#include

usingnamespacestd;

intf(intM,intN)

{

intx,y,k=0;

if(M<0||N<0)

{cout<<"请输入正整数";

return-1;}

{for(x=2;(M-7*x>0)&&N>=x;x+=2)

{

for(y=1;N>y;y+=2)

{

if(M-7*x-4*y==0)

{cout<<"x="<

++k;}

}

cout<<"k="<

returnk;}}

}

voidmain()

{

intM,N;

cout<<"请输入整数M:

";

cin>>M;

cout<<"请输入整数N:

";

cin>>N;

f(M,N);

}

*/

/*第五题:

编写一个自定义函数:

intf(charx,intN),f()的功

能是:

对给定的字符c和整数N,用c代表的符号打印一个N行的图案,每

行开头没有任何空格。

比如,当c为"*"且N为5时,打印的图案如本题图

所示。

且函数值返回1。

#include

usingnamespacestd;

intf(charx,intn)

{

inti,j;

for(i=1;i<=n;i++)

{

for(j=1;j<=i;j++)

cout<

cout<

}

return0;

}

intmain()

{

f('*',5);

return0;

}*/

/*第六题:

编写一个自定义函数:

intf(intN),f()的功能是:

对给定的正整数N,打印一个N行N列的由"A"、"B"、"C"以及空格""符

号组成的方阵图案。

比如,当N为5时,打印的图案如本题图所示。

函数值返回1。

#include

usingnamespacestd;

intf(intN)

{

inti,j;

chara[100][100];

for(i=0;i<=2*N-1;i++)

{

for(j=0;j<=2*N-1;j++)

{

if((j==0&&i%2==0)||(i==j&&i%2==0))

a[i][j]='A';

elseif(j>i&&i%2==0&&j%2==0)

a[i][j]='B';

elseif(j%2!

=0||i%2!

=0)

a[i][j]='\t';

else

a[i][j]='C';

}

cout<

}

return1;

}

voidmain()

{

f(5);

}

*/

/*第七题:

根据下列要求和提示,编写一个函数f(N)判断某数N是

否为"完全数",N由主函数给出;如果N是"完全数"则函数值返回1,

N不是"完全数"则函数值返回0。

"完全数"定义如下:

如果一个数恰

好等于它的因子之和(因子包括1,不包括数本身),则称该数为

"完全数"。

如:

6的因子是1、2、3,而6=1+2+3,则6是个"完全数"。

#include

usingnamespacestd;

intf(intN);

voidmain()

{

intN;

cin>>N;

if(f(N)==1)

cout<

else

cout<

}

intf(intN)

{

inta,sum=0;

for(a=1;a<=N/2;a++)

{

if(N%a==0)

sum+=a;

}

if(N==sum)

return1;

else

return0;

}

*/

/*第八题:

编写程序,求e的值,e≈1+1/1!

+1/2!

+1/3!

+1/4!

+...,

最后一项的值小于1e-6。

#include

usingnamespacestd;

intjiecheng(intN)

{

inti,c=1;

for(i=1;i<=N;i++)

c=c*i;

returnc;

}

voidmain()

{

doublee=1.0;

intt;

for(t=1;(jiecheng(t))<=100000000;t++)

e=e+1.0/jiecheng(t);

cout<

}*/

/*第九题:

有十进制数字a,b,c,d和e,求满足式子:

abcd*e=dcba

(a非0,e非0非1)的四位数中:

(1)共有多少个?

(2)最小的abcd;

(3)与之相对应的e。

#include

usingnamespacestd;

intf(intn)

{intm,sum=0;

while(n)

{

m=n%10;

sum=sum*10+m;

n=n/10;

}

returnsum;

}

voidmain()

{inti,j=0,k;

for(i=4999;i>=1000;i--)

{

if(f(i)/i*i==f(i)&&f(i)>i)

{

j++;

k=i;

}

}

cout<

cout<

cout<

}

*/

/*第十题:

有一个7层灯塔,每层所点灯数都等于该层上一层

的两

倍,灯的总数是381盏,求:

塔底灯数?

第几层的灯数为48?

#include

usingnamespacestd;

intf(intn)

{

if(n==1)

return1;

else

return2*f(n-1);

}

voidmain()

{inti,x,sum=0;

for(x=1;x<100;x++)

{

for(i=1;i<=7;++i)

{sum+=x*f(i);}

if(sum!

=381)

sum=0;

else

cout<<"x="<

}

}

*/

/*第十一题:

有3个红球,5个白球,6个黑球,从中任意取出

8个球,

且其中必须有白球,请求出共有多少种取法?

#include

usingnamespacestd;

intmain()

{

intx,y,sum=0;

for(x=1;x<=5;x++)

{

for(y=0;y<=3;y++)

{if((8-x-y)<=6)

sum++;

}

}

cout<

return0;

}

*/

/*第十二题:

求数列1,3,3,3,5,5,5,5,5,7,7,7

,7,7,7,7……。

求:

第40项的值;值为17的第1个数是数列中第几项?

#include

usingnamespacestd;

voidmain()

{

inti,sum=0;

for(i=1;sum<=40;i+=2)

sum+=i;

i-=2;

cout<

sum=0;

for(i=1;i<17;i+=2)

sum+=i;

cout<

}

*/

/*第十三题:

计算p的近似值,直到最后一项的绝对值小于

10-8为止,近似公式为

#include

usingnamespacestd;

intf(intN)

{

if(N%2==0)

return(-1);

else

return1;

}

voidmain()

{

inti,c=0;doublep=0;

for(i=1;i<100000000;i+=2)

{

c=c+1;

p+=1.0/i*f(c);

}

cout<

}

*/

//第十四题:

用牛顿迭代法求方程3x3-4x2-5x+13=0在x=1

附近的根,要求精度为10-6。

/*

#include

#include

usingnamespacestd;

doubley(doublex)

{

doubley;

y=3*x*x*x-4*x*x-5*x+13;

returny;

}

doublek(doublex)

{

doubley;

y=9*x*x-8*x-5;

returny;

}

voidmain()

{

doublex=1.0;

while

(1)

{

inta=(x-y(x)/k(x))*1000000;

intb=x*1000000;

if(a==b)

{

cout<

break;

}

else

x=x-y(x)/k(x);

}

}

*/

/*第十五题:

编写一个自定义函数:

intf(intM,intN)

,函数f的功能是:

对给定的正整数M和N,

找出满足方程"5x+6y=M"的正整数解中x和y都是偶数的

解。

要求:

若M和N不都是正整数,

则结束函数并返回-1;只有M和N都是正整数时,且

x,y∈[1,N],才继续求解操作,

并用二重循环进行求解:

(1)在函数中输出满足条件的

正整数解x和y,

(2)使函数值返回满足条件的正整数解的组数。

#include

usingnamespacestd;

intf(intM,intN)

{

intx,y,k=0;

if(M<0||N<0)

{

cout<<"请输入正整数";

return-1;

}

{

for(x=2;(M-5*x>0)&&N>=x;x+=2)

{

for(y=2;N>y;y+=2)

{

if(M-5*x-6*y==0)

{

cout<<"x="<

++k;

}

}

}

cout<<"k="<

returnk;

}

}

voidmain()

{

intM,N;

cout<<"请输入整数M:

";

cin>>M;

cout<<"请输入整数N:

";

cin>>N;

f(M,N);

}

*/

/*第十六题:

求s=2+22+222+...+222...2的和,即第n

个加数是一个n位的整数,

且各数位上的数字均为2,例如当n=4时,s=2+22

+222+2222。

要求设计一个函数intf(intn)求每一个加数,在main()中用累

加求和方式求出总和。

#include

usingnamespacestd;

intf(intN)

{

inti,p=0;

for(i=1;i<=N;i++)

p=p*10+2;

returnp;

}

intmain()

{

ints=0,i,n;

cout<<"inputn:

";

cin>>n;

for(i=1;i<=n;i++)

s=s+f(i);

cout<<"2+22+222''''''="<

return0;

}

*/

//第十七题:

所有能被13整除又能被17整除且

末位不是偶数的三位数有几个?

最大的一个?

//如何处理多个数中输出最大的

/*

#include

usingnamespacestd;

intmain()

{

inti=100,j=0,a;

for(;i<=999;i++)

{

if(i%13==0&&i%17==0&&i%2!

=0)

{a=i;

j++;}

}

cout<

return0;

}

*/

//第十八题:

基本解决,有两个疑问,为何不能执行

,为何写1.0

/*

#include

usingnamespacestd;

doublef(intn)

{

if(n==1)

return1.0;

elseif(n==2)

return2.0;

else

returnf(n-1)+f(n-2);

}

voidmain()

{

doublesum=0;

inti;

for(i=1;i<=20;i++)

sum+=f(i)/f(i+1);

cout<

cout<

}*/

*/

/*第二十题:

从键盘上输入一个正整数,判别它是否为

一回文数。

如:

123321

#include

usingnamespacestd;

voidmain()

{

inta,b,c=0,d;

cout<<"请输入正整数"<

cin>>d;

b=d;

while(b)

{

a=b%10;

c=c*10+a;

b=b/10;

}

if(d==c)

cout<<"yes";

else

cout<<"NO";

}

*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1