计算机二级C++ 常用代码程序.docx

上传人:b****6 文档编号:6534747 上传时间:2023-01-07 格式:DOCX 页数:31 大小:21.42KB
下载 相关 举报
计算机二级C++ 常用代码程序.docx_第1页
第1页 / 共31页
计算机二级C++ 常用代码程序.docx_第2页
第2页 / 共31页
计算机二级C++ 常用代码程序.docx_第3页
第3页 / 共31页
计算机二级C++ 常用代码程序.docx_第4页
第4页 / 共31页
计算机二级C++ 常用代码程序.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

计算机二级C++ 常用代码程序.docx

《计算机二级C++ 常用代码程序.docx》由会员分享,可在线阅读,更多相关《计算机二级C++ 常用代码程序.docx(31页珍藏版)》请在冰豆网上搜索。

计算机二级C++ 常用代码程序.docx

计算机二级C++常用代码程序

关于数的常用算法

1.求n!

#include

voidmain()

{

inti,s=1;

intn;

cin>>n;

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

s*=i;

cout<

="<

}

 

[补]求1!

+2!

+…+n!

(要点:

有一部步初始化为一)

#include

voidmain()

{

ints=0,i,j,t;

intn;

cin>>n;

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

{t=1;

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

t=t*j;

s+=t;

}

cout<<"1!

+2!

+....+"<

="<

}

或者方法二:

#include

voidmain()

{

ints=0,j,t=1;

intn;

cout<<"1!

+2!

+...+n!

="<

cin>>n;

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

{t=t*j;

s+=t;

}

cout<<"1!

+2!

+....+"<

="<

}

2.判断一个数是否是素数

#include

voidmain()

{

intx;

cin>>x;

inti;

for(i=2;i<=x-1;i++)

If(x%i==0)break;

if(i==x)

cout<

"<

elsecout<

"<

}

[补]求所有二位素数

#include

voidmain()

{

inti,t=0;

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

{

for(intj=2;j<=i-1;j++)

if(i%j==0)break;

if(j==i)

{

t++;cout<

if(t%5==0)cout<

}

}

cout<

}

3.判断一个数是否是回文数

(1)#include

voidmain()

{inta,s=0,x,b;cin>>a;

x=a;

while(x!

=0)

{b=x%10;

s=s*10+b;

x/=10;

}

if(s==a)cout<

elsecout<

}

(2,只针对4位数)#include

voidmain()

{intx,a[4],i=0,a;

cin>>x;a=x;

while(x>0)

{

a[i++]=x%10;

x=x/10;

}

for(i=0;i<2;i++)

if(a[i]!

=a[3-i])break;

if(i==2)

cout<

"<

else

cout<

"<

}

#include

voidhuiwen(inta[],intx)

{intj=0;

while(x>0)

{

a[j++]=x%10;

x=x/10;

}

}

voidmain()

{intx,a[4],i=0;

cin>>x;

huiwen(a,x);

for(i=0;i<2;i++)

if(a[i]!

=a[3-i])break;

if(i==2)

cout<

"<

else

cout<

"<

}

[补]求1000~1500之间所有的回文数

#include

voidmain()

{

intx,a[4],i,t;

for(i=1000;i<1500;i++)

{

t=i;

intj=0;

while(t>0)

{

a[j++]=t%10;

t=t/10;

}

intk;

for(k=0;k<2;k++)

if(a[k]!

=a[3-k])break;

if(k==2)

cout<

}

cout<

}

#include

voidmain()

{ints,b,x;

for(inti=10;i<1000;i++)

{x=i;s=0;

while(x!

=0)

{b=x%10;

s=s*10+b;

x/=10;

}

if(i==s)

cout<

}

}

4.判断一个数是否是完数:

所谓完数指的是它所有因子之和等于这个数本身

#include

voidmain()

{

intn;

cout<<”n=”;

cin>>n;

intt=1;

for(inti=2;i

if(n%i==0)t=t+i;

if(n==t)cout<

"<

elsecout<

"<

}

[补]求所有二位整数中所有的完数

#include

voidmain()

{

intn,k=0;

for(n=10;n<100;n++)

{

intt=1;

for(inti=2;i

if(n%i==0)t=t+i;

if(n==t)

{

k++;cout<

if(k%5==0)cout<

}

}

cout<

}

5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。

#include

voidmain()

{

inta,n,s=0;

cin>>a>>n;

inti;

intt=0;

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

{

t=t*10+a;

s+=t;

}

cout<<"s="<

}

6.求1,1,2,3,5,8,13,21…(FB数列)

#include

voidmain()

{

inta=1,b=1,c;

inti;

cout<

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

{

c=a+b;

cout<

a=b;

b=c;//交换后进行下面的运算

}

cout<

}

7.求4位整数的逆序数(求任何整数的逆序数)

#include

voidmain()

{

inta[4],n;

cin>>n;

inti=0,n1=n;

while(n1>0)

{

a[i++]=n1%10;

n1=n1/10;

}

n1=0;

for(i=0;i<4;i++)

n1=n1*10+a[i];

cout<

"<

}

8.牛顿迭代法求方程的根

#include

#include

voidmain(void)

{

floatx0,x1,a;

cout<<"输入一个正数:

";

cin>>a;

if(a<0)cout<<"不能开平方!

\n";

else

{

x1=a/2;

do

{

x0=x1;

x1=(x1+a/x0)/2;

}while(fabs(x1-x0)>1e-5);

cout<

}

}

9.输入一些数,求奇数和偶数之和,及奇数和偶数的个数,还有总和;

#include

voidmain()

{

inti=1,s=0,t=0,y;

intx;

intq1=0,q2=0;

cout<<"输入6个整数"<

while(i<=6)

{

cin>>x;

if(x%2==0)

{q1+=x;s++;

}

else

{q2+=x;t++;

}

i++;

y=q1+q2;

}

cout<<"奇数的和="<

cout<<"偶数的和="<

cout<<"所有数的总和"<

}10.求水仙花数

#include

voidmain()

{

inti,j,k;

intt1,t2;

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

for(j=0;j<10;j++)

for(k=0;k<10;k++)

{

t1=i*i*i+j*j*j+k*k*k;

t2=i*100+j*10+k;

if(t1==t2)cout<

}

cout<

}

或者:

#include

voidmain()

{

inti;

inta,b,c;

intt;

for(i=100;i<1000;i++)

{

a=i/100;

b=i%100/10;

c=i%10;

t=c*c*c+b*b*b+a*a*a;

if(i==t)cout<

}

}

一维数组的应用

1.二分法查询某个数

#include

classA

{

inta[10];

intx;

intk;//需要查找的数所在数组a的下标

public:

voidf1(intaa[],intxx)

{//初始化成员数据a和x

inti;

for(i=0;i<10;i++)

a[i]=aa[i];

x=xx;

}

voidf2()

{

intleft=0,right=9;//分别表示左边和右边数组元素的下标

intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标

while(left<=right)

{

mid=(left+right)/2;

if(a[mid]==x)

{

flag=1;

break;

}

elseif(a[mid]>x)right=mid-1;

else

left=mid+1;

}

if(flag==1)k=mid;

elsek=0;

}

voidf3()

{

inti;

for(i=0;i<10;i++)

{

cout<

if((i+1)%5==0)cout<

}

if(k==0)

cout<

"<

else

cout<

"<

}

};

voidmain()

{

intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;

cout<<"请输入要查找的数:

";

cin>>xxx;

Aa1;

a1.f1(b,xxx);

a1.f2();

a1.f3();

}

2.改进的选择排序法

#include//适当之处增加注释语句,以增加程序的可读性

classB

{

inta[10];

public:

voidf1(intbb[])

{//初始化成员数据a数组

inti;

for(i=0;i<10;i++)

a[i]=bb[i];

}

voidf2()

{//对数组a进行升序排列

inti,j,t,k;

for(i=0;i<9;i++)

{

k=i;//注意:

这是和原来的选择排序法不一致之处

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

if(a[j]

if(k!

=i)

{//注意:

这是和原来的选择排序法不一致之处

t=a[i];a[i]=a[k];a[k]=t;

}

}

}

voidf3()

{//每行输出数组a的5个元素

inti;

for(i=0;i<10;i++)

{

cout<

if((i+1)%5==0)cout<

}

}

};//此行分号不可缺省

voidmain()

{

intaa[10]={8,2,7,10,16,0,3,20,1,30};

Bb1;

b1.f1(aa);//注意实参的书写形式

b1.f2();

b1.f3();

}

3.将数插入到一个已经排序好的数组中

#include

classA

{

inta[100];

intm;//存放实际元素的个数

public:

voidf1(intaa[],intn)

{

inti;

for(i=0;i

a[i]=aa[i];

m=n;//没插入之前a实际元素个数为5

}

voidf2(intx)

{

inti=0,k;

while(a[i]=x或者i>m的时候

if(a[i]>=x)

{//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前

for(k=m-1;k>=i;k--)

a[k+1]=a[k];

a[i]=x;

}

else//说明要插入的数比原数组最后一个数还要大,即插入点在最后

a[m]=x;

m++;//插入后,数组a的实际元素要多一个

}

voidf3()

{//将新数组输出

inti;

cout<<"新数组为:

"<

for(i=0;i

cout<

cout<

}

};

voidmain()

{

intaaa[5]={1,3,5,7,9};

inti,xx;

cout<<"原数组为:

"<

for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比

cout<

cout<

cout<<"请输入需要插入的数:

";

cin>>xx;

Aa1;

a1.f1(aaa,5);

a1.f2(xx);//需要插入的数通过实参传递给形参

a1.f3();

}

4.两个数组合并成一个新数组

5.冒泡排序法

#include

classA

{

inta[10];

public:

voidf1(intaa[])

{//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据a

inti;//函数体中需要使用的全部变量的说明语句建议大家写在这里

for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值

a[i]=aa[i];//注意赋值语句顺序不可颠倒

}

voidf2()

{//该函数的作用是把成员数据a的10个数进行升序排列

inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值

for(i=0;i<9;i++)//比较几轮

for(j=0;j<9-i;j++)//每一轮比较的次数

if(a[j]>a[j+1])

{//注意这里应该写大于而不是小于

t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前

}

}

voidf3()

{//将排好序的数组a输出

inti;

for(i=0;i<10;i++)

{

cout<

if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1

}

}

};//此行的分号不可缺少

voidmain()

{

intb[]={2,1,5,0,6,10,9,8,12,3};

Aa1;

a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])

a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省

a1.f3();

}

6.选择排序法

#include//适当之处增加注释语句,以增加程序的可读性

classB

{

inta[10];

public:

voidf1(intbb[])

{//初始化成员数据a数组

inti;

for(i=0;i<10;i++)

a[i]=bb[i];

}

voidf2()

{//对数组a进行升序排列

inti,j,t;

for(i=0;i<9;i++)

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

if(a[i]>a[j])

{t=a[i];a[i]=a[j];a[j]=t;}

}

voidf3()

{//每行输出数组a的5个元素

inti;

for(i=0;i<10;i++)

{

cout<

if((i+1)%5==0)cout<

}

}

};//此行分号不可缺省

voidmain()

{

intaa[10]={8,2,7,10,16,0,3,20,1,30};

Bb1;

b1.f1(aa);//注意实参的书写形式

b1.f2();

b1.f3();

}

7.直接查找法

#include

classA

{

inta[10];

intx;

intk;//需要查找的数所在数组a的下标

public:

voidf1(intaa[],intxx)

{//初始化成员数据a和x

inti;

for(i=0;i<10;i++)

a[i]=aa[i];

x=xx;

}

voidf2()

{

inti;

for(i=0;i<10;i++)

if(a[i]==x)break;

if(i==10)

k=0;

else

k=i;

}

voidf3()

{

inti;

for(i=0;i<10;i++)

{

cout<

if((i+1)%5==0)cout<

}

if(k==0)

cout<

"<

else

cout<

"<

}

};

voidmain()

{

intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;

cout<<"请输入要查找的数:

";

cin>>xxx;

Aa1;

a1.f1(b,xxx);

a1.f2();

a1.f3();

}

二维数组的应用

1.求鞍点

#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标

#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性

classA

{

inta[N][N];

intt;//存放鞍点的值

intr,l;//存放鞍点所在行和列

public:

voidf1(intaa[][N])

{//初始化成员数组a,其他成员数据t、r、l在f2函数中求出

inti,j;

for(i=0;i

for(j=0;j

a[i][j]=aa[i][j];

}

voidf2()

{//求最值和平均值

inti,j,k;

for(i=0;i

{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数

t=a[i][0];

for(j=0;j

if(a[i][j]>t){t=a[i][j];r=i;l=j;}

for(k=0;k

if(a[k][l]

if(k==N)break;

}

}

voidf3()

{//输出各成员数据

inti,j;

for(i=0;i

{//该循环用于输出二维数组a,注意输出的格式

for(j=0;j

cout<

cout<

}

cout<<"鞍点"<

"<

}

};

voidmain()

{

intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};

Aa1;

a1.f1(aa);

a1.f2();

a1.f3();

}

2.求边界元素之和

#include

#d

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

当前位置:首页 > 表格模板 > 合同协议

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

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