4 回答

TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超18個(gè)贊
輸入多了“,”和“\n”按你的代碼要輸入2,2\n才能匹配上
這樣改:
#include?<stdio.h> #include?<math.h> int?main() { ????int?a,?n,?j; ????printf?("請(qǐng)輸入兩個(gè)數(shù)\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試試,不難發(fā)現(xiàn)你錯(cuò)誤的輸入使得j沒有賦值,局部變量沒有賦值會(huì)是隨機(jī)值,
我的電腦上j的隨機(jī)值是34:
代碼:
#include?<stdio.h> #include?<math.h> int?main() { ????int?a,?n,?j; ????printf?("請(qǐng)輸入兩個(gè)數(shù)\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輸出中間結(jié)果 ????printf?("%d\n",?a); ????return?0; }
測(cè)試結(jié)果:
另外注意pow的參數(shù)和返回值是double型,a,n,j是int型(有些算法競(jìng)賽中可能會(huì)CE)
scanf兩個(gè)%d之間加空格是沒有問題的
????scanf?("%d?%d",?&n,&j);
空格可以過濾空白字符
不加空格也可以,會(huì)自動(dòng)根據(jù)輸入的空格區(qū)分是兩個(gè)數(shù)而不是一個(gè)數(shù)

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
首先,使用scanf函數(shù)時(shí),格式化列表的最后不要加上\n。
而且,你在scanf中指定的格式是 %d,%d,所以你輸入的兩個(gè)數(shù)之間也必須用逗號(hào)分開。 一般用在格式中用空格間隔就可以了,這樣輸入也方便。
還有,你使用了pow函數(shù),但是并沒有include math.h,這樣應(yīng)該根本編譯不過的。
按照上面的改正后,應(yīng)該就沒問題了,至少在我這里測(cè)試時(shí)沒有問題。
另外,在C中,你不需要main函數(shù)的參數(shù)的話,應(yīng)該在括號(hào)中寫上void,而不是留空。
- 4 回答
- 0 關(guān)注
- 1406 瀏覽
添加回答
舉報(bào)