3

我编写了一个程序,您可以在其中选择任何数字并将其自身与任何数字的幂联系起来。代码运行良好,直到它到达某个部分,然后我必须输入一个字符以使其移动到代码的下一部分。这就是我的意思:

#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),一切都运行顺利,但是它打印答案的代码的下一部分实际上并没有打印出来。它打印的唯一方法是,如果我在键盘上输入任何字符然后按回车键,它应该在我输入我想要为我的号码供电的数量后按 Enter 键的那一刻打印。任何解决此故障的建议,我对 c 还是很陌生。

4

3 回答 3

8

删除scanf("%d",&x);scanf("%d",&y);power; 您已经将xand作为参数传递y给.powermain

于 2013-08-01T21:08:24.617 回答
3

你的power函数scanf里面有 s。它正在等待用户输入。

scanf("%d",&x);
scanf("%d",&y);

它本质上意味着填充xy您键入的数字。

scanf 文档

于 2013-08-01T21:07:56.617 回答
-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;
}
于 2013-08-01T21:16:35.507 回答