#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 關注
- 1412 瀏覽
添加回答
舉報
0/150
提交
取消