1樓:鬱草小沙彌
你的**裡出現的問題比較嚴重,屬於基礎知識性的錯誤,非常嚴重的錯誤有以下幾點(都是知識性錯誤,一定要注意改過來):
1.函式呼叫和函式宣告的區別。你的main函式裡使用的
void sort(int array,int n);
int sr(int a[10]);
int sc(int a[10]);
這三句,其實並不是呼叫函式,只是宣告函式。宣告函式的函式就是告訴編譯器:這些函式我在後邊定義的,你先給我通過吧。
而呼叫函式就是傳入引數使用這個函式。在具體使用上,帶有函式型別和引數型別的(比如上邊三行**裡的"int")就是宣告函式,不帶有型別的,這樣寫:sr(a[10]);這樣才是正確的呼叫函式,這樣就會進入函式進行資料處理。
2.函式返回值。你的sr和sc函式都是int返回值,但是return(a[10]);很明顯你是想要返回整個陣列,這肯定是不匹配的。
3.還是返回值,其實形參為陣列名的話,傳入的就是陣列首位址,用位址傳入就沒必要返回這個陣列了,因為函式拿到位址操作之後資料就已經改變,無需返回。
4.形參的問題。形參是有生命週期的,只在乙個函式內有效,你的main函式根本就沒有定義相關變數,乙個函式結束之後,其內所有變數就沒了,無法傳給下一函式。
這4個錯誤會導致一系列錯誤產生,其他錯誤要在改正這四個錯誤之後再改,一定要研究例題,搞懂原理。
2樓:
//全寫在乙個函式內,自己調整下!
#include
void main()
if(f[j] }k=f[0]; f[0]=f[b]; f[b]=k; if(f[9]!=max) for(k=0;k<10;k++) printf("%d ",f[k]);} 3樓:庫運盛 #include void sort(int array,int n); int sr(int a[10]); int sc(int a[10]); int main(void) ;sr(a); //呼叫輸入函式 sort(a,10); //呼叫處理函式 sc(a); //呼叫輸出函式 //以上就是呼叫三個函式的形式 return 0; }int sr(int a[10]) void sort(int array,int n)//最小的值與第乙個值交換 tmp = array[0]; array[0] = array[min]; array[min] =tmp; //最大的值與最後乙個值交換 tmp = array[n-1]; array[n-1] = array[max]; array[max] =tmp; }int sc(int a[10]) 4樓:匿名使用者 把 void main()調到最後就沒問題了。 #include int sr(int a[10]) void sort(int array,int n)}int sc(int a[10]) void main() c語言程式設計:輸入10個整數,將其中最小的數與第乙個數對換,把最大的數與最後乙個數對換。 我的答案錯了 5樓:恆者致遠 在你的change函式中,由於你的迴圈控制變數i沒有控制好,導致了兩個迴圈都不能很好的完全遍歷整個陣列,所以答案是錯誤的。個人意見第一種方法是最大最小數的查詢用兩個迴圈實現,第二種方法是增加迴圈控制變數。謝謝 6樓:匿名使用者 if(m>b[i+1]) //應該是< 吧 if(n
s, t 的變數似乎沒意義啊, 最後將d[0]與 n 交換 //d[1]與 n 交換將d[9]與 m交換 //d[10]與 m交換還有你的陣列是從0---9,還是1--10 ? c語言程式設計:輸入10個整數,將其中最小的數與第乙個數對換,把最大的數與最後乙個數對換。 c語言程式設計 輸入10個整數,將其中最小的數與第乙個數對換,把最大的數與最後乙個數對換。 7樓:蝸居小笨笨 你的程式錯誤在求最值的函式maxmin。你定義了max,min,卻沒有使用,說明你對老師講過的求最值的演算法有些印象,但沒有理解。 第乙個明顯的錯誤是a[b]。陣列a的下標應該是0~b-1,a[b]裡是垃圾值,用它做比較,是典型的下標越界,當然結果是錯的。 第二個錯誤是求最值的演算法,也是我們要重點討論的。 以最小值為例: 你在查詢最小數時,將找到的最小直接賦給a[0],雖然將最小數放在a[0],但導致陣列的資料被改寫,這是錯誤的。 求最小值的演算法是這樣的,一般我們假設陣列的第乙個元素為最小值,然後和其他陣列元素依次比較,記下每次比較找到的「小」數,然後再將找到的「小」數與下乙個元素比較。比較到第b-1個元素,記下的「小」數就是最小數。 每次找到的「小」數用下標來標記。這裡可以用min存「小」數的下標。 找最大數類似。 所以程式改為: void maxmin(int a, int b) t=a[0];a[0]=a[min];a[min]=t; t=a[b-1];a[b-1]=a[max];a[max]=t;} 8樓:鬧惺炙 #include #define n 10 void main() k=x[0]; x[0]=(*pmin); (*pmin)=k; k=x[n-1]; x[n-1]=(*pmax); (*pmax)=k; }滿意請採納。 c語言作業:輸入10個整數,將其中最小的數與第乙個數對換,把最大的數與最後乙個數對換。 c語言:輸入10個整數,將其中最小的數與第乙個數對換,最大的數與最後乙個數對換,並輸出兌換後的10個數 9樓:匿名使用者 #include #include int main() printf("%d,%d\n",*p1,*p2); int temp; temp=a[0];a[0]=*p2;*p2=temp; temp=a[9];a[9]=*p1;*p1=temp; for(i=0;i<10;i++)//最後還有這裡,應該是<10printf("%d ",a[i]); system("pause"); return 0;} 10樓:匿名使用者 感覺你寫的好亂,多改了點 #include #include int main() temp=*p1;*p1=*p2;*p2=temp; for(i=0;i<10;i++) printf("%d ",a[i]); system("pause"); return 0;} c語言,輸入10個整數,將其中最小的數與第乙個數對換,把最大的數與最後乙個數對換 11樓:鬧惺炙 #include #define n 10 void main() k=x[0]; x[0]=(*pmin); (*pmin)=k; k=x[n-1]; x[n-1]=(*pmax); (*pmax)=k; }滿意請採納。 c語言輸入10個整數,將其中最小的數和第乙個數對換,把最大的數與最後乙個數對換。(用指標) 12樓:匿名使用者 用指標將數對換的自定義函式為: void swap(int * p, int * q) //p, q是需要對換的兩個數的指標 13樓:匿名使用者 //輸入儲存10個數,找的最小數和最大數,交換void main() temp=a[0]; a[0]=*min; *min=temp; temp=a[9]; a[9]=*max; max=temp;} 14樓: 供參考…… #include "stdio.h"// void main(void),i,max,min; printf("type 10 integers...\n"); for(i=0;i<10;scanf("%d",ndec+i++)); for(i=0;i<10;printf("%d ",ndec[i++])); printf("\n"); for(max=min=0,i=1;i<10;i++)i=ndec[0]; ndec[0]=ndec[min]; ndec[min]=i; i=ndec[9]; ndec[9]=ndec[max]; ndec[max]=i; for(i=0;i<10;printf("%d ",ndec[i++])); printf("\n");} 將它與最前面的數交換後輸出這些數.這句話什麼意思 感覺不能理解啊 莫不是英文原題 你按照翻譯之後做的嗎. 未來需努力點綴 樓主你好 原題是要先輸入所有的陣列元素 然後輸出 input 4 2 1 3 4 5 5 4 3 2 1 0output 1 2 3 4 1 4 3 2 5 而你的程式是輸入一個... 兄弟連教育北京總校 include int main printf 和為 d,平均值為 2f sum,sum 5.0 return 0 74 84 84 84 84 00 006666 用c語言編寫乙個程式,輸入5個數,求其和及平均數 include int main printf 和為 d,平均值... 將前5個數和後5個數映象對調即可。如下 include stdafx.h if the vc 6.0,with this line.include stdio.h int main void int a 10 i,j printf input 10 integers.n for i 0 i 10 s...c語言題輸入nnlt數找出其中最小的數將
c語言程式輸入數求其中正整數的和sum與正整數
用C語言編寫輸入整數到陣列中,逆序後將其存回陣列並輸出