/* 1、打印出所有的"水仙花数"。所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153 = 13 + 53 + 33。 */
#include<iostream.h>
void main()
{
int i, a=0, b=0, c=0;
for(i=100;i<1000;i++)
{
a=i%10;
b=i/10%10;
c=i/100%10;
if(a*a*a+b*b*b+c*c*c==i)
cout<<"i="<<i<<endl;
}
}
/* 2、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6 = 1 + 2 + 3,因此6是"完数"。编程序出1000之内的所有完数,并按下面的格式输出其因子:
6 -〉1,2,3 */
#include<iostream.h>
void main()
{
int i,j,sum=0,a[50],k,t;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
sum+=j;
a[k++]=j;
}
}
t=k;
if(sum==i)
{
cout<<i<<"->";
for(k=0;k<t;k++)
{
cout<<a[k];
if(k<t-1)cout<<",";
}
cout<<endl;
}
k=0;
}
}
/* 3、求Sn=a+aa+aaa+...+aa...a之值,其中a是一个数字。例如:2+22+222+...+22222(此时n=5),n由键盘输入。*/
#include<iostream.h>
void main()
{
double a,sn=0.0,sum=0.0;
int n,i;
cout<<"please input a number";
cin>>a;
cout<<"please input n number";
cin>>n;
sn=a;
sum=a;
for(i=2;i<=n;i++)
{
sum=sum*10+a;
sn+=sum;
}
cout<<"Sn="<<sn<<endl;
}
/* 4、一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过了多少米?第10次反弹多高?*/
#include<iostream.h>
void main()
{
double h1=100,h2=100,sum=0.0;
int i;
for(i=1;i<=10;i++)
{
sum+=h2;
h1=h1/2.0;
h2=h1*2;
}
cout<<"sum="<<sum<<" "<<"h1="<<h1<<endl;
}
/* 5、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。*/
#include<iostream.h>
void main()
{
int number,i;
number=1;
for(i=10;i>1;i--)
number=(number+1)*2;
cout<<"number="<<number<<endl;
}
第4章 函数
/* 1、写一函数用"气泡法"对输入的10个字符按由小到大的顺序排列。*/
#include<iostream.h>
void main()
{
int i,j,temp,a[10];
cout<<"please input ten numbers:\n";
for(i=0;i<10;i++)
cin>>a[i];
for(i=0;i<10;i++) //每循环一次确定数组中一个数的位置
for(j=i+1;j<10;j++) //每次循环对比一个数的大小
{
if(a[i]>a[j])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
cout<<"resort result=";
for(i=0;i<10;i++)
cout<<a[i]<<" ";
}
/* 2、用递归方法求n阶勒让得多项式的值,递归公式为
1 (n = 0)
Pn(x) = x (n = 1)
((2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n (n > 1) */
#include<iostream.h>
double fun (double,double);
void main()
{
double n,x,sum;
cout<<"input n and x"<<endl;
cin>>n>>x;
sum=fun(n,x);
cout<<"P"<<n<<"("<<x<<")"<<"="<<sum<<endl;
}
double fun(double n1,double x1)
{
if (n1==0)
return 1;
else if (n1==1)
return x1;
else if (n1>1)
return ((2*n1-1)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1))/n1;
}
#include<iostream.h>
void judge(char a[]);
void main()
{
const int size=100;
char a[size];
line(a,size);
judge(a);
}
void judge(char a[100])//判断字符类型
{
int letter=0,number=0,others=0,i=0;
while(a[i]!='\0')
{
if ((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='z')) letter++;//统计字母个数
else if (a[i]>='0' && a[i]<='9') number++;//统计数字个数
else others++;//统计其他数个数
i++;
}
cout<<"letter="<<letter<<" number="<<number<<" others="<<others<<endl;
}
/* 4、给出年、月、日,计算该日是该年的第几天。 */
#include<iostream.h>
江西教育考试院int lead(int);
void main()
{
int ly,year,month,date,i,sum=0;
cout<<"input year、month、date: ";
cin>>year>>month>>date;
int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};
ly=lead(year);
if (ly==1)
a[1]=29;//366天
else a[1]=28;//365天
for(i=0;i<month-1;i++) //当前月之前所有月天数累加和
sum+=a[i];
sum+=date; //加上当前月天数
cout<<"你输入的日期是当年的第"<<sum<<"天";
}
int lead(int y)//判断闰年
{
if((y%4==0&&y%100!=0)||(y%400==0)) return 1;//是闰年
else return 0;//不是闰年
}
/* 5、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 */
#include<iostream.h>
int cdivisor(int,int);
发布评论