程式**:實現陣列的排序。
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...