Ⅰ 鍏充簬linux gcc c89 c99鐨勯棶棰
瀵癸紝C99鐨勬柊鐗規у厑璁稿湪鏁扮粍闀垮害琛ㄨ揪寮忎腑浣跨敤鍙橀噺錛岀О涓哄彉闀挎暟緇勶紙VLA錛孷ariable Length Array錛夛紝VLA鍙鑳藉畾涔変負灞閮ㄥ彉閲忚屼笉鑳芥槸鍏ㄥ矓鍙橀噺錛屼笌VLA鏈夊叧鐨勮娉曡勫垯姣旇緝澶嶆潅錛岃屼笖寰堝氱紪璇戝櫒涓嶆敮鎸佽繖縐嶆柊鐗規э紝鎵浠ヨ繕鏄涓嶅緩璁浣跨敤鐨勩
璇磋翠綘榪欎釜渚嬪瓙鍚э紝浣犺繖涓鍏跺疄涓嶅睘浜庡彉闀挎暟緇勶紝鍥犱負鍦ㄥ畾涔夋暟緇 arr[] 鍓嶏紝瀹冪殑澶у皬 var 宸茬粡鏄鍥哄畾鐨勪簡銆傚簲璇ユ槸榪欐牱錛
int var;
int arr[var];
鍏堜笉瑕佸垵濮嬪寲鍙橀噺 var銆
鎴戝啀緇欎釜渚嬪瓙鍚э紝銆奓inux C緙栫▼涓絝欏紡瀛︿範銆嬮噷闈㈠叧浜庡綊騫舵帓搴忕畻娉曠殑鍏朵腑涓涓鍑芥暟銆
void merge(int start, int mid, int end)
{
int n1 = mid - start + 1;
int n2 = end - mid;
int left[n1], right[n2];
......
}
鍏朵腑錛宭eft涓巖ight閮芥槸鍙橀暱鏁扮粍錛屽洜涓哄湪瀹氫箟鐨勬椂鍊欙紝鏁扮粍澶у皬涓嶇『瀹氥
Ⅱ C語言,學生成績排序,用VC能輸出正確的結果,但學校的編譯器是g++,總提示無效內存引用,求助!!!!
for(a[i][c]<a[1][i]) c = i;
//首先說說 a[2][20];
1.scanf("%d",&n);//n最好先初始化一下,輸入無效值「s」,n的值亂七八糟的。
2.若n的值超過20,數組是不是越界了,可以這樣 n = n>20?20:n;
//其次說說if(a[i][c]<a[1][i]) c = i;
若a[1][0] < a[1][1] c = 1;
若a[1][0] < a[1][2] c = 2;
..........................;
若a[1][0] < a[1][arraysize] c = arraysize;
for(a[i][c]<a[1][i]) c = i;//不明白要做什麼。
//最後可以定義一個結構體。
struct _student
{
int stu_no;
int stu_grade;
};
#define ARRAY_SIZE 20;
_student stu[ARRAY_SIZE];
信息:給每個結構體賦給學生成績和序號,
排序:小量數據可以用冒泡排序法排序,
輸出: 把結構體數據輸出就完成這個功能了。
vc6.0的語法沒有gcc嚴謹
建議同學遵守下變數的命名規則吧。
個人覺得,一個二維數組信息放序號跟成績,這個真是很奇怪的事情。
代碼我沒有怎麼看,看不懂莫怪。
上面是見到一些錯誤和給出的建議。希望對你有幫助。
Ⅲ c語言編程:對10個數冒泡排序(升序)。
#include<stdio.h>
intmain(){
intnumber[10]={95,45,15,78,84,51,24,12,34,23};
for(int j=0;j< 9;j++)
for(int i=0;i< 9 -j;i++) {
if(a[i]>a[i+1]) {
int temp=a[i];a[i]=a[i+1];
a[i+1]=temp; }
}
for(int i=0;i< 10;i++){
printf(「%d」,a[i]); }
}
插入排序
已知一組升序排列數據a[1]、a[2]、……a[n],一組無序數據b[1]、b[2]、……b[m],需將二者合並成一個升序數列。
首先比較b[1]與a[1]的值,若b[1]大於a[1],則跳過,比較b[1]與a[2]的值,若b[1]仍然大於a[2],則繼續跳過,直到b[1]小於a數組中某一數據a[x],則將a[x]~a[n]分別向後移動一位,將b[1]插入到原來a[x]的位置這就完成了b[1]的插入。
b[2]~b[m]用相同方法插入。
快速排序
快速排序是大家已知的常用排序演算法中最快的排序方法。已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。首先任取數據a[x]作為基準。
比較a[x]與其它數據並排序,使a[x]排在數據的第k位,並且使a[1]~a[k-1]中的每一個數據<a[x],a[k+1]~a[n]中的每一個數據>a[x],然後採用分治的策略分別對a[1]~a[k-1]和a[k+1]~a[n]兩組數據進行快速排序。
希爾排序
已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。
首先取一增量d(d<n),將a[1]、a[1+d]、a[1+2d]……列為第一組,a[2]、a[2+d]、a[2+2d]……列為第二組……,a[d]、a[2d]、a[3d]……列為最後一組以次類推,在各組內用插入排序,然後取d'<d,重復上述操作,直到d=1。
Ⅳ 用C語言輸入3個整數,要求按從小到大的順序輸出。謝謝大家
#include<stdio.h>
void main()
{
int a,b,c,t;
printf("請輸入三個整數:a b c
");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("排序後的三個整數為:%d,%d,%d
",a,b,c);
}