美文网首页
第三章 程序控制

第三章 程序控制

作者: Redcarp | 来源:发表于2019-01-19 19:20 被阅读0次

    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;  
    }
    

    相关文章

      网友评论

          本文标题:第三章 程序控制

          本文链接:https://www.haomeiwen.com/subject/tjvzdqtx.html