我写了一个程序,您可以在其中选择任何数字,并将其自身与任何数字的力量联系起来。代码工作正常,直到它到达某个部分,然后我必须输入一个字符使其移动到代码的下一部分。这就是我的意思:
#include <stdio.h>
int power (int x, int y);
int
power (int x, int y)
{
int i, b;
i = 1;
scanf ("%d", &x);
scanf ("%d", &y);
b = x;
for (i = 1; i < y; i++) {
x *= b;
}
return x;
}
int
main ()
{
int base, i;
printf ("Type the base number: ");
scanf ("%d", &base);
printf ("Type the power: ");
scanf ("%d", &i);
int final = power (base, i);
printf (" The power is %d ", final);
return 0;
}
所以直到int final = power(base,i),一切都运行顺利,但是打印答案的代码的下一部分实际上并没有打印出来。它打印的唯一方法是,如果我在键盘上的任何字符中计时,然后按回车键,当它打印的那一刻我按下输入后输入我要为我的号码提供的数量。任何修复这个故障的建议,我都是新手。
答案 0 :(得分:8)
删除scanf("%d",&x);
中的scanf("%d",&y);
和power
;您已将x
和y
传递给power
作为main
中的参数。
答案 1 :(得分:3)
您的power
函数中包含scanf
个。它在等待用户输入。
scanf("%d",&x);
scanf("%d",&y);
它实际上意味着用您键入的数字填充x
和y
。
答案 2 :(得分:-1)
在函数功能的代码中,您调用“scanf”两次,这些调用和覆盖传递给函数的参数。删除那里的“scanf”电话。
如果您以这种方式修改代码,一切都将清晰:
int power(int x, int y)
{
int i,b;
i=1;
printf("before scanf no 1\n");
scanf("%d",&x);
printf("before scanf no 2\n");
scanf("%d",&y);
b=x;
for(i=1;i<y;i++)
{
x*=b;
}
return x;
}