为什么我的代码在这个C程序中突然停止了?

时间:2013-08-01 21:04:37

标签: c

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

#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),一切都运行顺利,但是打印答案的代码的下一部分实际上并没有打印出来。它打印的唯一方法是,如果我在键盘上的任何字符中计时,然后按回车键,当它打印的那一刻我按下输入后输入我要为我的号码提供的数量。任何修复这个故障的建议,我都是新手。

3 个答案:

答案 0 :(得分:8)

删除scanf("%d",&x);中的scanf("%d",&y);power;您已将xy传递给power作为main中的参数。

答案 1 :(得分:3)

您的power函数中包含scanf个。它在等待用户输入。

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

它实际上意味着用您键入的数字填充xy

scanf documentation

答案 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;
}