C++ Primer 从入门到放弃 之 第一章 练习题

本文详细介绍了C++ Primer第一章的练习,包括1.1至1.6节的练习内容。从创建并编译cpp文件,到运行和检查返回值,再到解答各种语法和逻辑问题,对每个练习进行了深入探讨。通过实例展示了如何使用GNU编译器在Windows环境下操作,并对部分练习表达了对题目设计的看法。

1.1 节练习

首先用 vs code 编写一个 cpp 文件,代码如下:

int main(){
    return -1;
}

我将它命名为 exercise 1-1.cpp,我的操作系统为 windows,下面一步是将 .cpp 文件编译为 .exe 文件。这样之后你所编写的代码才可以应用程序运行。

我使用的是 GNU 编译器(忘记是系统自带的还是我安装的),命令为: g++ "exercise 1-1.cpp",可以生成一个 a.exe 的可执行文件;如果命令为:g++ -o exercise  "exercise 1-1.cpp",就可以生成一个名字为 exercise.exe 的可执行文件,显然 -o 后面的输入决定了生成文件的名字。

然后我们运行这个文件,命令为:a.exe,然后发现什么返回都没有。这个预计返回的 0,我们可以通过命令:echo %ERRORLEVEL% 查看,就可以捕捉到刚刚执行的程序的返回值了。

例子:将返回值修改为 -1

1.2 节练习 

练习1.3-1.5:

#include <iostream>
int main(){
    std::cout << "Hello World!" << std::endl;
    int a = 0, b = 0;
    std::cin >> a >> b;
    std::cout << "The product of " << a << " and " << b << " is " << a * b << std::endl;
    return 0;
}

练习1.6:

答:不合法。将第一行和第二行最后的分号删掉。

1.3 节练习

练习1.8:

1. 合法,输出:"/*"

2. 合法,输出:"*/"

3. 不合法

4. 合法,输出:" /* "

感觉这题出的稍微没啥意义。。

1.4 节

1.4.1 节练习

#include <iostream>
int main(){
    // 1.9
    int sum = 0, val = 50;
    while (val <= 100) {
        sum += val;
        val++;
    }
    std::cout << "The sum from 50 to 100 is " << sum << std::endl;

    // 1.10
    val = 10;
    while (val >= 0){
        std::cout << val << " ";
        val--;
    }
    std::cout << std::endl;

    // 1.11
    int a = 0, b = 0;
    std::cout << "Please enter two integers: ";
    std::cin >> a >> b;
    if (a < b){
        while (a <= b){
            std::cout << a << " ";
            a++;
        }
    }else{
        while (b <= a){
            std::cout << a << " ";
            a--;
        }
    }

    return 0;
}

感觉没啥好说的。。就做题吧

1.4.2 节练习

#include <iostream>

int main(){

    // 1.12, sum = 0
    int sum = 0;
    for (int val = -100; val <= 100; ++val){
        sum += val;
    }
    std::cout << sum << std::endl;

    // 1.13
    sum = 0;
    for (int val = 50; val <= 100; ++val){
        sum += val;
    }
    std::cout << sum << std::endl;
    for (int val = 10; val >= 0; --val){
        std::cout << val << " ";
    }
    std::cout << std::endl;
    int a = 0, b = 0;
    std::cout << "Please enter two integers: ";
    std::cin >> a >> b;
    for (a; a <= b; a++){
        std::cout << a << " ";
    }
    
    return 0;
}

1.4.3 节练习

#include <iostream>

int main(){
    int sum = 0, val = 0;
    while (std::cin >> val){
        sum += val;
    }
    std::cout << "The sum is: " << sum << std::endl;
    return 0;
}

1.4.4 节练习

#include <iostream>
int main()
{
    int currVal = 0, cnt = 1, val = 0;
    if (std::cin >> val){
        currVal = val;
        while (std::cin >> val){
            if (currVal == val) cnt += 1;
            else{
                std::cout << currVal << " occurs " << cnt << " times." << std::endl;
                currVal = val;
                cnt = 1;
            }
        }
        std::cout << currVal << " occurs " << cnt << " times." << std::endl;
    }
    return 0;
}

1.5 节

1.5.1 节练习

#include <iostream>
#include "Sales_item.h"
int main(){
    // 1.20
    Sales_item book;
    std::cin >> book;
    std::cout << book << std::endl << std::endl;

    // 1.21
    Sales_item a, b;
    std::cin >> a >> b;
    std::cout << a + b << std::endl << std::endl;

    // 1.22
    Sales_item curr, input;
    if (std::cin >> curr){
        while (std::cin >> input){
            curr += input;
        }
        std::cout << curr << std::endl;
    }

    return 0;
}

1.5.2 节练习

#include <iostream>
#include "Sales_item.h"
int main(){
    Sales_item curr;
    if (std::cin >> curr){
        Sales_item input;
        int cnt = 1;
        while (std::cin >> input){
            if (curr.isbn() == input.isbn()){
                curr += input;
                cnt++;
            } else{
                std::cout << curr << std::endl;
                std::cout << curr.isbn() << " has " << cnt << " records" << std::endl;
                curr = input;
                cnt = 1;
            }
        }
        std::cout << curr << std::endl;
        std::cout << curr.isbn() << " has " << cnt << " records" << std::endl;
    }
    return 0;
}

统计每个 isbn 出现了几次。输入时将相同 isbn 的记录连续输入。

1.6 节练习

#include <iostream>
#include "Sales_item.h"
int main(){
    Sales_item curr;
    if (std::cin >> curr){
        Sales_item input;
        while (std::cin >> input){
            if (curr.isbn() == input.isbn()){
                curr += input;
            }else{
                std::cout << curr << std::endl;
                curr = input;
            }
        }
        std::cout << curr << std::endl;
    }else{
        std::cerr << "No data ???" << std::endl;
        return -1;
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值