C++常用基本程序.docx
《C++常用基本程序.docx》由会员分享,可在线阅读,更多相关《C++常用基本程序.docx(29页珍藏版)》请在冰豆网上搜索。
C++常用基本程序
C++常用基本程序
一、数的各位表示方法
1、两位数的各位表示
个位数的表示方法:
a%10=x;例:
45%10=5;
十位数的表示方法:
a/10=x;例:
45/10=4;
2、三位数的各位表示
个位数的表示方法:
a%10=x;例:
456%10=6;
十位数的表示方法:
a%100/10=x;例:
456%100/10=5;
百位数的表示方法:
a/100=x;例:
456/100=4;
3、通式:
k=a/10(n-1)%10
A表示要求的数字,n表示要求的个数,k表示该位值。
4、给出一个不大于5位的正整数,求出它是几位数及各位上的数字。
#include
usingnamespacestd;
intmain()
{
longintn;
intwei,wan,qian,bai,shi,ge;
cin>>n;
if(n>99999)cout<<"error!
"<elseif(n>9999)wei=5;
elseif(n>999)wei=4;
elseif(n>99)wei=3;
elseif(n>9)wei=2;
elsewei=1;
wan=n/10000;
qian=n/1000%10;
bai=n/100%10;
shi=n/10%10;
ge=n%10;
if(wei==5)
cout<if(wei==4)
cout<if(wei==3)
cout<if(wei==2)
cout<if(wei==1)
cout<return0;
}
二、素数的判定
1、如果数值n除了1和它自己外,不能被其他数整除,则说明n为素数。
#include
#include
usingnamespacestd;
intmain()
{
inti,n,k;
cin>>n;
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>k)
cout<else
cout<return0;
}
对于一个数的各个除数来说,到它的平方根位置即可找出所有的除数,那么循环可以进行到这个数的平方根位置是就可以停止。
再利用循环从1到平方根位置的数进行顺次整除进行判断。
2、利用函数完成
#include
#include
usingnamespacestd;
voidp(intn)
{
intk,i;
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)
break;
if(i>k)
cout<<"是素数"<else
cout<<"不是素数"<}
intmain()
{
intn;
cin>>n;
p(n);
return0;
}
三、奇偶数的判定利用条件判断进行判定,即if语句,
if(n%2==0)则为偶数,否则为奇数
#include
usingnamespacestd;
intmain()
{
inta;
cin>>a;
if(a%2==0)
cout<<"yes"<else
cout<<"no"<return0;
}
四、数的大小的比较
(一)对三个数的排序比较
1、利用if语句实现,利用中间变量进行比较。
#include
usingnamespacestd;
intmain()
{
inta,b,c,max;
cout<<"请输入三个整数a,b,c:
";
cin>>a>>b>>c;
if(a>b)
if(a>c)/*对a和c进行比较*/
max=a;/*如果if语句的条件正确,执行这个语句,即如果a>c,将a的值赋值给max*/
else
max=c;/*如果if语句的条件不正确,执行这个语句,即如果a<=c,将c的值赋值给max*/
else
if(b>c)
max=b;
else
max=c;
cout<<"max="<return0;
}
进行两轮比较后,即可比较完
2、#include
usingnamespacestd;
intmain()
{
inta,b,c,max;
cin>>a>>b>>c;
if(a>b)
max=a;
else
max=b;
if(c>max)
max=c;
cout<<"max="<return0;
}
3、利用条件表达式比较
#include
usingnamespacestd;
intmain()
{
inta,b,c,max,min;
cin>>a>>b>>c;
min=a
a:
b;
min=minmin:
c;
max=a>b?
a:
b;
max=max>c?
max:
c;
cout<<"max="<return0;
}
(二)对多个数的比较
利用循环语句,对每个数进行顺次比较,利用中间变量,将每个数和中间变量进行比较,如果符合条件,那就刷新值,如果不符合条件,就进行下面的比较。
#include
usingnamespacestd;
intmain()
{
inttemp,max=0,min,i=0;/*首先对max进行赋初值为零,然后要和下面的输入值进
行比较,不过不赋初值,就没法和下面的值进行比较*/
cout<<"Pleaseinputscores:
";
cin>>temp;
min=temp;/*这个语句的作用是将输入值赋值给min,因为数都是大于0的,
如果赋初值为0,那么将对最小值无法进行比较,但不影响最大值*/
for(;;)
{
if(temp<0)break;/*进行条件判断,如果值为负数的时候,
结束整个循环,负责继续执行下面的语句*/
if(temp>max)max=temp;/*进行条件判断,如果值大于max,就将中间变量的值赋值给max*/
if(tempcin>>temp;/*然后输入另一个数,进行下一轮的比较*/
}
cout<<"max="<return0;
}
五、数的求和,平均值问题
1、一般的输入数据求和
#include
usingnamespacestd;
intmain()
{
inta,sum=0,i;
cin>>a;
while(a>0)
{
sum+=a;
cin>>a;
}
cout<return0;
}
2、求1+2+3+…+n;
#include
usingnamespacestd;
intmain()
{
intn,sum,i;/*计算1+2+3+...+n的值*/
sum=0;
cin>>n;
cout<<"1+2+3+...+n的值为:
";
for(i=1;i<=n;i++)
sum+=i;
cout<return0;
}
3、1+3+5+…+99的值
#include
usingnamespacestd;
intmain()
{
intn,sum,i;/*计算1+2+3+...+n的值*/
sum=0;
cin>>n;
cout<<"1+2+3+...+n的值为:
";
for(i=1;i<=n;i++)
sum+=i;
cout<return0;
}
4、2+4+6+…+100的值
#include
usingnamespacestd;
intmain()
{
intn,sum,i;/*计算1+2+3+...+n的值*/
sum=0;
cin>>n;
cout<<"1+2+3+...+n的值为:
";
for(i=1;i<=n;i++)
sum+=i;
cout<return0;
}
5、求1+2+3+…n的和不大于1000的最大自然数n
#include
usingnamespacestd;
intmain()
{
intn,s=0;
for(n=1;s<=1000;n++)
s+=n;
cout<<"n="<return0;
}
6、
n从键盘输入
#include/*计算sqrt
(1)+sqrt
(2)+...+sqrt(n)的值*/
#include
usingnamespacestd;
intmain()
{
intn,i;
doublesum=0;
cin>>n;
for(i=1;i<=n;i++)
sum+=sqrt(n);
cout<<"sum="<return0;
}
7、
#include
#include
usingnamespacestd;
intmain()
{
intn,i;
doublesum=0,s=0;
cin>>n;
for(i=1;i<=n;i++)
{
s+=sqrt(n);
sum+=s;
}
cout<<"sum="<return0;
}
8、求出分数序列2/1+3/2+5/3+8/5+13/8…,的前20项的和。
#include/*计算2/1+3/2+5/3+...的前20项的值*/
usingnamespacestd;
intmain()
{
inti,t;
doublesum=0,z,a=2,b=1;
for(i=1;i<=20;i++)
{
sum+=a/b;
t=a;
a+=b;
b=t;
}
cout<<"sum="<return0;
}
9、求出分数序列2/4+4/7+6/10+8/13+10/16+…的前20项的和
#include/*计算2/4+4/7+6/10+8/13...*/
usingnamespacestd;
intmain()
{
inti,n;
doublesum,t;
cin>>n;
for(i=1,sum=0;i<=n;i++)
{
t=(2.0*i)/(3.0*i+1);
sum+=t;
}
cout<<"2/4+4/7+6/10+8/13...的值为:
"<return0;
}
10、求n!
#include
usingnamespacestd;
intmain()
{
inti,n,sum=1
;
cin>>n;
for(i=1;i<=n;i++)
sum*=i;
cout<return0;
}
11、1!
+2!
+…+n!
,n从键盘输入
#include
usingnamespacestd;
intmain()
{
inti,n,sum=0,t=1;
cin>>n;
for(i=1;i<=n;i++)
{
t*=i;
sum+=t;
}
cout<return0;
}
12、求s=a+aa+…+a…a,共n个,其中n和a从键盘输入
#include
#include
usingnamespacestd;
intmain()
{
ints=0,i,n,k,a,z,sum;
cout<<"请输入a:
";
cin>>a;
cout<<"请输入n:
";
cin>>n;
for(k=1;k<=n;k++)
{
for(i=0;i{
z=a*pow(10,i);
s+=z;
}
sum+=s;
}
cout<<"s="<
return0;
}
13、对三个数求平均数
#include
usingnamespacestd;
intmain()
{
floata,b,c,ave=0;
cin>>a>>b>>c;
ave=(a+b+c)/3;
cout<return0;
}
14、对多个数的求和
#include
usingnamespacestd;
intmain()
{
floatx,ave=0,i;
cin>>x;
ave=x;
for(i=1;x>=0;i++)
{
cin>>x;
ave+=x;
}
ave/=i;
cout<return0;
}
六、大小写字母的转换
#include
usingnamespacestd;
intmain()
{
charch;
cout<<"请输入一个字母ch:
";
cin>>ch;
if(ch>='a'&&ch<='z')
ch+=-32;
cout<<"ch="<return0;
}
#include
usingnamespacestd;
intmain()
{
charch;
cout<<"请输入一个字母ch:
";
cin>>ch;
ch=(ch>='a'&&ch<='z')?
ch-32:
ch;
cout<<"ch="<return0;
}
七、输入一行字符,分别统计其中英文字母,数字,空格,其他字符的个数。
#include
usingnamespacestd;
intmain()
{
charc;
intletters=0,space=0,digit=0,other=0;
cout<<"enteroneline:
:
"<while((c=getchar())!
='\n')//getchar的作用是输入一个字符。
{if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
other++;
}
cout<<"letter:
"<"<"<"<return0;
}
八、求水仙花数,即一个三位数,各位的数字的立方和等于该数本身。
#include
#include//要使用数学库函数,加入此命令。
usingnamespacestd;
intmain()
{
intm,a,b,c;
for(m=100;m<=999;m++)
{
a=m/100;/*a为三位数百位数的值*/
b=m/10%10;/*b为三位数十位数的值*/
c=m%10;/*c为三位数个位数的值*/
if(m==pow(a,3)+pow(b,3)+pow(c,3))//pow(x,y)的作用是求x^y.
cout<<"m="<}
return0;
}
九、打印输出如下“*”金字塔。
*
***
*****
*******
*********
#include/*打印金字塔*/
usingnamespacestd;
intmain()
{
inti,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=5-i;j++)
cout<<"";
for(j=1;j<=2*i-1;j++)
cout<<"*";
cout<}
return0;
}
十、打印出九乘九乘法表
#include
usingnamespacestd;
intmain()
{
inti,j;
for(i=1;i<=9;i++)
{for(j=1;j<=i;j++)
cout<
cout<return0;
}
十一、输入两个正整数,求它们的最大公约数和最小公倍数。
#include
usingnamespacestd;
intmain()
{
intp,r,n,m,temp;
cout<<"Pleaseentertwonumbersn,m:
";
cin>>n>>m;
if(n{temp=n;n=m;m=temp;}
p=m*n;
while(m!
=0)
{r=n%m;n=m;m=r;}
cout<<"最大公约数为="<cout<<"最小公倍数为="<
return0;
}
十二、将一个一位数组逆序输出。
#include
usingnamespacestd;
intmain()
{
inti,a[10]={1,2,3,4,5,6,7,8,9,10},j,t;
cout<<"原数组中的数据:
\n";
for(i=0;i<10;i++)
cout<cout<for(i=0;i<=4;i++)
{j=9-i;
t=a[i];a[i]=a[j];a[j]=t;
}
cout<<"逆序存放后的数据:
"<for(i=0;i<10;i++)
cout<cout<return0;
}
十三、求Fibonacci数列
#include
usingnamespacestd;
intmain()
{
inti,f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
cout<<'\t'<if((i+1)%5==0)
cout<}
return0;
}
十四、冒泡排序
#include
usingnamespacestd;
intmain()
{
inta[21],i,j,t;
cout<<"Input20numbers:
"<for(i=1;i<=20;i++)
cin>>a[i];
for(j=1;j<=20;j++)
for(i=1;i<=20-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
cout<\n";
for(i=1;i<=20;i++)
{
cout<if(i%5==0)
cout<}
return0;
}
十五、选择排序
#include
usingnamespacestd;
intmain()
{
inta[20],i,j,t,p;
cout<<"Input20numbers:
"<for(i=0;i<20;i++)
cin>>a[i];
for(i=0;i<19;i++)
{
p=i;
for(j=i+1;j<20;j++)
if(a[j]p=j;
if(p!
=i)
{t=a[i];
a[i]=a[p];
a[p]=t;
}
}
cout<<"Thesortednumbers:
\n";
for(i=0;i<20;i++)
cout<cout<return0;
Xx<1
2x-11<=x<10
3x-11x>=10
}
Y=
十六、
#include
usingnamespacestd;
intmain()
{
intx,y;
cin>>x;
if(x<1)y=x;
elseif(x<10)y=2*x-1;
elsey=3*x-11;
cout<<"y="<return0;
}
十七、给出一个百分制成绩,要求输出等级。
成绩分为5个等级,分别为A(90——100),