c++新手上路

来源:互联网 发布:羡慕别人知乎 编辑:程序博客网 时间:2024/06/01 07:32

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;}
1 0
原创粉丝点击