Ⅰ 鍏充簬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);
}