}
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";
}
*/