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

标签 c scanf variadic-functions

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

测试用例:

输入

3
1 6 7
2 7 3 4
2 1

输出:

14
16
3

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

我无法将行作为字符串输入,然后将它们拆分为数字。

可不可以像输入字符串一样用空格和\n来决定个数:scanf("%[^\n]",&str);

最佳答案

答案是由 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

关于c - 用户在运行时动态地进行多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30125445/

相关文章:

python - Swig 类型映射中的临时变量生成

C-运行程序接受输入

c++ - 如何将可变数量的参数传递给 printf/sprintf

c - 从文件中读取随机输入

c - 如何更改 scanf ("%d",&variable) 以从 C 中的命令行接收 argv

c++ - 如果我将结构传递给可变参数函数会怎样?

c - 如何向 va_list 添加参数

c - 除了使用预处理器指令之外,还有其他方法可以避免类型冲突吗?

c - 使用 fread 的初始结构数组

c - C 中的基本数组用法?