当输入的是2和2时输出的为啥不是4而是256呀

#include <stdio.h>

int main()

{

    int a,n,j;

    printf("请输入两个数\n");

    scanf("%d,%d\n",&n,&j);

    if(j==0)

    {

        a=1;

    }

    else

    {

        a=pow (n,j);

    }

    printf("%d\n",a);

    return 0;

}


慕仰3175336
浏览 1340回答 4
4回答

Must_so

输入多了“,”和“\n”按你的代码要输入2,2\n才能匹配上这样改:#include <stdio.h> #include <math.h> int main() {     int a, n, j;     printf ("请输入两个数\n");     scanf ("%d%d", &n, &j);     if (j == 0)     {         a = 1;     }     else     {         a = pow (n, j);     }     printf ("%d\n", a);     return 0; }或者你自己的代码这样输入:至于为什么是256你可以输出n和j试试,不难发现你错误的输入使得j没有赋值,局部变量没有赋值会是随机值,我的电脑上j的随机值是34:代码:#include <stdio.h> #include <math.h> int main() {     int a, n, j;     printf ("请输入两个数\n");     scanf ("%d,%d\n", &n, &j);     if (j == 0)     {         a = 1;     }     else     {         a = pow (n, j);     }     printf("n = %d , j = %d\n",n,j);//debug输出中间结果     printf ("%d\n", a);     return 0; }测试结果:另外注意pow的参数和返回值是double型,a,n,j是int型(有些算法竞赛中可能会CE)scanf两个%d之间加空格是没有问题的    scanf ("%d %d", &n,&j);空格可以过滤空白字符不加空格也可以,会自动根据输入的空格区分是两个数而不是一个数

onemoo

首先,使用scanf函数时,格式化列表的最后不要加上\n。而且,你在scanf中指定的格式是 %d,%d,所以你输入的两个数之间也必须用逗号分开。 一般用在格式中用空格间隔就可以了,这样输入也方便。还有,你使用了pow函数,但是并没有include math.h,这样应该根本编译不过的。按照上面的改正后,应该就没问题了,至少在我这里测试时没有问题。另外,在C中,你不需要main函数的参数的话,应该在括号中写上void,而不是留空。

皓韵儿

你能运行通过吗?pow 函数不是在#include <math.h> 中吗? 你写了吗?
打开App,查看更多内容
随时随地看视频慕课网APP