有趣的C++代码(上)

  • Post author:
  • Post category:其他


1.绘制余弦曲线

#include<iostream>
#include<cmath>
using namespace std;
void main()
{
    double y;
    int x,m;
    for(y=1;y>=-1;y-=0.1)
    {
        m=acos(y)*10;
        for(x=1;x<m;x++)
            cout<<" ";
        cout<<"*";
        for(;x<62-m;x++)
            cout<<" ";
        cout<<"*"<<endl;
    }
}

2.绘制圆

#include<iostream>
#include<cmath>
using namespace std;
void main()
{
    double y;
    int x,m;
    for(y=10;y>=-10;y--)
    {
        m=2*sqrt(100-y*y);
        for(x=1;x<30-m;x++)
            cout<<" ";
        cout<<"*";
        for(;x<30+m;x++)
            cout<<" ";
        cout<<"*"<<endl;
        }
}

3.歌星大奖赛

10个评委打分,去掉最高分和最低分,剩余8个得分的平均值为选手得分。

#include<iostream>
using namespace std;
void main()
{
    double aver,sum=0;
    int a[10],n,x,i,j,t;
    for(n=0;n<10;n++)
    {
        cout<<"请输入第"<<n+1<<"位评委打分"<<endl;
        cin>>x;
        a[n]=x;
    }
    for(i=0;i<9;i++)
        for(j=i+1;j<10;j++)
            if(a[j]<a[i])
            {
                t=a[j];
                a[j]=a[i];
                a[i]=t;
            }
    for(i=1;i<9;i++)
        sum+=a[i];
    aver=sum/8;
    cout<<"该参赛选手的得分为:"<<aver<<endl;
}

4.求最大

约数

求555555的约数中最大的三位数。

#include<iostream>
using namespace std;
void main()
{
    int n,m,max;
    cout<<"请输入一个数!"<<endl;
    cin>>n;//输入555555
    for(m=100;m<=999;m++)
        if(n%m==0)
            max=m;
    cout<<n<<"的约数中最大的三位数是:"<<max<<endl;
}

5.高次方数的尾数

求13的13次方的最后三位数。

#include<iostream>
using namespace std;
void main()
{
    int i,p=1,w,b,s,g;
    for(i=1;i<=13;i++)
        p=p*13;
    g=p%10;
    s=p/10%10;
    b=p/100%10;
    w=b*100+s*10+g;
    cout<<"13的13次方的最后三位数是:"<<w<<endl;
}

6.阶乘末尾的零的个数

100!的末尾有多少个0。

#include<iostream>
using namespace std;
void main()
{
    int i,count=0;
    for(i=5;i<=100;i+=5)
    {
        count++;
        if(i%25==0)
            count++;
    }
    cout<<"100!的末尾有"<<count<<"个0"<<endl;
}

7.借书方案知多少

现将5本书借给3个人,每个人只能借一本,则可以有多少不同的借法?

#include<iostream>
using namespace std;
void main()
{
    int a,b,c,count=0;
    for(a=1;a<=5;a++)
        for(b=1;b<=5;b++)
            for(c=1;a!=b&&c<=5;c++)
                if(c!=a&&c!=b)
                {
                    count++;
                    cout<<count<<":"<<a<<","<<b<<","<<c<<"   ";
                    if(count%5==0) cout<<endl;
                }
}

8.

杨辉三角

在屏幕上显示杨辉三角。

#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
    int a[10][10],i,j,k;
    for(i=0;i<10;i++)
    {
        for(j=0;j<=i;j++)
        {
            if(j==0 || i==j)
                a[i][j]=1;
            else 
                a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
        for(k=0;k<=9-i;k++)
            cout<<"  ";
        for(j=0;j<=i;j++)
            cout<<setw(4)<<a[i][j];
        cout<<endl;
    }
}

9.数制转化

将任一十进制整数转化为任意进制形式。

#include <iostream>
using namespace std;
void main()
{
    int a[10000],b,i,j,n,p;
    cout<<"请输入一个数"<<endl;
    cin>>n;
    cout<<"您想把它转化成几进制的数"<<endl;
    cin>>p;
    for(i=0;n;i++)
    {
        b=n%p;
        n=n/p;
        a[i]=b;
    }
    for(j=i-1;j>=0;j--)
        cout<<a[j];
}

10.打渔还是晒网

某人从1990年1月1日开始“三天打鱼两天晒网”,问这个人在以后的某一天是在“打渔”,还是在“晒网”。

#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    int y,m,d,g,s,b;
    cout<<"请输入日期年/月/日"<<endl;
    cin>>y>>m>>d;
    g=(y-1991)/4*1461;
    s=m-1;
    b=d-1;
    if(y%4==0&&y%100!=0||y%400==0)
    {
        g=(y-1991)/4*1461;
        s=(y-1991)
    }

11.抓交通肇事犯

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:“车牌的前两位数字相同。”乙说:“车牌的后两位数字是相同的,但与前两位不同。”丙说:“四位的车号刚好是一个整数的平方。”请推理出车号。

#include <iostream>
using namespace std;
void main()
{
    int a,b,i,n;
    for(a=0;a<=9;a++)
        for(b=0;b<=9;b++)
        {
            n=a*1000+a*100+b*10+b;
            for(i=1;i<100;i++)
                if(i*i==n)
                    cout<<"车号是"<<n;
        }
}

12.该存多少钱

假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后五年中每年的年底取出1000元,到第五年是刚好取完,请算出他存钱时应该存多少。

#include <iostream>
using namespace std;
void main()
{
    int i;
    float n=0;
    for(i=0;i<5;i++)
        n=(n+1000)/(1+0.0063*12);
    cout<<"他存钱时应该存"<<n<<"元"<<endl;
}

13.怎样存钱利最大

假设银行正存整取存款不同期限的月息利率分别为:0.63%(期限1年);0.66%(期限2年);0.69%(期限3年);0.75%(期限5年);0.84%(期限8年);

利息=本金X月息利率X12X存款年限。

现在某人手中有2000元,请通过计算选择一种存钱方案,使得存入银行20年后获得的利息最多。

#include <iostream>
#include <cmath>
using namespace std;
void main()
{
    double i1,i2,i3,i5,i8,n1,n2,n3,n5,n8;
    double max=0,term;
    for(i8=0;i8<3;i8++)
        for(i5=0;i5<=(20-8*i8)/5;i5++)
            for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++)
                for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++)
                {
                    i1=20-8*i8-5*i5-3*i3-2*i2;
                    term=2000.0*pow(1+0.0063*12,i1)*pow(1+2*0.0066*12,i2)*
                        pow(1+3*0.0069*12,i3)*pow(1+5*0.0075*12,i5)*pow(1+8*0.0084*12,i8);
                    if(term>max)
                    {
                        max=term;
                        n1=i1;
                        n2=i2;
                        n3=i3;
                        n5=i5;
                        n8=i8;
                    }
                }
    cout<<"为了使得存入银行20年后获得的利息最多,他应该这样做:"<<endl;
    cout<<"8年期存"<<n8<<"次"<<endl;
    cout<<"5年期存"<<n5<<"次"<<endl;
    cout<<"3年期存"<<n3<<"次"<<endl;
    cout<<"2年期存"<<n2<<"次"<<endl;
    cout<<"1年期存"<<n1<<"次"<<endl;
    cout<<"20年后获得的本息和为:"<<max<<"元"<<endl;
}



版权声明:本文为asuf1364原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。