第三章 程序控制

2019-01-19  本文已影响0人  Redcarp

1.数字逆序
【问题描述】输入一个int型的整数num,逆向输出其各位数字,同时求出其位数以及各位数字之和。
【输入形式】输入流(标准)输入,输入一个整数。
【输出形式】输出流(标准)输出。结果为三行,第一行为逆向数字,第二行为各位数字之和,第三行为数字位数。
【样例输入】1000
【样例输出】

                0001

                1

                4

【样例说明】注意输出位置在每行开始,不要有其他输出语句,不要有其他多余符号。如有测试必要请使用cerr。
【评分标准】提交文件名为3-8.cpp。

#include <iostream>
using namespace std;
int main()
{
    int num,x,y=0,sum=0;//num为输入值,x为每次最低位的值,
    //y为此数的位数(也代表运算进行的次数),sum为各位数的数值 
    cin>>num;
    while(num>0)//保证输入数值大于0 
    {
        x=num%10;//取最低位的值 
        num/=10;//缩小数值,保留整数部分 
        cout<<x;//没有endl(代表一行结束,输出下一行,end of line)
        //此处为不停输出x值 
        sum+=x;//各位数的数值计入总和 
        y++;//处理运算的次数代表此数的位数 
    }
    cout<<endl;//要换行啦 ,endl(代表一行结束,输出下一行,end of line) 
    cout<<sum<<endl;// sum为各位数的数值
    cout<<y<<endl;// 为此数的位数(也代表运算进行的次数)
    return 0;
}

2.百鸡问题
【问题描述】n元买100只鸡,大鸡5元每只,小鸡3元每只,还有1/3元每只的小鸡,分别记为x只,y只,z只,求所有解 。
【输入形式】标准输入,总钱数n
【输出形式】标准输出,输出x y z 的值,按照x,y,z依次增大顺序输出
【样例输入】100
【样例输出】

        x=0,y=25,z=75

        x=4,y=18,z=78

        x=8,y=11,z=81

        x=12,y=4,z=84

【样例说明】每行一个解,注意逗号为英文字符,每行数据顶格输出。
【评分标准】给出n,正确得出所有求解结果,提交源文件名称3-10.cpp。

#include<iostream>
using namespace std;
int main()
{
    int n,z;//n元买100只鸡,大鸡5元每只,小鸡3元每只,还有1/3元每只的小鸡
    //分别记为x只,y只,z只
    cin>>n;
    for(int x=0;x<=100;x++)
        for(int y=0;y<=100;y++)
            {
                z=100-x-y;
                if(15*x+9*y+z==3*n)
                    cout<<"x="<<x<<','<<"y="<<y<<','<<"z="<<z<<endl;
                    //按照x,y,z依次增大顺序输出??? 
                    //怎么调整呢???一出来默认就是???
            }
    return 0; 
}

3.猴子吃桃问题
【问题描述】猴子吃桃问题。猴子第1天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第2天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第n天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子?
【输入形式】标准输入,剩下一个桃子的天数n。
【输出形式】标准输出,第一天共摘的桃子个数。
【样例输入】10
【样例输出】1534
【样例说明】只需输入和输出数据,不要有多余字符出现,有测试输出时请使用cerr。
【评分标准】 给出天数,正确输出第一天摘桃子个数,上传源文件名称3-16.cpp。

#include<iostream>
using namespace std;
int main()
{
    int n,x=1,i=1;//n为输入天数,x为倒数第一天(即只剩一颗桃的那天)所拥有的桃,
//y为倒数第二天所拥有的桃(已省去),接下来不断迭代,交换数值 
    cin>>n;
    for(;i<n;i++)//i 是循环次数,循环次数比天数n少一次
//写for程序之前要有明确概念,究竟循环多少次 ,以哪个量为参照 
    x=(x+1)*2;
    cout<<x;
    return 0;//n>=31时,int数据溢出,将会输出负值 
}

4.比赛对阵策略
【问题描述】两个乒乓球队进行比赛,各出三人。甲队为A,B,C三人,乙队为X,Y,Z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和X比,C说他不和X,Z比,请编程找出三对赛手间的对阵情况。
【输入形式】无
【输出形式】标准输出,三对赛手对阵对阵情况,每对内部用“--”隔开,每对间使用空格隔开。
【样例输入】
【样例输出】A--Z B--X C--Y
【样例说明】注意输出格式,空格和回车不要出现混乱。
【评分标准】正确输出结果。

#include <iostream>
using namespace std;
int main()
{
    char i,j,k;//i-A,j-B,k-C
    for (i='X';i<='Z';i++)
        for (j='X';j<='Z';j++)
            for (k='X';k<='Z';k++)
            {
                if ((i!=j&&i!=k&&j!=k)&&i!='X'&&k!='X'&&k!='Z')
                    cout<<"A--"<<i<<"  "<<"B--"<<j<<"  "<<"C--"<<k<<endl;
            }
    return 0;  
}
上一篇下一篇

猜你喜欢

热点阅读