#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;}
4 回答
已采纳
Must_so
TA贡献11条经验 获得超18个赞
输入多了“,”和“\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
TA贡献883条经验 获得超454个赞
首先,使用scanf函数时,格式化列表的最后不要加上\n。
而且,你在scanf中指定的格式是 %d,%d,所以你输入的两个数之间也必须用逗号分开。 一般用在格式中用空格间隔就可以了,这样输入也方便。
还有,你使用了pow函数,但是并没有include math.h,这样应该根本编译不过的。
按照上面的改正后,应该就没问题了,至少在我这里测试时没有问题。
另外,在C中,你不需要main函数的参数的话,应该在括号中写上void,而不是留空。
- 4 回答
- 0 关注
- 1339 浏览
添加回答
举报
0/150
提交
取消