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

时间:2015-05-08 13:46:26

标签: c scanf variadic-functions

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

测试用例:

输入

3
1 6 7
2 7 3 4
2 1

输出:

14
16
3

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

我不能将该行作为字符串输入,然后将它们拆分为数字。

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

1 个答案:

答案 0 :(得分:1)

答案由BLUEPIXY提供了很好的代码。在这里,我们将输入视为一对。

它将是一对数字和空格,或者它将是一对数字和换行符。

示例:2 3 4

因此,在此输入中,我们会成对使用,例如 - “2 ”,“3 ”和“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