2015-05-08 73 views
0

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

测试用例:

输入

3 
1 6 7 
2 7 3 4 
2 1 

输出:

14 
16 
3 

我们能否修改 scanf()的这种方式,因此它可以处理这个动态投入。

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

我们可以利用的空间,\ n既决定的数字,因为我们做把字符串作为输入为例:scanf("%[^\n]",&str);

+0

'的scanf( “%d”,&NUM)'会做的伎俩。但是你知道每个测试用例中会输入多少个数字吗?或者是随机的? –

+0

不,我看到@LPs – Subinoy

+1

*“我不能将该行作为字符串输入,然后将它们拆分为数字。”* - 为什么不允许明显的解决方案? –

回答

0

答案被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 
+0

这种方法的小孔是它依赖于1)'\ n'后面的数字和2)行至少有1个数字3)输入文本总是数字。 – chux

+0

@chux是的,你说得对,输入文本总是需要数字。 – Subinoy