gpt4 book ai didi

c++ - 如何在没有任何输入指示终止的情况下摆脱这个 "loop"?

转载 作者:行者123 更新时间:2023-11-27 22:54:15 25 4
gpt4 key购买 nike

这是一个 OJ 问题。描述:获取输入数据的总和。Input: 有几行输入,每行包含几个整数,每个整数之间用一个空格分隔。您需要获取每行整数的总和。输出:对应行的总和。示例输入:

100 200 4
45 45

示例输出:

304
90

而我的代码如下:

//time limit exceeded
#include<iostream>
#include<cstring>
#include<stdio.h>
#include<math.h>
using namespace std;
int main(){
char a[500];
while (true){
gets_s(a);
int len = strlen(a), sum = 0;
for (int i = 0; i < len + 1; i++){
if (a[i] == EOF)return 0;
if (a[i] == ' ' || a[i] == '\0'){
for (int j = i - 1; a[j] != ' '&&j >= 0; j--){
sum += (a[j] - '0')*pow(10, i - j - 1);
}
if (a[i] == '\0')break;
}
}
cout << sum << endl;
}
return 0;
}

我认为问题在于程序在没有更多行可输入时继续等待另一个输入。但是如何解决呢?非常感谢。

最佳答案

您的 if (a[i] == EOF) 检查没有意义。当到达 EOF(或发生某些错误)时,gets_s 不会通过在缓冲区内存储一个魔法值来指示这一点,而是通过结果来指示。你可以摆脱这个 if 条件,并在外循环中检查 gets_s 的结果:

while (gets_s(a)) {
...
}

关于c++ - 如何在没有任何输入指示终止的情况下摆脱这个 "loop"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34676774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com