当前位置: 首页 > 知识库问答 >
问题:

为什么我的代码在c中无限循环我的代码需要反复提示用户

沃盛
2023-03-14

我的代码需要反复提示用户输入一个整数。当用户不再想继续输入数字时,输出用户输入的所有正数之和,然后输出用户输入的所有负数之和。以下是我到目前为止的情况。

#include <iostream>
using namespace std;

int main() { 
    int a, sumPositive, sumNegative; 
    string promptContinue = "\nTo continue enter Y/y\n";
    string promptNum = "\nEnter a numer: "; 
    char response; 
    while (response = 'y' || 'Y') { 
        cout << promptNum; 
        cin >> a; 
        if(a) 
           sumPositive += a; 
        else 
           sumNegative += a; 
        cout<< promptContinue;
    } 
    cout<< "Sum of all the positive numbers is: "<< sumPositive<<endl;
    cout<< "Sum of all the negative humbers is : "<< sumNegative<<endl;
    return 0;
}

共有1个答案

闽焕
2023-03-14

只是为了把这件事从没有答案的名单上去掉:

您的while状况不正确

while (response = 'y' || 'Y') { 

将始终计算为true。这将导致无限循环。

应该是的

while (response == 'y' || response == 'Y') { 

但是,由于响应没有初始化,因此这将始终计算为false。通过将此值从当...更改为do...当循环来修复此问题。此外,您永远不会检索响应的值,因此我不确定您期望在那里发生什么。

#include <iostream>
using namespace std;
int main() { 
    int a, sumPositive, sumNegative; 
    string promptContinue = "\nTo continue enter Y/y\n";
    string promptNum = "\nEnter a numer: "; 
    char response; 
    do {
        cout << promptNum; 
        cin >> a; 
        if(a) 
           sumPositive += a; 
        else 
           sumNegative += a; 
        cout<< promptContinue;
        cin >> response;
    } 
    while (response == 'y' || response == 'Y');

    cout<< "Sum of all the positive numbers is: "<< sumPositive<<endl;
    cout<< "Sum of all the negative humbers is : "<< sumNegative<<endl;
    return 0;
}

在这个示例中,我可能还没有注意到其他错误。

 类似资料:
  • 我的问题是,当我输入一个字母时,它会进入无限循环,不会提示用户输入数量。。。。那是 输入数量:无效数量请输入数字! 输入数量:无效数量请输入数字! 输入数量:无效数量请输入数字!......

  • 所以当我在leetcode上运行这个代码时,它告诉我在列表节点中发现错误循环,但是我一生都不知道为什么。请帮忙,谢谢! }

  • Lua 的解析器有官方的 standard Lua 和 LuaJIT,需要明确一点的是目前大量的优化文章都比较陈旧,而且都是针对 standard Lua 解析器的,standard Lua 解析器在性能上需要书写者自己规避,才能写出高性能来。需要各位看官注意的是,OpenResty 最新版默认已经绑定 LuaJIT,优化手段和方法已经略有不同。我们现在的做法是:代码易读是首位,目前还没有碰到同样

  • 我写了这个简单的代码来获取一个double,并一直询问直到得到一个为止,但是当你给一个string时,它就变成了一个无限循环,我不知道为什么。为什么它会这样?

  • 包装呈现值;导入java。util。扫描仪; 公共类PresentValue{ }问题是写一个方法presentValue来执行此计算。该方法应接受未来值、年利率和年数作为参数。它应该返回现值,即您今天需要存入的金额。在一个程序中演示该方法,该程序允许用户试验公式项的不同值。 这里是公式P=F/(1r)^2

  • 该程序应该使用int 0x10在ASCII中打印一个具有给定字符的金字塔,3行的预期结果(下面代码中使用的数量)将是: A. a a a a a 要编译和运行代码,我使用nasm编译它,然后使用qemu进行仿真: 然而,程序get无法打印所有ASCII值。此外,如果有任何针对nasm代码的调试器,可以让您逐行运行,允许您检查寄存器值,这对学习也很有帮助。