cout在使用c++时在我的代码中不起作用

w1jd8yoj  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(177)

谁能帮我写一下这段代码?我不知道为什么cout不能用,它没有在第14行显示(i - 1);
问题是:乔有240分钟做他的考试。第一个问题需要5分钟的时间,第二个问题需要10分钟,等等。他需要k分钟吃晚饭后考试。现在我们想知道他能做多少问题。n是问题的数量,k是吃饭的时间。

#include <iostream>

using namespace std;

int main()
{
    int i, n, k, sum = 0;
    cin >> n >> k;
    for(i = 1; i <= n; i++){
        if(sum <= 240 - k){
            sum += 5 * i;
        }
        else{
            cout << i - 1;
            break;
        }
    }
}

字符串

bogh5gae

bogh5gae1#

cout是缓冲的。i可能会出现,只是不在你想看的地方:就在下一个提示符之前,因为你没有发送一个换行符。

cout << i - 1 << '\n';

字符串
您还可以看到:

cout << i - 1 << endl;


这里,endl是一个换行符加上一个指令。当插入ostream时,if会导致刷新,强制写入所有挂起的输出。当您需要在一个设备上交错缓冲区时,这可能很方便,例如将标准输入和标准输出发送到同一个文件或终端时。

6rqinv9w

6rqinv9w2#

因为在n = 5和k = 10的情况下,sum无法达到实际打印的阈值。我不确定你想做什么,但打印出循环可能会有帮助。

#include <iostream>

using namespace std;

int main()
{
    int i, n, k, sum = 0;
    cin >> n >> k;
    for(i = 1; i <= n; i++){
        if(sum <= 240 - k){
            sum += 5 * i;
        }
        else{
            break;
        }
    }
    cout << i - 1;
}

字符串

mrfwxfqh

mrfwxfqh3#

代码的问题在于cout语句位于循环的else块中。这意味着只有在满足else条件时,即sum超过{240 - k}时,才会执行cout语句。如果循环在未达到该条件的情况下完成,则不会执行cout语句。
下面是您的代码的更新版本:-

if(sum <= 240 - k){
        sum += 5 * i;

字符串
注意:-cout语句不在循环内,它将在循环完成后执行

相关问题