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

为什么我的代码突然停在这个C程序中?,c,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;

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

#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;
}
#包括
整数幂(整数x,整数y);
int
功率(整数x,整数y)
{
int i,b;
i=1;
scanf(“%d”和&x);
scanf(“%d”和“&y”);
b=x;
对于(i=1;i

所以直到int final=power(base,i),一切都运行得很顺利,但是打印答案的代码的下一部分实际上并没有打印出来。它可以打印的唯一方法是,我在键盘上输入任意字符的时间,然后按回车键,当我输入数字的功率后按回车键时,它就会打印出来。任何关于修复此故障的建议,我对c相当陌生。

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

scanf("%d",&x);
scanf("%d",&y);
它本质上意味着用您键入的数字填充
x
y


删除
scanf(“%d”和&x)
scanf(“%d”和&y)电源
;您已经将
x
y
作为
main

中的参数传递给了
power,在函数power中的代码中,您调用了两次“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;
}
整数幂(整数x,整数y)
{
int i,b;
i=1;
printf(“第1号扫描前”);
scanf(“%d”和&x);
printf(“第2号扫描前”);
scanf(“%d”和“&y”);
b=x;

对于(i=1;iIt)来说,缩进代码是很好的,但不会太多!它看起来大约有16或20个空格,当你减去那么多的时候,会有点不稳定。请小心并考虑周到。