c++新手上路

C++

(看到问题先试着做做看,再参考别人,望有收获)

8-3倒序输出(ReverseOrder)

程序说明:这个程序是输入4个无符号整数,然后倒序显示输出结果如输入1234,则输出4321。
实现方法1:

// number1/1000     这个是千位数
// (number1/100)%10 这个是百位数
// (number1/10)%10  这个是十位数
// number1%10       这个是个位数

实现方法2:
如果不是输出一个整体的数,而是出现效果,可以使用这个数的求余(%10)得到最后一个数,这个数/10去掉最后一个数,如此循环和输出就可以得到效果,可以通过do while或者for实现。
进阶:如果输入一个未知长短的数字,求倒序输出。
(要注意数字类型长短的问题)
实现方法:先求出这个数的个数。
然后循环个数的次数倒序输出结果。
作用:可以作用于一下对称图案输出

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    int number1;    //输入的数字
    int number2;    //返回的数字
    cout<<"输入一个4位数,让它倒序输出:"<<endl;
    cin>>number1;
    //以下是number1位置上数字的表达方法
    //number1%10            这个是个位数
    //(number1/10)%10       这个是十位数
    //(number1/100)%10      这个是百位数
    //number1/1000          这个是千位数
    //也可以用%10得到最右边的数字,然后在/10去掉一位数字。
    number2 = (number1%10)*1000+(number1/10)%10*100+(number1/100)%10*10+number1/1000;
    cout<<number2<<endl;

    //实现打印倒序输出(do{}while();)
    int number3;    //输入的值
    cout<<"输入一个4位数,让它倒序输出:"<<endl;
    cin>>number3;
    do{
        cout<<number3%10;       //求出最右边的数字
        number3  = number3/10;  //却掉最右边的数字
    }while(number3>0);
    //实现打印倒序输出(for())
    cout<<" "<<endl;
    cout<<"以下是通过for循环实现方法"<<endl;
    int number4;
    cout<<"输入一个4位数,让它倒序输出:"<<endl;
    cin>>number4;
    for(int i=0;i<=3;i++)
    {
        cout<<number4%10;
        number4  = number4/10;
    }
    cout<<" "<<endl;

    //以下是实现未知数倒序打印输出和整体输出的实现方法
    long number5;   //输入的值
    long temp;      //储存number5求出数字位数
    long number6=0; //用来储存输出的数
    int numberCount =0; //字符长度
    cout<<"请输入随意长度数字:"<<endl;
    cin>>number5;
    temp =number5;
    while(temp!=0)      //求出这个数的长度
    {
        temp =temp/10;
        numberCount++;
    }
    cout<<"这个数是"<<numberCount<<"位。"<<endl;
    cout<<"这个数的倒序输出是"<<endl;
    for(int i=1;i<=numberCount;i++)
    {
        cout<<number5%10;
        number6+=(number5%10)*pow(10,numberCount-i);
        number5 =number5/10;
    }
    cout<<" "<<endl;
    cout<<"这个数的倒序输出是"<<number6<<endl;
    return 0;
}

8-4最小值(MinNumber)

程序说明:输入要输入数字的数目,分别输入值,得到最小值。
实现方法:确定要输入多少个,创建数组,遍历输出数组,输出最小值
进阶1:如果输入个数是单数,就输出大小在中间的值,如果输入个数是双数,就输出中间的两个值。
实现方法:先判断个数是单数还是双数,单数就进行遍历找出中间的值,双数就遍历找出中的两个的值,进行多个遍历进行数组的排列,再调出中间的数。
进阶2:输入未知数量的数字,进行排列,输出分别满足条件的值和该值为排序之前的序号(未实现)。

#include <iostream>
using namespace std;

int main() {
    int numberCountOne;     //输入数字的个数
    cout<<"请输入您要多少个数字"<<endl;
    cin>>numberCountOne;
    cout<<"请开始输入:"<<endl;
    int numberOne[numberCountOne];//数组来储存
    int min;                //储存最小数
    for(int i=0;i<numberCountOne;i++)
    {
        cout<<"第"<<i+1<<"个数是:";
        cin>>numberOne[i];
    }
    cout<<" "<<endl;
    cout<<"您输入的数是:";
    for(int i =0;i<numberCountOne;i++)
    {
        cout<<numberOne[i]<<" ";
        min = numberOne[0];
        if(numberOne[i]<numberOne[0])
        {
            min = numberOne[i];
        }
    }
    cout<<"这些数中最小的数是:"<<min<<endl;
    /*
     进阶:寻找中间的值,如果输入个数是单数,就输出大小在中间的
     值,如果输入个数是双数,就输出中的两个值。
    */
    int numberCountTwo;
    cout<<"请输入您需要输入的数字个数:";
    cin>>numberCountTwo;
    int number[numberCountTwo];
    if(numberCountTwo%2)    //如果是单数
    {
        cout<<"您输入的是单数:"<<numberCountTwo<<endl;
        for(int i=0;i<numberCountTwo;i++)
        {
            cout<<"请输入第"<<i+1<<"的值:";
            cin>>number[i];
        }
        cout<<"现在进行数组排列。"<<endl;
        int temp;           //用来交换数字
        for(int i=0;i<numberCountTwo-1;i++)
        {
            for(int j=0;j<numberCountTwo-1-i;j++)
            {
                if(number[j]>number[j+1])
                {
                    temp =number[j+1];
                    number[j+1]=number[j];
                    number[j] =temp;
                }
            }
        }
        for(int i=0;i<numberCountTwo;i++)
        {
            cout<<number[i]<<" ";
        }
        cout<<" "<<endl;
        cout<<"现在帮你找出大小排序在中间的值。"<<endl;
        cout<<"中间的值是"<<number[numberCountTwo/2]<<endl;
    }
    else
    {
        cout<<"您输入的是双数:"<<numberCountTwo<<endl;
        for(int i=0;i<numberCountTwo;i++)
        {
            cout<<"请输入第"<<i+1<<"的值:";
            cin>>number[i];
        }
        cout<<"现在进行数组排列。"<<endl;
        int temp;           //用来交换数字
        for(int i=0;i<numberCountTwo-1;i++)
        {
            for(int j=0;j<numberCountTwo-1-i;j++)
            {
                if(number[j]>number[j+1])
                {
                    temp =number[j+1];
                    number[j+1]=number[j];
                    number[j] =temp;
                }
            }
        }
        for(int i=0;i<numberCountTwo;i++)
        {
            cout<<number[i]<<" ";
        }
        cout<<" "<<endl;
        cout<<"现在帮你找出大小排序在中间的两个值。"<<endl;
        cout<<"中间的两个数分别是"<<number[numberCountTwo/2-1]
            <<"和"<<number[numberCountTwo/2]<<endl;
    }
    //实现输入一些数字,位数不知


    return 0;
}

之后再进行优化和方法的调用

8-5有序分数(OrderlyScoresAdd)

程序说明:有一个分数序列2/1、3/2、5/3、8/5…求其前n项之和。
实现方法:找出规律,使用循环进行求出每个位置上的数,再求和。
进阶:多个规律结合起来,中间数的变化,比如top=top+down,down=top-down。
其他规律:分母分别为2,4,6,8,10,12,分子分别为2,3,4,5,6,7,求它们的和

#include <iostream>
using namespace std;

int main() {
    double downNumber =1;   //分母
    double topNumber =2;    //分子
    int numberCount;        //输入要求的个数
    double Number =0;       //储存由分子和分母组成的数字
    double sumNumber =0;    //数的和
    cout<<"这是有规律的分数,数序列2/1、3/2、5/3、8/5"<<endl;
    cout<<"开头是2/1,请输入要计算第几位的和:";
    cin>>numberCount;
    for(int i=1;i<=numberCount;i++)
    {
        Number =topNumber/downNumber;
        sumNumber+=Number;
        topNumber =topNumber+downNumber;
        downNumber = topNumber -downNumber;
    }
    cout<<"输出的结果为:"<<sumNumber<<endl;

    /*
    以下为其他的规律
    分母分别为2,4,6,8,10,12
    分子分别为2,3,4,5,6,7
    求第n个数的和
    */
    cout<<"这是有规律的分数,数序列2/2、4/3、6/4、10/5"<<endl;
    cout<<"开头是2/2,请输入要计算第几位的和:";
    float topNumberOne =2;  //分子
    float downNumberOne =2; //分母
    float numberOne=0;      //组成的数
    float sumNumber1 =0;    //和
    int n1;                 //个数
    cout<<"开头是2/2,请输入要计算多少个数字:";
    cin>>n1;
    for(int i=1;i<=n1;i++)
    {
        numberOne =topNumberOne/downNumberOne;
        sumNumber1+=numberOne;
        topNumberOne = 2*(i+1);
        downNumberOne = 2+i;
    }
    cout<<"输出的结果为:"<<sumNumber1<<endl;
    return 0;
}

8-6多重数字的和(MultipleNumbers)

程序说明:求a+aa+aaa+aaaa+ ……+aaaa…aaa(n个)的和
实现方法:可以通过求出每个位置上的a的值,对应的位数就是该位置的数字位数,比如第3个数字的位数为3。
(总结,pow()函数要使用#“math.h”,是浮点运算,要使用浮点类型,不然会有误差)
Printf()函数要使用 “stdio.h”
进阶:求阶乘的值

#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;

int main() {

    int n=0;    //多少个这样的数
    int a=0;  //选择什么样的数字
    long sum=0;//数字群的和
    cout<<"请输入您需要什么样的数字:";
    cin>>a;
    cout<<"请输入您需要多少个这样的数字相加:";
    cin>>n;
    double number[n];
    double temp=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=i;j++)
        {
            temp+=a*pow(10,j);
        }
        number[i] =temp;
        cout<<number[i]<<endl;
        temp =0;
    }
    for(int i =0;i<n;i++)
    {
        sum+=number[i];
    }
    cout<<sum<<endl;

    //以下是求阶乘的和
    int number1;
    int sum1=1; //结果储存
    cout<<"请问你要求数字多少的阶乘:";
    cin>>number1;
    cout<<"这个数的阶乘结果是:"<<endl;
    for(int i =1;i<=number1;i++)
    {
        sum1*=i;
    }
    cout<<sum1<<endl;

    return 0;
}

8-7猜数字(Guess the number)

程序说明:猜幻数游戏。由系统随机给出一个数字(即幻数),游戏者去猜,如果猜对,则打印成功提示;否则,打印出错提示,并提示游戏者悬着下一步动作,最多可以猜5次
实现方法:先随机一个数字,开始猜,猜大了就提示大了,猜小了就提示小了,猜对了就提示对了,最多可以猜5次,猜5次就提示,不能再猜了。

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define random(x)(rand()%x)

using namespace std;

int main() {

    int number;     //用来装随机的数字
    int GuessNumber;//用来装玩家猜的数字
    int n;          //要猜的次数
    int guessCount = 0; //记录猜的次数
    srand((int)time(0));
    number =random(100);
    cout<<"请输入要猜的次数:";
    cin>>n;
    cout<<"数字已经生成,请开始竞猜:";
    for(int i =1;i<=n;i++)
    {
        cin>>GuessNumber;
        if(GuessNumber>number)
        {
            cout<<"大了,需要猜小点。"<<endl;
        }
        else if(GuessNumber<number)
        {
            cout<<"小了,需要猜大点。"<<endl;
        }
        else
        {
            cout<<"恭喜你!猜对了。"<<endl;
            break;
        }
        if(i<n)
        {
            cout<<"你已经猜了"<<guessCount<<"次了,请把握机会!"<<endl;
        }
        else
        {
            cout<<"你已经猜了"<<n<<"次了,很可惜!"<<endl;
        }
        guessCount++;
        cout<<"请继续:";
    }
    cout<<"这个数字是:"<<number<<endl;
    cout<<"一共猜了:"<<guessCount<<"次。"<<endl;
    return 0;
}

8-8制作生日卡(BirthdayCard)

程序说明:能够编写生日卡片的程序,使其能够输入和显示日期。

#include <iostream>
using namespace std;

struct Birthday //成员类型
{
    char name[8];//名字       类型判断为string  char[]
    int month;  //月份    int month
    int day;    //天数    int day
};
int main() {
    Birthday birthday;
    cout<<"请输入名字:";
    cin>>birthday.name;
    cout<<"请输入生日的月份:";
    cin>>birthday.month;
    cout<<"请输入生日所在月份的天数:";
    cin>>birthday.day;
    cout<<" "<<endl;
    cout<<"成员:"<<birthday.name<<","<<birthday.month<<"月"<<birthday.day<<"日,生日!"<<endl;
    return 0;
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值