编写函数void sort(int*x,int n),对一维数组x的n个数组元素按升序进行排列。编写主函数,从第一题的文本

编写函数void sort(int*x,int n),对一维数组x的n个数组元素按升序进行排列。编写主函数,从第一题的文本文件1.dat中读取数据,存放到一维数组a中,调用sort函数,对数组a进行排序,并将排序后的各数组元素写入文本文件2.dat中

#include<stdio.h>
#include<stdlib.h>
void sort(int *x,int n)
{int i,j,t;
for(i=0;i<n-1;i++)
{for(j=0;j<n-i-1;j++)
if(*(x+j)>*(x+j+1))
{t=*(x+j);
*(x+j)=*(x+j+1);
*(x+j+1)=t;
}
}
}
main()
{int a[10],i;
FILE *fp;
if((fp=fopen("1.dat","r"))==NULL)
{printf("open file error!\n");
exit(0);
}
sort(a,10);
if((fp=fopen("2.dat","w"))==NULL)
{printf("open file error!\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fscanf(fp,"%d",a+i);
fclose(fp);
for(i=0;i<10;i++)
fprintf(fp,"%4d",a[i]);
fclose(fp);
}
哪里有错?

#include <stdio.h>#include <stdlib.h>// 选择插入法排序void sort(int a[], int n){ int i, j, k, tmp; for (i = 0; i < n; i++) { for (j = 0; j < i; j++) if (a[i] < a[j]) break; // 找到待插位置 tmp = a[i]; // 临时变量记录待插的值 // 移出插入空间 for (k = i; k > j; k--) a[k] = a[k - 1]; // 插入 a[j] = tmp; }}int main(){ int *a, n, i; scanf("%d", n); // 输入数据数量 if (n > 0) { a = (int *)malloc(n * sizeof(int)); // 动态申请数组空间 // 输入数据 for (i = 0; i < n; i++) scanf("%d", a[i]); // 排序 sort(a, n); // 输出排序后的结果 printf("After sorted the array is:"); for (i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); free(a); // 释放内存 } return 0;}
温馨提示:答案为网友推荐,仅供参考
相似回答