用户在运行时动态地进行多个输入
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
我们如何在运行时通过用户选择在 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