[問題] 函數

看板C_and_CPP (C/C++)作者 (宅哥)時間11年前 (2014/08/16 05:23), 11年前編輯推噓3(3013)
留言16則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 問題(Question): 無法算出冪次方 預期的正確結果(Expected Output):可算出x的y次方 錯誤結果(Wrong Output):不管怎麼輸入x、y,pow(x,y)均顯示為零 程式碼(Code):(請善用置底文網頁, 記得排版) #include<stdio.h> #include<math.h> int main() { int x,y; double z=function(x,y); printf("請輸入x值:"); scanf("%d",&x); printf("\n"); printf("請輸入y值:"); scanf("%d",&y); printf("\n"); printf("x的y次方是%d\n",z); system("pause"); return 0; } double function(int a,int b) { return pow(a,b); } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.232.125.172 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1408137818.A.635.html

08/16 05:39, , 1F
1.pow回傳double 2.下面function沒用到
08/16 05:39, 1F
已修改過,但仍有錯誤。 程式complier後停在double z=function(x,y); 它說function未宣告 這是什麼意思呢? function在副程式不是已經宣告了嗎?

08/16 09:12, , 2F
將double function(int a,int b)放到int main上方
08/16 09:12, 2F
謝謝 我試過了 不過這一次編譯後卻在system("pause");這行顯示未宣告... 可是這行不就只是要讓顯示結果停住而已...? 我好像少了#include<stdlib.h>這行(呆) (system("pause");需要引入stdlib才可以 使用) 不過輸出的結果依舊會是零 (可編譯可執行 但不管輸入任何的x、y值 結果依舊是 零...)

08/16 10:24, , 3F
x,y沒給初始值就直接代入函數,算完才叫使用者輸入...
08/16 10:24, 3F
我有試著把 double z=function(x,y);這行剪下移到printf("x的y次方是%d\n",z);上面 可是執行完後的輸出結果還是零... 我好像跑出來了 將上面的double型態全部改回int就可以跑了... 所以這裡不可以把function設為double型態嗎? 還有兩個問題: 1.副程式的宣告,一定要在主程式之前嗎? 2.輸入變數x跟y,得先給初值,才能定義int z=function(x,y);嗎?

08/16 10:40, , 4F
%d是顯示整數,double要用%lf
08/16 10:40, 4F

08/16 10:42, , 5F
z是double 在printf時要用%f
08/16 10:42, 5F
謝謝各位的回答... 因為我大學修課時不認真 現在是買書來自學啦... 可是書上的說明看不懂 只好邊寫邊debug 借助版上的神人指點迷津一下 有人可以回答我上面問的那兩個問題嗎? 感謝 他書上有些程式範例是把宣告的副程式放在最後面 但我也試著跑過他的程式範例 但跑不出來...

08/16 10:58, , 6F
1. 函數(副程式)必須要在"使用之前"宣告其原型
08/16 10:58, 6F

08/16 10:59, , 7F
這樣編譯器才知道函數吃哪些 哪種型別的參數
08/16 10:59, 7F

08/16 11:00, , 8F
以及函數將傳回什麼型別的值
08/16 11:00, 8F

08/16 11:01, , 9F
2. int z=function(x,y);的話 是宣告int型別變數z
08/16 11:01, 9F

08/16 11:02, , 10F
並將其值初始化為function(x,y);的傳回值
08/16 11:02, 10F

08/16 11:03, , 11F
因此在這行時就已經執行function(x,y); 才能知道其傳回值
08/16 11:03, 11F
所以主程式裡面不管要用多少個副程式 都必須在主程式宣告前定義好這些副程式?

08/16 11:05, , 12F
當然 作為參數的x, y必須已經是有效內容
08/16 11:05, 12F

08/16 11:07, , 13F
要宣告其原型 但定義可以放在主程式之後 甚至是其他檔案
08/16 11:07, 13F
謝謝r大 令我茅塞頓開不少... ※ 編輯: gauss760220 (36.232.125.172), 08/16/2014 11:09:11

08/16 17:50, , 14F
換本書吧...XD
08/16 17:50, 14F

08/16 18:23, , 15F
推樓上, 請換書
08/16 18:23, 15F

08/19 12:10, , 16F
printf("x的y次方是%d\n",z); %d?
08/19 12:10, 16F
文章代碼(AID): #1JxdfQOr (C_and_CPP)
文章代碼(AID): #1JxdfQOr (C_and_CPP)