C排序出現的問題

2021-09-09 08:38:02 字數 1205 閱讀 6431

程式**:實現陣列的排序。

int main(int argc, char * ar**) ;

int m,n;

for(m=0;m<9;m++)}}

printf("%d\n",a[0]);

printf("%d\n",a[1]);

printf("%d\n",a[2]);

printf("%d\n",a[3]);

printf("%d\n",a[4]);

printf("%d\n",a[5]);

printf("%d\n",a[6]);

printf("%d\n",a[7]);

printf("%d\n",a[8]);

printf("%d\n",a[9]);

}(剛開始的實驗目的僅僅是實現陣列中最大值放到最後這一功能,但是實驗結果出錯。

分析問題:根據a[0]的輸出為0,會發現第一次比較找到了陣列中的最小值,所以是a[m]與a[1]-a[9]依次進行了比較。自己的誤區是以為a[0]與a[1]比較完,然後直接進行a[1]與a[2]的比較。倒是這樣也明白將陣列全排序方法(如下由大到小)

for(m=0;m<=9;m++)

for(n=0;n<=9;n++)

}現在考慮如何對陣列進行直接尋找最大值(或最小值)的方法。

思路一:可以直接定義兩個指標,乙個指向陣列的起始端,乙個指向陣列的末端,加「*」取資料進行比較,讓資料小的指標後移(或者前移),資料大的指標不變。當兩個指標指向的同一位址單元時,該單元中的資料就是該陣列中的最大值。**如下:

int *q,*w;

q=a;

w=&a[9];

while(q!=w)

else

}printf(「最大值是: %d」,*q);

(切記:每乙個控制語句的條件,別因小失大!

思路二:我們可以假設陣列的第乙個元素是最大值(或者最小值),將他賦給某一變數,然後讓指標一次遍歷完整個陣列,當某一資料大於初始設定,就讓它替換變數中的資料,這樣變數中最後存下的資料就是最大值(或最小值)。

int m=a[0];

int *q;

int i;

for (i=1;i<=sizeof(a)/sizeof(int);i++)

}printf(「最大值是: %d」,m);

(總結:邏輯思維和程式設計相結合才能更快的提高c能力,光靠閱讀和想象是不行的。其次就是指標,這是學c必須必須掌握的!

C 新手出現的問題

自己最近在學些編寫c 的程式,出現了一些錯誤,大家可以看看。1 c 時提示stray 161 in program 程式中含有全形字符 如全形空格等 一般出現在拷貝網上的 或者切換中英文輸入法時。2 case使用時出現的錯誤,長時間不用竟然忘記了 string a dis i classfic sw...

C 程式設計出現的問題

q1 如果a類引用b類,b類引用a類,如何解決呼叫的死迴圈?例子 a的標頭檔案 a.h include a.h class a class a 注意一 在b的標頭檔案加上這個 class b 但a.cpp要 include a.h q2 定義靜態成員函式?step1 在a.h的標頭檔案定義類 cla...

Lua 呼叫C 出現的問題

因為演算法測試做了一答應微秒的 但是在lua呼叫c 的時候出現了一些問題 下面是 luatil.h pragma once class lautil lautil.cpp include lautil.h include cocos2d.h include include include if de...