2012-06-22 54 views
1

例如,当我输入2为num1和3为num2,我希望得到8输出一旦我输入第二个数字。但是,程序希望我输入一个整数,而我只输入一个像242这样的随机数,它仍然输出8,这意味着它不会影响结果。所以我的问题是为什么会有第三个输入? 谢谢你的帮助!出现一个额外的输入

#include "stdafx.h" 

int Power (int num1, int num2); 

int main() 
{ 
    int a, b; 
    puts ("Enter two numbers, a and b:\n"); 
    scanf ("%i\n", &a); 
    scanf ("%i\n", &b); 
    printf ("%i\n", Power(a, b)); 
    return 0; 
} 

int Power (int num1, int num2) 
{ 
    int sum=1; 
    for (int i=1; i<=num2; i++){ 
     sum= sum*num1; 
    } 
    return sum; 
} 

回答

3

摆脱换行:\n,在你scanf格式字符串,或只使用一个单一的scanf,例如:

scanf("%i%i", &a, &b); 

或者:

scanf ("%i", &a); 
scanf ("%i", &b); 
+0

谢谢!这些信息非常有用。 –

+0

即使应该删除一个'scanf'。 'scanf(“%i%i”,&a,&b)'是所有必需的。 – AnT

+1

此外,注意'%i'格式可能会给你比你真正需要的更多。我会说'%d'在这方面会更有意义。用户可能会惊讶地发现'023'实际上被解释为'19'。 – AnT

1

scanf()不需要"\n"

scanf ("%i", &a); 
scanf ("%i", &b); 
1

在调用scanf时,您应该从格式字符串中删除'\ n'。