这个代码应该是编译不通过无法运行的;
其中交换算法语句错了,且if语句后面少了大括号,良好的编程习惯条件语句也不要忘了大括号,这样代码更明确:
for(j=0;j<9;j++)
{ for(i=0;i<=9-j;i++)
{ if(a[i]>a[i+1])
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
还有第二个printf语句少了分号:
printf("the sorted number is\n");
貌似就这些吧,你上机试一下。
9-14改为:
for(i=0;i<=9-j-1;i++)
{if(a[i]>a[i+1])
{t=a[i];
a[i+1]=a[i];
a[i+1]=t;
}
}
//---------------------------------------------------------------------------
#include
#include
int comp(const void *a,const void *b)
{
int fg=1; /*fg=1表示升序排序,fg=-1表示降序排序*/
return fg*(*(int *)a-*(int *)b);
}
int main(void)
{
FILE *fp=fopen("c:\\dat.txt","r"); /*待排序数据文件,可在此修改*/
int n=0,in,*a=NULL;
while (fscanf(fp,"%d",&in)!=EOF)
{
a=a?realloc(a,sizeof(int)*(n+1)):malloc(sizeof(int));
a[n++]=in;
}
fclose(fp);
qsort(a,n,sizeof(int),comp);
fp=fopen("c:\\sort_dat.txt","w"); /*已排序数据文件,可在此修改*/
for (in = 0; in
}
fclose(fp);
return 0;
}
//---------------------------------------------------------------------------