当前位置:首页 C++ > 正文

c++编写一个程序求一系列整数的和

作者:野牛程序员:2023-08-14 16:08:48 C++阅读 2818

以下是一个用C++编写的程序,用于计算一系列整数的和:

#include <iostream>

int main() {
    int total = 0;
    int num;

    std::cout << "请输入整数(输入非数字以结束):" << std::endl;

    while (std::cin >> num) {
        total += num;
    }

    std::cout << "总和为:" << total << std::endl;

    return 0;
}

这个程序会提示输入整数,直到输入一个非数字字符(例如字母或符号),然后计算并输出这些整数的总和。

在这个程序中,可以在输入非数字、或按下"Ctrl + C"来中断循环并退出程序。




为什么输入非数字会退出循环?是什么原理

输入非数字字符会导致循环退出的原因是因为 std::cin 在读取输入时会返回一个特殊的状态,指示输入无效。这是因为 std::cin 是一个输入流对象,它会尝试将输入转换为指定的数据类型,但如果输入无法被正确转换为该类型,它会设置一个错误标志,并且以后的读取操作会失败。

在 C++ 中,输入流的状态可以用于控制流程,包括循环。当输入流处于错误状态时,循环条件 std::cin >> num 会返回 false,因此循环会停止执行。

在我们的程序中,当输入非数字字符时,std::cin >> num 会失败,num 不会被赋值,std::cin 的错误标志会被设置。因此,循环会退出,从而避免了死循环。

需要注意的是,这种处理方式依赖于默认的流状态和错误处理机制。如果想要更精细的控制输入错误,可以使用 std::cin.fail() 或其他相关函数来检查和处理输入错误情况。



当用户输入非数字字符时,std::cin.fail() 可以用来检查输入是否失败。以下是一个示例:

#include <iostream>

int main() {
    int total = 0;
    int num;

    std::cout << "请输入整数(输入非数字以结束):" << std::endl;

    while (std::cin >> num) {
        total += num;
    }

    if (std::cin.fail()) {
        std::cin.clear(); // 清除错误状态标志
        std::string invalidInput;
        std::cin >> invalidInput; // 读取无效输入,将其从输入流中移除
        std::cout << "输入无效,已退出循环。" << std::endl;
    }

    std::cout << "总和为:" << total << std::endl;

    return 0;
}

在这个示例中,如果输入非数字字符,std::cin.fail() 会返回 true,然后我们清除错误状态标志并读取无效输入,以确保输入流恢复正常状态。然后,程序会输出一条消息并继续执行。这样,即使输入非数字字符,程序也能够从错误中恢复,并正常退出循环。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击