[問題] 函式運算的問題與回傳的問題~已解決~

看板C_and_CPP (C/C++)作者 (紫色天平Boy)時間15年前 (2010/07/08 07:41), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 由於我的C的觀念不是很清晰 我傳浮點數去函式抓最大最小值~ 但是運算出來的東西卻是有問題! 這程式後續打算移植純C,所以別用 C++的解法~謝謝!! /////// 感謝 longrider , VictorTom /////////// CCTT.TXT 內容 10.4457 24.8808 27.3917 25.581 28.2764 24.0827 24.7924 26.8237 希望得到的正確結果: 在函式先printf一次,回到main再printf一次。 Min: 10.4457 Max: 28.2764 程式跑出來的錯誤結果: 28.276400,10.445700 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) http://nopaste.csie.org/1e536 << 正確Code #include <stdio.h> #include <string.h> double min_max(double *getv,double *max_v,double *min_v){ long int ct1; double g_max=0; double g_min=100; for(ct1=0;ct1<8;ct1++){ if(g_max<getv[ct1]) g_max=getv[ct1]; if(g_min>getv[ct1]) g_min=getv[ct1]; } *max_v=g_max; *min_v=g_min; } main(){ FILE *fp; long int ct1,ct2; double getvalue[8],max_vv=0,min_vv=0; fp=fopen("H:/CCTT.TXT","r"); for(ct1=0;ct1<=7;ct1++) fscanf(fp,"%lf", &getvalue[ct1]); min_max(getvalue,&max_vv,&min_vv); printf("%f,%f\n",max_vv,min_vv); fclose(fp); system("pause"); } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.226.112

07/08 08:10, , 1F
沒看到 min_max() 裡面有把值傳給 max_v 和 min_v
07/08 08:10, 1F

07/08 08:11, , 2F
g_max 和 g_min 沒初始值.
07/08 08:11, 2F
※ 編輯: m9556 來自: 61.218.110.180 (07/08 08:51)

07/08 09:35, , 3F
在min_max()內, 你應該是把g_max/min的值, 寫進
07/08 09:35, 3F

07/08 09:35, , 4F
max/min_v所指向的位址去; 你現在的寫法反而是把g_###
07/08 09:35, 4F

07/08 09:37, , 5F
的位址copy變成###_v指標變數的值....
07/08 09:37, 5F
※ 編輯: m9556 來自: 61.218.110.180 (07/08 11:00)
文章代碼(AID): #1CDH2PXT (C_and_CPP)
文章代碼(AID): #1CDH2PXT (C_and_CPP)