推 prismwu: 1.pow回傳double 2.下面function沒用到 08/16 05:39
已修改過,但仍有錯誤。
程式complier後停在double z=function(x,y);
它說function未宣告
這是什麼意思呢?
function在副程式不是已經宣告了嗎?
→ anfernee5000: 將double function(int a,int b)放到int main上方 08/16 09:12
謝謝 我試過了 不過這一次編譯後卻在system("pause");這行顯示未宣告...
可是這行不就只是要讓顯示結果停住而已...?
我好像少了#include<stdlib.h>這行(呆) (system("pause");需要引入stdlib才可以
使用) 不過輸出的結果依舊會是零 (可編譯可執行 但不管輸入任何的x、y值 結果依舊是
零...)
推 putumaxally: x,y沒給初始值就直接代入函數,算完才叫使用者輸入... 08/16 10:24
我有試著把 double z=function(x,y);這行剪下移到printf("x的y次方是%d\n",z);上面
可是執行完後的輸出結果還是零...
我好像跑出來了 將上面的double型態全部改回int就可以跑了...
所以這裡不可以把function設為double型態嗎?
還有兩個問題:
1.副程式的宣告,一定要在主程式之前嗎?
2.輸入變數x跟y,得先給初值,才能定義int z=function(x,y);嗎?
→ putumaxally: %d是顯示整數,double要用%lf 08/16 10:40
推 remizu: z是double 在printf時要用%f 08/16 10:42
謝謝各位的回答... 因為我大學修課時不認真 現在是買書來自學啦...
可是書上的說明看不懂 只好邊寫邊debug 借助版上的神人指點迷津一下
有人可以回答我上面問的那兩個問題嗎?
感謝
他書上有些程式範例是把宣告的副程式放在最後面 但我也試著跑過他的程式範例
但跑不出來...
→ remizu: 1. 函數(副程式)必須要在"使用之前"宣告其原型 08/16 10:58
→ remizu: 這樣編譯器才知道函數吃哪些 哪種型別的參數 08/16 10:59
→ remizu: 以及函數將傳回什麼型別的值 08/16 11:00
→ remizu: 2. int z=function(x,y);的話 是宣告int型別變數z 08/16 11:01
→ remizu: 並將其值初始化為function(x,y);的傳回值 08/16 11:02
→ remizu: 因此在這行時就已經執行function(x,y); 才能知道其傳回值 08/16 11:03
所以主程式裡面不管要用多少個副程式 都必須在主程式宣告前定義好這些副程式?
→ remizu: 當然 作為參數的x, y必須已經是有效內容 08/16 11:05
→ remizu: 要宣告其原型 但定義可以放在主程式之後 甚至是其他檔案 08/16 11:07
謝謝r大 令我茅塞頓開不少...
※ 編輯: gauss760220 (36.232.125.172), 08/16/2014 11:09:11
→ carylorrk: 換本書吧...XD 08/16 17:50
→ uranusjr: 推樓上, 請換書 08/16 18:23
→ kenn2001: printf("x的y次方是%d\n",z); %d? 08/19 12:10