1樓:久_宇
你的程式有問題,不是簡單的語句錯誤,你的思路錯了,你看一下你的程式根本就不是在找最大值的索引,而是在找第一次出現數字變小的那個數字的索引,這樣說有點模糊,舉幾個例子,來說明一下你的程式是在幹什麼。例如,你要是搜尋序列1,2,3,1,4,5,6那麼會返回2,因為第二個數字(也就是3),開始第一次下降,因為下一個數字為1,比3小,所以你的程式就開始返回了,並且返回2。再舉個例子,例如搜尋序列2,4,6,8,5,7,9那麼你的程式就會返回索引3,因為第三個數字(即8),開始出現下降,下一個數字為5,比8小,所以你的程式就開始返回了,並且返回值為8的索引3(即第3個數字)。
不知道你是否明白了,其實你的意思是想找出最大的那個,就只要max對所有的數字遍歷一下,並且不斷更新為更大的值,而且用max1緊隨其後標記更新的最大值的索引,max1=i;而將return max1;放到呼叫函式的最後面一句就可以了。 如果你還是不太明白可以追問我,要是你真的明白了,可以做一下選擇排序的題目,會讓你加深理解的
2樓:匿名使用者
if(max 中的max1++,應該改為max1=i; 3樓:匿名使用者 就應該是3 啊, 你的index函式是幹什麼的? c語言編寫一個函式,找出一維陣列中的最大值和最小值,並計算出陣列元素的平均值。 4樓:岔路程式緣 前面已經有兩位高手做出了回答,我執行了一下,《怺逺恆暒》有時候得不到正確的結果;《kaixingui2012》的不能執行,提示型別不對。不知道什麼原因,也許是我的版本有問題? 我也做了一個,感覺執行還是不錯的。請比較吧! #include "stdio.h" double fun(double a,int n,int *max,int *min);/*函式原型宣告:其中a為陣列, n為陣列元素個數,max指向最大數,min指向最小數,函式返回值為平均值*/ int main() if(a[i] sum=sum+a[i]; return sum/n;} 5樓:怺逺恆暒 #include double fun(double a,int n,int* max,int* min) if (a[i] < min_a) }return ans / n; }int main() ;printf("平均值 printf("最大值下標:%d\n",max); printf("最小值下標:%d\n",min); return 0; }//不好意思 之前版本有漏洞 現在改過來了#include double fun(double a,int n,int* max,int* min) //之前忘了更新max_a 和 min_aif (a[i] < min_a) }return ans / n; }int main() printf("平均值:%.3lf\n",t); printf("最大值下標:%d\n",max); printf("最小值下標:%d\n",min); return 0;} 6樓:匿名使用者 double fun(double a,int n,int*max,int*min) return sum/n ;} c語言 通過自定義函式 尋找並返回陣列最大值的位置下標 最大值有多個時 輸出第一個最大值的下標 7樓: #include #include int fun(int a[1000], int t)main(){ int x[1000]; int i,n,maxid; scanf("%d",&n); for(i=0;i 8樓:尋秦記記 你的核心函式寫的有點問題,在主函式中的呼叫不需要再使用迴圈了,這是我寫的**,你看一下: #include #include int fun(int a[1000],int t); int fun(int a[1000],int t)}return num; }int main() 9樓: 第一:你main函式裡的for迴圈時幹啥的? 第二:fun函式的返回值沒有東西接收啊 求這幾個c語言的程式 1、 編寫一個函式,使其向主函式返回3個整數引數中的最大值,並在主函式中輸出 10樓:鮋 #include int max(int x,int y,int z); int main() int max(int x,int y,int z) 11樓:快樂才是愛 1,int i,j,k; if(i>j&i>k); else if(j>k) i=j; else i=k; printf("%d",i); c語言程式設計:編制函式,其功能是在float型別一維陣列中查詢最大值、最小值,並將它們返回到呼叫程式。 12樓:滄海雄風 #include void fun(float a,float *mx,float *mi) else}} }main() ,maxf=0,minf=0; scanf("%d",&n); for (i=0;i<10;i++) fun(a,&maxf,&minf); printf("maxf[%f] minf[%f]\n",maxf,minf);}10 1234 5678 90maxf[9.000000] minf[0.000000]press any key to continue 13樓: //陣列版本 #include #define n 100 int main() printf("%g %g",max,min); return 0; }求採納,謝謝 14樓:匿名使用者 按最大或最小排序,然後輸出陣列兩頭的不就行了 解釋如下 因為q宣告的是一個區域性變數,所以在函式呼叫結束後它所開闢的記憶體空間就會被系統收回 它裡面的內容也就銷燬了,因此它輸出的是一段亂碼!改下程式 include include include char t char copy char p,int m void main 輸出的是什麼?一起... 這個跟庫函式的定義有關。還有就是編譯器的差異。有些編譯器預設是非0為真,有些非 1為真。建議不要使用這麼簡單粗暴的辦法判斷。請使用c提供的標準巨集判斷。在 學的。呃。自己寫 寫多了自然就知道了 根據你的程式來看應該是一個void型,不過你這是一個交換資料函式,如果這樣傳進來,是修改不了原址的 而如果... include using namespace std int a int index int i 這裡需要申明一下 否則main不能呼叫index函式 int main index 2 25 cout 返回引用 1 主函式main的返回值 這裡提及一點,返回0表示程式執行成功。2 返回非引用型別 ...糾錯 c語言 函式返回指標問題
c語言函式返回值,c語言的函式返回值?
C 函式返回引用問題,c 函式返回引用問題