用户在运行时动态地进行多个输入

multiple inputs by user dynamically at runtime

我们如何在运行时通过用户选择在 c 中获取多个整数输入。 这里输入的第一行是测试用例的数量。然后我在计算这种情况下输入数字的总和。

测试用例:

输入

3
1 6 7
2 7 3 4
2 1

输出:

14
16
3

我们能否以这种方式修改 scanf() 以便它可以处理此动态输入。

我不能把行当成字符串输入,然后拆分成数字

可不可以用space和\n来决定数字,就像我们以字符串作为输入的例子:scanf("%[^\n]",&str);

答案是由 BLUEPIXY 通过他漂亮的代码提供的。这里我们将输入视为一对。

要么是一对数字和space,要么是一对数字和换行符。

示例:2 3 4

所以在这个输入中我们将成对的,比如 - '2</code>', '3<code>' 和 '4\n'。 当我们遇到 \n 时,我们停止无限循环。代码如下:

#include <stdio.h>

int main(void){
    int n;

    scanf("%d", &n);
    while(n--){
        int v, sum = 0;
        while(1){
            char ch = 0;
            scanf("%d%c", &v, &ch);
            sum += v;
            if(ch == '\n' || ch == 0)
                break;
        }
        printf("%d\n", sum);
    }

    return 0;
}

输入:

3
1 6 7
2 7 3 4
2 1

输出:

14
16
3