资源描述
.
1、输入3个数,求最大数。
#include <iostream>
using namespace std;
int main()
{int a,b,c,max;
cout<<"请输入三个数字:"<<endl;
cin>>a>>b>>c;
max=(a>b)?a:b;
if(c>max)
max=c;
cout<<"最大值:"<<max<<endl;
return 0;
}
2、韩信点兵:有一个数,用3除余2;用5除余3;用7除余2;求满足条件的最小数。
#include <iostream>
using namespace std;
int main()
{
int a;
for(a=1;a<1000;a++)
{
if(a%3==2&&a%5==3&&a%7==2)
{cout<<a;
break;}
}
return 0;
}
3、求1+2+3+…+100
#include <iostream>
using namespace std;
int main()
{int s=0;
int a=1;
do
{
s=s+a;
a=a++;
}
while(a<101);
cout<<s<<endl;
return 0;
}
4、 求1-2+3-4+…-100
#include <iostream>
using namespace std;
int main()
{
int a,s=0,s1=0,s2=0;
for(a=1;a<101;a++,a++)
{
s1+=a;
}
for(a=-2;a>-101;a=a-2)
{
s2=s2+a;
}
s=s1+s2;
cout<<s<<endl;
return 0;
}
5、 求1+1/2+1/3+…+1/100
#include <iostream>
using namespace std;
void main()
{
float a,m;
float s=0;
for(a=1;a<101;a++)
{m=1/a;
s=s+m;
}
cout<<"s="<<s<<endl;
}
6、 求输入n,求n!(需判断n的合法性)递归调用
#include <iostream>
using namespace std;
int fac(int n)
{
if(n==0)
return 1;
else
return fac(n-1)*n;
}
int main()
{
while(1)
{int x,y,n;
cout<<"输入一个整数:\n";
cin>>x;
fac(x);
cout<<fac(x)<<endl;break;
}
return 0;
}
7、 求1!+2!+3!+…+10!
#include <iostream>
using namespace std;
int main()
{
int s=0;
int t=1;
int n;
for(n=1;n<11;n++)
{
t=t*n;
s=s+t;
}
cout<<"1!+2!+3!+...+10!="<<s<<endl;
return 0;
}
8、求1+1/2!+1/3!+…1/n!,直到1/n!<1E-5为止
第一种方法:
#include <iostream>
using namespace std;
void main()
{
double s=0;
double t=1;
double n=1;
do{
t=t*n;
s=s+1/t;
n++;
}
while (t<1e5);
cout<<"1/1!+1/2!+1/3!+...+1/n!="<<s<<endl;
}
第二种方法:
#include <iostream>
using namespace std;
void main()
{
double sum=0.0; //结果
double now=1.0; //现在的1/n!
double cnt=2.0; //现在的n
while(now>=1e-5)
{
sum+=now;
now/=cnt;
cnt+=1.0;
}
cout<<sum<<endl;}
9、 用公式求ex=1+x+x2/2!+x3/3!+…+xn/n!。n取20。
#include<iostream>
using namespace std;
int pow(int x, int n);
int f1(int n);
int main(int argc, char* argv[])
{
int x, n;
double ex = 1;
cin >> x;
cin >> n;
for (int i=1; i<=n; i++)
ex += pow(x, i) / (f1(i) * 1.0);
cout << ex << endl;
system("pause");
return 0;
}
int f1(int n)
{
int s = 1;
for (int i=2; i<=n; i++)
s *= i;
return s;
}
int pow(int x, int n)
{
int s = 1;
for (int i=1; i<=n; i++)
s *= x;
return s;
}
10、假定f1=1,f2=1;fn=fn-1+fn-2。输出前50项的值,且要求每行输出5个值
#include<iostream>
#include<iomanip>
using namespace std;
int f(int n)
{
int sum;
if (n<=2)
return 1;
else
sum=f(n-1)+f(n-2);
return sum;
cout<<sum;
};
int main()
{
int i,n;
cin>>n;
f(n);
for(i=1;i<=n;i++)
{cout<<"f("<<i<<"): "<<f(i)<<" ";
if(i%5==0)
{
cout<<endl;
}
}
return 0;
}
11、 判断一个数是否为素数
方法1:
# include<iostream>
# include<cmath>
using namespace std;
int main()
{int i,n,k;
cout<<"请输入一个数:"<<endl;
cin>>n;
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>k)
cout<<n<<"是素数。"<<endl;
else cout<<n<<"不是素数。"<<endl;
return 0;
}
方法2:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,n,m;
cout<<"请输入一个数:"<<endl;
cin>>n;
m=sqrt(n);
for(i=2;i<=m;i++)
if(n%i==0)
break;
if(i>m)
cout<<n<<"是素数。"<<endl;
else
cout<<n<<"不是素数。"<<endl;
return 0;
}
12、 输出2-1000中的素数及个数。且要求每行输出8个素数。
方法1:
#include <iostream.h>
#include <math.h>
int main()
{
int n=0, i, j,w,k;
for(i=2;i<=2000; i++)
{
w=1;
k=sqrt(i);
for (j=2; j<=k; j++)
if (i%j==0)
{
w=0;
break;
}
if (w)
{
++n;
if (n%8==0)
cout<<i<<endl;
else
cout<<i<<" ";
}
}
cout<<endl;
cout<<"个数n="<<n<<endl;
return 0;
}
方法2:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int i,j,n=0;
for(i=2;i<2001;i++)
{
for(j=2;j<=i;j++)
{
if(j==i)
{
cout<<i<<" ";
n++;
if(n%8==0)
cout<<endl;
}
if(i%j==0)
break;
}
}
cout<<endl;
cout<<"个数为n:"<<n<<endl;
return 0;
}
13、 输入两个整数,求最大公约数和最小公倍数。
#include<iostream>
using namespace std;
int fun1(int a,int b);
int fun2(int a,int b);
int main()
{int a,b;
cout<<"请输入两个整数:"<<endl;
cin>>a>>b;
int fun1(int a,int b);
int fun2(int a,int b);
cout<<"最大公约数:"<<fun1(a,b)<<endl;
cout<<"最小公倍数:"<<fun2(a,b)<<endl;
return 0;
}
int fun1(int a,int b)
{
int m,i;
m=a<b?a:b;
for(i=m;i>=1;i--)
{
if(a%i==0&&b%i==0)
break;
}
return i;
}
int fun2(int a,int b)
{
int n,j;
n=a<b?a:b;
for(j=n;j<=a*b;j++)
{
if(j%a==0&&j%b==0)
break;
}
return j;
}
14、 输入一个非0的一位整数x,输入一个整数n。输出n位整数x x x…x。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int m,i,s,x,n,j;
cout<<"输入一个整数x:"<<endl;
cin>>x;
cout<<"输入一个整数n:"<<endl;
cin>>n;
s=0;
{
for(i=0;i<=n;i++)
{
j=pow(10,i);
s=s+j;
}
}
m=x*s;
cout<<"结果:"<<m<<endl;
return 0;
}
15、 输入n、a。求sn=a+aa+aaa+a…a,其中a是一个非0的一位整数。
#include<iostream>
#include<cmath>
using namespace std;
int fun(int a,int b);
int main()
{
int n,a,s,i,k;
cout<<"输入一个整数n:"<<endl;
cin>>n;
cout<<"输入一个整数a:"<<endl;
cin>>a;
s=0;
for(i=0;i<n;i++)
{
k=fun(a,i);
s=s+k;
}
cout<<"Sn="<<s<<endl;
return 0;
}
int fun(int a,int b)
{
int m,i,s,j;
s=0;
{
for(i=0;i<=b;i++)
{
j=pow(10,i);
s=s+j;
}
}
m=a*s;
return m;
}
16、 输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值。
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
int x,y,m,n,i,j=1,k=0,a[20];
cout<<"请输入一个数:";
cin>>m;
y=m;
cout<<endl;
for(i=1;;i++)
{
j*=10;
n=m/j;
a[i]=n;
k++;
if(n<1)
break;
}
cout<<"您输入的位数是:"<<k<<endl;
int b=1,c,d=0;
for(i=1;i<=k;i++)
{
b*=10;
//cout<<b<<endl;
}
cout<<"你输入的数字各位分别是:";
for(i=k;i>0;i--)
{ b=b/10;
c=m/b;
m=m-c*b;
d+=c;
cout<<c<<" ";
}
cout<<endl;
//cout<<"你输入的数字是"<<k<<"位数\n";
cout<<"各位上的数字之和为:"<<d<<endl;
x=0;
do{
x=x*10+y%10;
y=y/10;
}
while(y!=0);
cout<<"逆序输出为:"<<x;
cout<<endl;
}
17、一个正整数如果恰好等于它的因子之和,这个数称为“完数”,如6=1+2+3。求1000以内所有的完数,每行5个。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int m,i;
cout<<"1000以内的完数有:";
for(m=1;m<1001;m++)
{
int c=0,n=0;
for(i=1;i<m;i++)
{if(m%i==0)
{c=c+i;}
}
if (c==m)
{n++;
cout<<c<<" ";
if(n%5==0)
{ cout<<endl;}
}
}
cout<<endl;
return 0;
}
18、 用迭代法求x=a的平方根。求平方根的迭代公式为xn+1=0.5(xn+a/xn) 。要求前后两次求出的x的差的绝对值小于1e-5为止。
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
double x1,x2,a,b;
x2=0;
x1=1.0;
b=1.0;
cin>>a;
while(b>=1e-5)
{
x2=(x1+a/x1)/2;
b=fabs(x2-x1);
x1=x2;
}
cout<<x2<<endl;
return 0;
}
19、 用牛顿迭代法求方程在1.5附近的根 2x3-4x2+3x-6=0
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
double x=1.5,x0,f,f1;
do{
x0=x;
f=2*x0*x0*x0-4*x0*x0+3*x0-6;
f1=6*x0*x0-8*x+3;
x=x0-f/f1;
}
while(fabs(x-x0)>=1e-5);
cout<<"x0="<<x0<<endl;
return 0;
}
20、 用二分法求上面的方程在(-10,10)之间的根
#include <iostream>
using namespace std;
double fun(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
double judge(double e,double a,double b)
{
double c;
c=(a+b)/2;
if(b-a<=e)
return c;
else
{
if(fun(c)==0)
return c;
else if(fun(a)*fun(c)<0)
//b=c;
return judge(e,a,c);
else
{
//a=c;
return judge(e,c,b);
}
}
}
int main()
{
double e;
cout<<"请输入精确度:"<<endl;
cin>>e;
cout<<judge(e,-10,10)<<endl;
return 0;
}
21、 打印形状为直角三角形的九九乘法表。
#include <iostream>
using namespace std;
int main()
{
int i,j,k;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{cout<<j<<"x"<<i<<"=";
k=i*j;
cout<<k<<" ";
if(i==j)
{
cout<<endl;
}
}
}
return 0;
}
22、 百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大中小马多少匹,共有多少组解?
#include <iostream>
using namespace std;
int main()
{
int x,y,z;
int m=0;
for(x=1;x<100;x++)
{
for(y=1;y<100;y++)
{
for(z=1;z<100;z++)
if((x+y+z==100)&&(6*x+4*y+z==200))
{ m++;
cout<<"第"<<m<<"种方案。"<<endl;
cout<<"大马:"<<x<<" ";
cout<<"中马:"<<y<<" ";
cout<<"小马:"<<z<<endl;
}
}
}
return 0;
}
23、 数列1,2,2,3,3,3,4,4,4,4,5,…… 问第100是多少?
#include <iostream>
using namespace std;
int main()
{
int i,m,n=0;
for(i=1;i<101;i++)
{
for(m=1;m<=i;m++)
{
n++;
if(n==100)
cout<<"第100个数:"<<i<<endl;
}
}
return 0;
}
24、 求任意一个整数的十位上的数字。
#include <iostream>
using namespace std;
int main()
{
int m,n,x;
cout<<"请输入一个数:";
cin>>m;
n=m%10;
m=(m-n)/10;
x=m%10;
cout<<endl;
cout<<"其十位数为:"<<x<<endl;
return 0;
}
25、 输入三个实数,判断能否构成三角形;若能,再说明是何种类型的三角形。
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cout<<"请输入任意三个数:";
cin>>a>>b>>c;
if((a+b)>c&&(a+c)>b&&(b+c)>a&&(a-b)<c&&(a-c)<b&&(b-c)<a)
{
if(a==b||a==c||b==c)
cout<<"是等腰三角形";
else if(a==b&&a==c)
cout<<"是等边三角形";
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
cout<<"是直角三角形";
else cout<<"是普通三角形";
}
else cout<<"不可以构成三角形。"<<endl;
return 0;
}
26、 输入任意的a,b,c求一元二次方程ax*x+bx+c=0的根。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b,c;
cout<<"请输入任意三个数a,b,c:"<<endl;
cin>>a>>b>>c;
float x1,x2,d;
d=sqrt(b*b-4*a*c);
if(d>=0)
{
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
cout<<"x1="<<x1<<endl;
cout<<"x2="<<x2<<endl;
}
else cout<<"无解"<<endl;
return 0;
}
27、 将百分制成绩转换为五级制成绩
#include <iostream>
using namespace std;
int main()
{
int s;
cout<<"请输入分数:";
cin>>s;
if(s>100||s<0)
cout<<"输入有误!";
else if(s>0&&s<60)
cout<<"不及格";
else if(s>=60&&s<80)
cout<<"及格";
else if(s>=80&&s<90)
cout<<"良好";
else if(s>=90&&s<=100)
cout<<"优秀";
return 0;
}
28、 输入年月日,判断它是该年的第多少天。
#include <iostream>
using namespace std;
int main()
{
int year,month,day,days=0,i;
cout<<"请输入年月日"<<endl;
cout<<"请输入年:";
cin>>year;
cout<<"请输入月:";
cin>>month;
cout<<"请输入日:";
cin>>day;
if(year>10000||year<0||month<0||month>13||day<0||day>31)
cout<<"有误!"<<endl;
else
if(year%4==0&&year%100==0||year%400==0)
{
for(i=1;i<month;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
days+=31;
else if(i==4||i==6||i==9||i==11)
days+=30;
else
days+=29;
}
}
else
{
for(i=1;i<month;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
days+=31;
else if(i==4||i==6||i==9||i==11)
days+=30;
else
days+=28;
}
}
cout<<"它是该年的第"<<days+day<<"天。"<<endl;
return 0;
}
29、 假定2007年的一月一日是星期三,求2009年的4月20日是星期几。
#include <iostream>
using namespace std;
long alldays(int year,int month,int day);
long alldays(int year,int month,int day)
{
int i;
long d=0;
for(i=1;i<year;i++)
if(year%4==0&&year%100==0||year%400==0)
d+=366;
else
d+=365;
for(i=1;i<month;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
d+=31;
else
if(i==4||i==6||i==9||i==11)
d+=30;
else
if(year%4==0&&year%100==0||year%400==0)
d+=29;
else
d+=28;
}
return d+day;
}
int main()
{
int date,i,d;
long x=alldays(2007,1,1);
long y=alldays(2009,4,20);
long z=alldays(2009,4,20)-alldays(2007,1,1)+1;cout<<endl;date=3;
cout<<"间隔"<<z<<"天";cout<<endl;
d=z%7;
for(i=1;i<=d;i++)
{
date++;
}
if(date>7)
date=date-7;
cout<<"星期"<<date;cout<<endl;
return 0;
}
30、 我国古代著名的孙子定理也称韩信点兵。
//用现代语言讲是:有一个数,用3除余2,用5除余3,用7除余2,求满足条件的最小数。
#include <iostream>
using namespace std;
int main()
{
int i;
for(i=1;;i++)
{
if(i%3==2&&i%5==3&&i%7==2)
break;
else
;
}
cout<<i<<endl;
return 0;
}
31、 求一个整数的各个数位上的数字之和并反序输出。
#include <iostream>
using namespace std;
int main()
{
int m1,m2,j=10,i,d=0,a[20];
cout<<"请输入任意一个数"<<endl;
cin>>m1;
m2=m1;
cout<<"反序输出各位数"<<endl;
for(i=1;;i++)
{
m1=m2%j;
m2=m2/j;
a[i]=m1;
cout<<m1<<" ";
d+=m1;
if(m2<1)
break;
}
cout<<endl;
cout<<"各位数之和为"<<d<<endl;
return 0;
}
32、 求1+2+3+……前n项的和。
#include <iostream>
using namespace std;
int main()
{
int i,n,s=0;
cout<<"请输入一个n值:"<<endl;
cin>>n;
for(i=1;i<=n;i++)
{
s+=i;
}
cout<<"前n项和为:"<<s<<endl;
return 0;
}
33、 求1-3+5-7+……的前100项的和。
方法1:
#include <iostream>
using namespace std;
int main()
{
int i,n=1,m=3,s,s1=0,s2=0;
for(i=1;i<=100;i++)
{
s1+=n;
n+=2;
}
for(i=1;i<=50;i++)
{
s2+=m;
m+=4;
}
s=s1-2*s2;
cout<<"前100项和为:"<<s<<endl;
return 0;
}
方法2:
#include<iostream.h>
void main()
{
int a=1,b=-1,i,j;
int m=1,n=1,sum=0;
for(i=1;i<=100;i++)
{
a*=b;
n=m*a;
sum+=n;
m+=2;
}
cout<<-sum;
cout<<endl;
}
34、 求1+(1+2)+(1+2+3)+(1+2+3+4)+……的前n项的和
#include <iostream>
using namespace std;
int main()
{
int i,n,s=0,s1=0;
cin>>n;
for(i=1;i<=n;i++)
{ s1+=i;
s+=s1;
}
cout<<"前n项和:"<<s<<endl;
}
35、 求n!
#include <iostream>
using namespace std;
int main()
{
int i,n;
cin>>n;
for(i=n-1;i>=1;i--)
{
n*=i;
}
cout<<"n!:"<<n<<endl;
return 0;
}
36、 求1!+2!+3!+……+n!
#include <iostream>
using namespace std;
int main()
{
int i,n,s=0,m=1;
cin>>n;
for(i=1;i<=n;i++)
{
m*=i;
s+=m;
}
cout<<"1!+2!+...+"<<n<<"!="<<s<<endl;
return 0;
}
37、 求1!-3!+5!-7!+……前n项的和
#include <iostream>
using namespace std;
int main()
{
int m,n=1,x=1,y=-1,sum=0;
double a,b=1,s=0;
cin>>m;
for(int i=1;i<=m;i++)
{
n=2*i-1;
a=1;
for(int j=1;j<=n;j++)
{
x*=y;
a*=j;
b=a*(-x);
}
sum+=b;
}cout<<sum<<" "<<endl;
return 0;
}
38、 求1*2+2*3+3*4+……前n项的和
#include <iostream>
using namespace std;
int main()
{
int m,i,n,s=0;
cin>>n;
for(i=1;i<=n;i++)
{
m=i*(i+1);
s+=m;
}
cout<<s<<" "<<endl;
return 0;
}
39、 从键盘输入一个整数,判断它是否为素数
#include <iostream>
using namespace std;
int main()
{
int n,i,m;
cin>>n;
for(i=2;i<n;i++)
{
m=n%i;
if(m==0)
break;
}
if(m==0)
cout<<"不是素数。"<<endl;
else
cout<<"是素数。"<<endl;
return 0;
}
40、 求3到1000之间的所有素数的和。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,i,k,s=0,j=0;
for(n=3;n<=1000;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)
break;
if(i>k)
{
cout<<n<<" ";
展开阅读全文