经典c++程序

斐波那契前30项:

#include<iostream.h>

int main()

{

int f1=1,f2=1,i;

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

{cout<<f1<<" "<<f2<<" ";

f1=f1+f2;

f2=f1+f2;

}

cout<<endl;

return 0;

}


判断素数:

#include<iostream.h>

int main()

{

int i,n,k=1;

cout<<"检验:";

cin>>n;

for(i=2;i<=n/2;i++)

if(n%i==0)

{k=0;break;

}

if(k==1)

cout<<n<<"是素数"<<endl;

else

cout<<n<<"非素数"<<endl;

return 0;

}



九九乘法表:

#include<iostream.h>

main()

{

     for (int i=1;i<=9;i++) {

        cout<<i;

        for (int j=1;j<=9;j++)

            cout<<'\t'<<i<<"*"<<j<<"="<<i*j;

        cout<<endl;

    }

}


最大公约数:

#include<iostream.h>

int main()

{

int n1,n2,m,k;

cout<<"n1"<<"=";

cin>>n1;

cout<<"n2"<<"=";

cin>>n2;

for(k=1;k<=n1&&k<=n2;k++)

if(n1%k==0&&n2%k==0)

m=k;

cout<<"最大公约数"<<"="<<m<<endl;

return 0;

}


最小公倍数:

#include<iostream.h>

int fun(int x,int y)

{

int j=1,m,n;

m=j%x;

n=j%y;

while(m!=0||n!=0)

{j=j+1;

m=j%x;

n=j%y;

}

return j;

}

int main()

{int x1,x2,j;

cout<<"请输入两个数:"<<endl;

cin>>x1>>x2;

j=fun(x1,x2);

cout<<j<<endl;


return 0;

}


冒泡由小到大排序:

#include<iostream.h>

int main()

{

const int n=6;

int a[n]={2,8,5,9,3,7},i,j,t;

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

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

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

{t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

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

cout<<a[i];

cout<<endl;

return 0;

}


2--9进制数转换为十进制:

#include<iostream.h>

int fun(char *p,int m)

{int n;

n=*p-Ɔ'

p++;

while(*p!=0)

{n=n*m+*p-Ɔ'

p++;}

return n;}

void main()

{char s[5];

int m,n;

cin>>m>>s;

n=fun(s,m);

cout<<"十进制数为"<<n<<endl;

}


输出菱形:

#include<iostream.h>

int main()

{

int i,j,k;

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

{for(j=0;j<=2-i;j++)

cout<<" ";

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

cout<<"*";

cout<<endl;

}

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

{for(j=0;j<=i;j++)

cout<<" ";

for(k=0;k<=4-2*i;k++)

cout<<"*";

cout<<endl;

}

return 0;

}


两个字符串连接:

#include<iostream.h>

void fun(char p1[],char p2[])

{int i,j;

for(i=0;p1[i]!='\0'i++);

  for(j=0;p2[j]!='\0'j++)

   p1[i++]=p2[j];

p1[i]='\0'}

void main()

{char s1[20],s2[20];

cin>>s1>>s2;

fun(s1,s2);

cout<<s1<<endl;

}


不小于6的偶数用两个素数表示:

#include<iostream.h>

#include<math.h>

int main()

{

int a,b,c,d;

cout<<"不小于6的偶数:";

cin>>a;

cout<<"分解:"<<endl;

for(b=3;b<=a/2;b=b+2)

{for(c=2;c<=sqrt(b);c++)

if(b%c==0)

break;

if(c>sqrt(b))

d=a-b;

else

break;

for(c=2;c<=sqrt(d);c++)

if(d%c==0)

break;

if(c>sqrt(d))

cout<<a<<"="<<b<<"+"<<d<<endl;

}

return 0;

}


汉诺塔:

#include<iostream.h>

void move(char x,char y)

{cout<<x<<"-->"<<y<<endl;

}

void hanio(int n,char one,char two,char thr)

{

if(n==1)

move(one,thr);

else

{hanio(n-1,one,thr,two);

move(one,thr);

hanio(n-1,two,one,thr);

}

}

int main()

{

int m;

cout<<"汉诺塔高度:";

cin>>m;

hanio(m,'A','B','C');

return 0;

}


删除字符串中所有*号:

#include<iostream.h>

int main()

{

int i,j=0;

char a[20]="ssgyu***hsja**sh";

for(i=0;a[i];i++)

if(a[i]!='*')

a[j++]=a[i];

a[j]='\0'

cout<<a<<endl;

return 0;

}


将数组元素逆序输出:

#include<iostream.h>

void main()

{const int n=6;

int i,a[n]={2,3,5,1,7,6},t;

for(i=0;i<=(n-1)/2;i++)

{t=a[i];

a[i]=a[n-i-1];

a[n-i-1]=t;}

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

  cout<<a[i]<<" ";

cout<<endl;}


10进制转换为2—9进制数:

#include<iostream.h>

int main()

{

int i,j,num,k=-1;

int a[]={0};

cin>>num>>j;

while(num!=0)

{a[++k]=num%j;

num=num/j;}

for(i=k;k>0;k--)

  cout<<a[k];

}


统计在tt数组中a-z各自出现的次数存入ss中:

void fun(char *tt,int *ss)

{int i;

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

  ss[i]=0;

for(i=0;tt[i]!='\0'i++)

  if(tt[i]>='a'&&tt[i]<='z')

    ss[tt[i]-'a']++;}


金字塔:

#include<iostream.h>

int main()

{

int i,j,m,n;

cout<<"金字塔层数:";

cin>>n;

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

{for(j=1;j<=n-i;j++)

cout<<" ";

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

cout<<m;

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

cout<<m;

cout<<endl;


}

cout<<endl;

return 0;

}


杨辉三角:

#include<iostream>

#include<iomanip>

using namespace std;

int main() 

{

int a[10][10],i,j; 

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

{

for(j=10;j>=i;j--)

cout<<"  ";/*两个空格*/

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

{

if(i==j||j==0)

a[i][j]=1;

else

a[i][j]=a[i-1][j]+a[i-1][j-1]; 

cout<<setw(3)<<a[i][j]<<' ' /*%3d后一个空格*/

if(i==j)

cout<<endl;

}

}

return 0;

}


//c++新建文件

#include <fstream.h>

#include<stdlib.h>


int main()

{

int a[10];

ofstream out("f1.dat",ios::out);

if(!out)

{cerr<<"open error"<<endl;

exit(1);

}

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

{cin>>a[i];

out<<a[i]<<" ";

}

out.close();

return 0;

}


//c++读取文件

#include<fstream.h>

#include<stdlib.h>

int main()

{

int a[10],max,i,order=0;

ifstream in("f1.dat",ios::in);

if(!in)

{cerr<<"open error"<<endl;

exit(1);

}

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

{in>>a[i];

cout<<a[i]<<" ";

}

cout<<endl;

max=a[0];

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

if(a[i]>max)

{max=a[i];

order=i;

}

cout<<max<<endl<<order<<endl;

in.close();

return 0;

}


strcpy函数:

char *strcpy(char *str1,const char *str2)

{assert(str1!=NULL&&str2!=NULL);

char *addr=str1;

while(*str1++=*str2++);

return addr;

}


strlen函数:

int strlen(const char *str)

{assert(str!=NULL);

int len;

while(*str++)

  len++;

return len;

}


指针和引用的数字交换:

void swap(int *p1,int *p2)

{int t;

t=*p1;*p1=*p2;*p2=t;}


void swap(int &p1,int &p2)

{int t;

t=p1;p1=p2;p2=t;}


两个变量a,b,不用if,?:,switch,找出最大的一个数:

int max=((a+b)+abs(a-b))/2


将a,b交换,不用任何其他变量:

a=a^b;b=a^b;a=a^b;

a=a+b;b=a-b;a=a-b;


const指针:

1 指向常对象的指针:

const int *p=&a; *p是常量

2 指向对象的常指针:

int *const p=&a; p是常量

3 指向常对象的常指针

const int *const p=&a; p与*p均是常量


int OrderSearch(int dat[],int kk,int len)//顺序查找

{

for(int ix=0;ix!=len;++ix)

{

if(dat[ix]==kk)

{

return ix;

}

}

return -1;

}


int HalfSearch(int dat[],int kk,int len)//二分查找(折半查找)

{

int low=0,high=len-1,mid;

while(low<=high)

{

mid=(low+high)/2;

if(dat[mid]==kk)

{

return mid;

}

else if(dat[mid]>=kk)

{

high=mid-1;

}

else

{

low=mid+1;

}

}

return -1;

}


void InsertSort(int dat[],int len)//直接插入排序(第一个数不算)

{

for(int ix=2;ix!=len;++ix)

{


dat[0]=dat[ix];

for(int iy=ix-1;dat[iy]>dat[0];--iy)

{

dat[iy+1]=dat[iy];

}

dat[iy+1]=dat[0];

}

}


void ShellSort(int dat[], int len)//希尔排序(第一个数不算)

{

int increase;

    for (increase=len/2; increase>=1; increase=increase/2)    //以增量为increase进行直接插入排序

{

    for (int ix=increase+1; ix<len; ix++)   

{   

dat[0]=dat[ix];                 //暂存被插入记录

            for (int jx=ix-increase; jx>0 && dat[0]<dat[jx]; jx=jx-increase)

{

                dat[jx+increase]=dat[jx];//记录后移increase个位置

}

            dat[jx+increase]=dat[0];

}

}

}


void BubbleSort(int dat[], int len)//起泡排序

{

for(int ix=1;ix<len;ix++)

{

for(int jx=0;jx<len-1;jx++)

{

if(dat[jx]>dat[jx+1])

{

int temp=dat[jx];

dat[jx]=dat[jx+1];

dat[jx+1]=temp;

}

}

}

}


void SelectSort(int dat[], int len)//选择法排序

int index;//索引

    for (int ix=0; ix<len-1; ix++)              //对n个记录进行n-1趟简单选择排序

{  

       index=ix;

       for (int jx=ix+1; jx<len; jx++)     //在无序区中选取最小记录

  {

      if (dat[jx]<dat[index])

  {

  index=jx;

  }

  }

       if (index!=ix) 

  {

  int temp=dat[ix];

  dat[ix]=dat[index];

  dat[index]=temp;

  }

}

}


void Insert(int dat[],int len)//插入法排序

{

for(int ix=1;ix!=len;++ix)

{

int temp=dat[ix];

for(int jx=ix-1;dat[jx]>temp&&jx>=0;--jx)

{

dat[jx+1]=dat[jx];

}

dat[jx+1]=temp;

}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值