ch04 exercise1(注:07回文数 08进制转化)

#include <iostream>
#include <iomanip> // setw
#include <algorithm> // sort
#include <cmath>
#define pi 3.14159
using namespace std;

void display_01();
void display_02();
void display_03();
void display_04();
void display_05();
void display_06();
void display_07();
void display_08();
void display_09();
void display_10();
void display_11();
void display_12();
int main()
{
    //display_01();
    //display_02();
    //display_03();
    //display_04();
    //display_05();
    //display_06();
    //display_07();
    //display_08();
    //display_09();
    //display_10();
    //display_11();
    display_12();
}

/**
 *(找最大数)
 * 一个确定一次销售竞赛优胜者的程序,它输入每个销售人员的销售量,销售量最多的销售人员将赢得这次竞赛的胜利。
 * 要求编写 C++ 程序,通过一条 while 语句判定和打印用户输入的 10 个数中的最大数。你的程序应用到下面 3 个变量:
 * counter:能计数到 10 的计数器(即用于记录已输入数的个数,并用于判断何时处理完了 10 个数);
 * number:当前输入到程序的数;
 * largest:迄今为止找到的最大数。
 */

void display_01()
{
    int counter = 0;
    double number = 0.0;
    double largest = 0.0;

    cin >> number;
    largest = number;
    while(counter != 9)
    {
        cin >> number;
        largest = number > largest ? (number) : (largest);
//        if(number > largest)
//        {
//            largest = number;
//        }
//        else
//        {
//            largest = largest;
//        }

        counter ++;
    }
    cout << largest << endl;
}

/**
 * 表格输出
 * 图中内容如下:(竖割线请忽略)
 * N | 10*N | 100*N | 1000*N
 * 1 | 10   | 100   | 1000
 * 2 | 20   | 200   | 2000
 * 3 | 30   | 300   | 3000
 * 4 | 40   | 400   | 4000
 * 5 | 50   | 500   | 5000
 */

void display_02()
{
    cout << "N\t10*N\t100*N\t1000*N" << endl;
    int i = 1;
    while(i <= 5)
    {
        cout << i << "\t" << setw(2) << 10 * i << "\t" << setw(3) << 100 * i << "\t" << setw(4) << 1000 * i << endl;
        i ++;
    }
}

/**
 * 找10个数中最大的两个
 */

void display_03()
{
//    int a[10];
//    for(int i = 0;i < 10;i++)
//    {
//        cin >> a[i];
//    }
//    sort(a,a + 10);
//    cout << "The largest number is " << a[9] << endl;
//    cout << "The second largest number is " << a[8] << endl;



}

/**
 * (打印图形)
 */

void display_04()
{
    unsigned int count = 1;
    while(count <= 10)
    {
        cout << ( count % 2 ? "****" : "++++++++" ) << endl;
        /* If count is odd, count % 2 is non-zero (true), so "****" is printed;
            otherwise, count % 2 is zero (false), so "++++++++" is printed.*/
        ++count;
    }
}

/**
 * (打印图形)
 */

void display_05()
{
    unsigned int row = 10;

    while(row >= 1)
    {
        unsigned int column = 1;

        while(column <= 10)
        {
            cout << (row % 2 ? "<" : ">") ;
            ++column;
        }
        --row;
        cout << endl;
    }
}

/**
 * 星号正方形
 * 编写一个程序,它能够读入一个正方形的边长,
 * 然后打印出一个由星号和空格组成的、边长为刚读入边长的空心正方形。
 * 该程序应可以处理边长在1~20之间的所有正方形。
 */
void display_06()
{
    int l;
    cout << "请输入正方形边长(1~20): ";
    cin >> l;

    // 边长必须在1~20之间
    while(l < 1 || l > 20)
    {
        cout << "输入错误,请重新输入正方形边长(1~20): ";
        cin >> l;
    }

    for(int i = 0; i < l; ++i)
    {
        if(i == 0 || i == l - 1)
        {
            // 打印第一行和最后一行星号
            for(int j = 0; j < l; ++j)
            {
                cout << "*";
            }
            cout << endl;
        }
        else
        {
            // 打印中间部分
            cout << "*";
            for(int j = 1; j <= l - 2; ++j)
            {
                cout << " ";
            }
            cout << "*" << endl;
        }
    }
}

/**
 * 判断是否为回文数(有问题)
 */

void display_07()
{
//    int n;
//    cout << "Please enter a number: ";
//    cin >> n;//12321
//    bool isPalindrome;
//    int s = 0;
//    int l;
//    while(n != 0)
//    {
//        l = n % 10;
//        s = s * 10 + l;
//        n /= 10;
//
//        if(s != 0 && s != n)
//        {
//            isPalindrome = false;
//            break;
//        }
//    }
//
//    if(isPalindrome)
//    {
//        cout << "是回文数" << endl;
//    }
//    else
//    {
//        cout << "不是回文数" << endl;
//    }
}

/**
 * 将二进制转化为十进制数
 */
void display_08()
{
    int n;
    cout << "请输入一个二进制数:";
    cin >> n;
    int s = 0;
    int base = 1;


    while(n != 0)
    {
        int l = n % 10;
        s += l * base;
        n /= 10;
        base *= 2;
    }

    cout << "十进制数为:" << s << endl;

}

/**
 * 打印棋盘图案(暴力粘贴)
 *    * * * * * * * *
 *     * * * * * * *
 *    * * * * * * * *
 *     * * * * * * *
 */

void display_09()
{

    for(int i = 1; i <= 8; i++)
    {
        cout << "* ";
        if(i == 8)
        {
            cout << endl;
        }
    }

    cout << ' ';
    for(int i = 1; i <= 8; i++)
    {
        cout << "* ";
        if(i == 8)
        {
            cout << endl;
        }
    }

    for(int i = 1; i <= 8; i++)
    {
        cout << "* ";
        if(i == 8)
        {
            cout << endl;
        }
    }

    cout << ' ';
    for(int i = 1; i <= 8; i++)
    {
        cout << "* ";
        if(i == 8)
        {
            cout << endl;
        }
    }

    for(int i = 1; i <= 8; i++)
    {
        cout << "* ";
        if(i == 8)
        {
            cout << endl;
        }
    }

    cout << ' ';
    for(int i = 1; i <= 8; i++)
    {
        cout << "* ";
        if(i == 8)
        {
            cout << endl;
        }
    }

    for(int i = 1; i <= 8; i++)
    {
        cout << "* ";
        if(i == 8)
        {
            cout << endl;
        }
    }

    cout << ' ';
    for(int i = 1; i <= 8; i++)
    {
        cout << "* ";
        if(i == 8)
        {
            cout << endl;
        }
    }

}

/**
 * 打印2的整数幂(完整显示前十九个)
 */

void display_10()
{
    int i = 1;
    while(true)
    {
        cout << pow(2,i) << "  " ;
        if(i % 10 == 0)
        {
            cout << endl;
        }
        i++;
    }
}

/**
 * 打印圆的直径周长面积
 */

void display_11()
{
    double r;
    cout << "Please enter the radius of circle: ";
    cin >> r;

    cout << "The diameter is " << 2 * r << endl;
    cout << "The circumference is " << 2 * pi * r << endl;
    cout << "The area is " << pi * r * r << endl;
}

/**
 * 阶乘(精度不够)
 */

void display_12()
{
    int n;
    cin >> n;
    if(n == 0)
    {
        cout << "阶乘: " << 1 << endl;
    }
    int l = 1;
    for(int i = 1;i <= n;i++)
    {
        l *= i;
    }
    cout << "阶乘: " << l << endl;
    cout << "******************************" << endl;
    int m;
    cout << "请输入你需要的精度(项数):" << endl;//e = 1 + 1/1! + 1/2! + 1/3! + ……
    cin >> m;

    double s = 1;
    double o = 1;
    for(int i = 1; i < m; i++)
    {
        for(int j = 1; j <= i; j++)
        {
            o *= j;
        }

        s += 1 / o;
    }
    cout << "e 的近似值为:" << s << endl;
    cout << "*******************************" << endl;
    int x;
    cout << "请输入未知数:" << endl;
    cin >> x;

    int p;
    cout << "请输入你需要的精度(项数):" << endl;//e = 1 + 1/1! + 1/2! + 1/3! + ……
    cin >> p;
    double w = 1;
    double r = 1;
    for(int i = 1; i < p; i++)
    {
        for(int j = 1; j <= i; j++)
        {
            r *= j;
        }

        w +=  pow(x ,i) / r;
    }
    cout << "e^x 的近似值为:" << w << endl;
}


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值