我可以帮你解决这个。程序代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
#ifdef RAND_MAX
#undef RAND_MAX
#define RAND_MAX 1000
#endif
/**
上面宏定义部分说明,因为这个RAND_MAX在stdlib.h头文件中已经宏定义过了,所以我们这里需要先
取消这个宏定义名,然后再自己重新定义这个宏名
*/
//冒泡排序(升序)
void bubble_sort(int a[],int n)
{
int i,j; //j表示趟数,i表示每i趟两两比较的次数
int tmp; //临时变量
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(a[i] > a[i+1])
{
tmp=a[i];
a[i]=a[i+1];
a[i+1]=tmp;
}
}
}
int main()
{
int num[N],count,i;
FILE *fp_in,*fp_out;
if((fp_in=fopen("in.txt","w+")) == NULL) //创建in.txt
{
printf("Open file:%s\n",strerror(errno));
exit(-1);
}
if((fp_out=fopen("out.txt","w+")) == NULL) //创建out.txt
{
printf("Open file:%s\n",strerror(errno));
exit(-1);
}
srand(time(NULL));
for(i=0,count=0;i<N;i++)
{
num[i]=rand()%1000;
fprintf(fp_in,"%4d",num[i]);
count++;
if(count%10==0) //in.txt按10个一行存放
{
fprintf(fp_in,"\r\n"); //文件换行
}
}
bubble_sort(num,N); //调用排序算法
for(i=0,count=0;i<N;i++)
{
fprintf(fp_out,"%4d",num[i]);
printf("%4d",num[i]); //输出到屏幕上
count++;
if(count%5==0)
{
fprintf(fp_out,"\r\n"); //文件换行
printf("\n"); //屏幕换行
}
}
fclose(fp_in); //关闭文件
fclose(fp_out); //关闭文件
return 0;
}
以上代码,本人编译运行过了,没有什么问题,希望对你有所帮助吧。