C++ Primer Plus(第6版)课后编程习题答案(自敲)——第五章

C++ Primer Plus_第6版_第五章

5.9.1

编写程序,要求用户输入两个整数,程序将计算两个整数之间的所有整数和

#include <iostream>

using namespace std;

/*
编写程序,输入两个整数,计算并输出这两个整数之间的所有整数的和
*/

int main()
{
    int a, b;
    cout << "输入第一个整数(较小):";
    cin >> a;
    cout << "输入第二个整数(较大):";
    cin >> b;
    int sum = 0;
    for (;a <= b; a++) {
        sum += a;
    }
    cout << "和为:" << sum << endl;
    return 0;
}

5.9.2

使用array对象和long double重新编写程序5.4,并计算100!的值
程序5.4

#include <iostream>

const int ArSize = 16;

int main()
{
    long long factorials[ArSize];
    factorials[1] = factorials[0] = 1LL;
    for (int i = 2; i < ArSize; i++)
        factorials[i] = i * factorials[i-1];
    for (int i = 0; i < ArSize; i++)
        std::cout << i << "! = " << factorials[i] << std::endl;
    return 0;
}
#include <iostream>
#include <array>

using namespace std;

const int ArSize = 100;
/*
使用array对象和long double重新编写5.4,并计算100!的值
*/

int main()
{
    array <long double, ArSize> factorials;
    factorials[1] = factorials[0] = 1;
    for (int i = 2; i < ArSize; i++)
        factorials[i] = i * factorials[i-1];
    for (int i = 0; i < ArSize; i++)
        cout << i << "! = " << factorials[i] << endl;
    return 0;
}

5.9.3

编写程序,用户输入数字,每次输入后,程序都将报告目前为止,所有输入的累计和,当用户输入0时,程序结束

#include <iostream>

using namespace std;

/*
编写程序,用户输入数字,每次输入后,程序将报告目前为止所有输入的数据和
输入0,程序结束
*/

int main()
{
    int a = 0;
    int sum = 0;
    do {
        cout << "输入数字:";
        cin >> a;
        sum += a;
        cout << "目前所有数字和为:" << sum << endl;
    } while (a != 0);
    return 0;
}

5.9.4

Daphne 以10%的单利投资了$100,即每年$10的利息
Cleo 以5%的复利投资了$100,即每年都是以目前的资金增加5%的利息
编写程序,计算多少年后Cleo能超过Daphne,并显示目前两人的资金

#include <iostream>

using namespace std;

/*
Daphne 以10%的单利投资了$100,即每年$10的利息
Cleo 以5%的复利投资了$100,即每年都是以目前的资金增加5%的利息
编写程序,计算多少年后Cleo能超过Daphne,并显示目前两人的资金
*/

int main()
{
    int money_D = 100;
    double money_C = 100.0;
    int year = 0;
    while (money_D >= money_C) {
        money_D += 10;
        money_C *= 1.05;
        year++;
    }
    cout << "在" << year << "年以后,Daphne的钱少于Cleo" << endl;
    cout << "Daphne的钱为:$" << money_D << endl;
    cout << "Cleo的钱为:$" << money_C << endl;
    return 0;
}

5.9.5

编写程序,输入全年中每个月的销售量(图书数量)
通过循环,使用初始化为月份字符串的char*数组(或者string对象数组)逐月进行提示
并强输入的数据存储在一个int数组中,然后程序计算数组中个元素的总数,
并报告这一年的输出情况

#include <iostream>
#include <string>

using namespace std;

/*
编写程序,输入全年中每个月的销售量(图书数量)
通过循环,使用初始化为月份字符串的char*数组(或者string对象数组)逐月进行提示
并强输入的数据存储在一个int数组中,然后程序计算数组中个元素的总数,
并报告这一年的输出情况
*/

int main()
{
    string month[12] =
    {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"};
    int num_books[12] = {0};
    int sum = 0;
    for (int i = 0; i < 12; i++) {
        cout << "请输入" << month[i] << "月的销售量:";
        cin >> num_books[i];
        sum += num_books[i];
    }
    cout << "这一年总共销售了" << sum << "本书" << endl;
    return 0;
}

5.9.6

修改程序5,使用二维数组来存储输入——3年中的每个月的销售量,
程序将报告每年的销售量以及三年的总销售量

#include <iostream>
#include <string>

using namespace std;

/*
修改程序5,使用二维数组来存储输入——3年中的每个月的销售量,
程序将报告每年的销售量以及三年的总销售量
*/

int main()
{
    string month[12] =
    {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"};
    int num_books[3][12];
    int sum[4] = {0};
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 12; j++) {
            cout << "请输入第" << i+1 << "年的" << month[j] << "月的销售量:";
            cin >> num_books[i][j];
            sum[i] += num_books[i][j];
        }
        sum[3] += sum[i];
    }
    for (int i = 0; i < 3; i++) {
        cout << "第" << i+1 << "年的销量为:" << sum[i] << endl;
    }
    cout << "三年总销量为:" << sum[3] << endl;
    return 0;
}

5.9.7

编写名为car的结构体,包含生产商,生产年份。
用户输入多少辆汽车,随后使用new来创建一个由相应数量的car结构组成的动态数组,接下来,提示用户输入每辆车的生产商和年份信息,最后输出每个结构的内容

#include <iostream>
#include <string>

using namespace std;

/*
设计car结构体,存储有关汽车的信息:生产商,生产年份
编写程序,询问用户有多少辆汽车
程序使用new来创建一个由相应数量的car数组
接下来,程序提示用户输入每辆车的生产商和生产年年份
*/

struct Car {
    string brand;
    int year;
};

int main()
{
    cout << "请输入您需要的汽车数量:";
    int num = 0;
    cin >> num;
    Car *c = new Car[num];
    for (int i = 0; i < num; i++) {
        cout << "请输入第" << i+1 << "辆车的品牌:";
        cin >> c[i].brand;
        cout << "请输入第" << i+1 << "辆车的生产年份:";
        cin >> c[i].year;
    }
    for (int i = 0; i < num; i++) {
        cout << c[i].year << "生产了" << c[i].brand << endl;
    }
    return 0;
}

5.9.8

编写程序,使用一个char数组和循环来每次读取一个单词,直到用户输入done为止,随后指出用户在done之前输入了多少个单词

#include <iostream>
#include <cstring>

using namespace std;

/*
编写程序,使用char数组和循环来读取一个单词,直到用户输入done为止
该程序输出在done之前总共有多少个单词
*/

int main()
{
    char word[20];
    int sum = 0;
    cout << "请输入单词,程序将给出done之前的单词数" << endl;
    cin >> word;
    while (strcmp(word, "done")) {
        sum++;
        cin >> word;
    }
    cout << "done前面共有" << sum << "个单词" << endl;
    return 0;
}

5.9.9

修改程序8,使用string对象

#include <iostream>

using namespace std;

int main()
{
    string s;
    int sum = 0;
    cout << "请输入单词,程序将给出done前面的单词数" << endl;
    cin >> s;
    while (s != "done") {
        sum++;
        cin >> s;
    }
    cout << "done前面共有" << sum << "个单词" << endl;
    return 0;
}

5.9.10

编写程序,用户输入一个值,指出要显示多少行,然后程序显示对应行数的星号,每一行包含的字符数等于用户指定的行数,星号不够的情况下,在星号前面加上句号

#include <iostream>

using namespace std;

/*
编写程序,用户输入一个值,表示要显示多少行
程序将显示对应行数的星号,在星号不够的情况下,用句号代替
*/

int main()
{
    int num = 0;
    cout << "请输入要打印的行数:";
    cin >> num;
    for (int i = 0; i < num; i++) {
        for (int j = num - i - 1; j >= 0; j--) {
            cout << ".";
        }
        for (int j = 0; j < i+1; j++) {
            cout << "*";
        }
        cout << endl;
    }
    return 0;
}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逸人止

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值