c++编写一个程序求一系列整数的和
作者:野牛程序员:2023-08-14 16:08:48 C++阅读 2876
      以下是一个用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
        
- 上一篇:arduino字符串分割函数
 - 下一篇:c++题目:开关灯
 
