两个附件一个是原程序文件,一个是输入文件。我把原程序文件改成 了txt文件。我学习C语言也不久,想请教下高手,谢谢。(其实就一般的数字排序程序就可以了的,不过我只是随便拿了个程序哈^_^.........)
我的问题就是当从文件输入200个数据,然后将它的后三位进行排序(这个不是重点,没啥关系),主要是如果我只输入20个数据,并且我是升序排列,(if(xx[i]%1000>xx[j]%1000 )最后要球输出10个数据,问题就来了,结果全部都是0,我想程序一定以为我输入的20个数据以后的全部按0计,如果我把它改成降序的话,(if(xx[i]%1000<xx[j]%1000) 结果又能正确的显示出来。我想问下用什么方法能使读入数据时不读我文件中没有的,只读真实输入的。(不要改200个为自己想输入的个数)。我做过以前的字符相同输入问题可以通过一个if语句:if(xx[i]!='\0') ........//xx[]是字符串数组,这样就可以了。但是这个int型的数据用这个好像就不行了。那应该用什么方法来解决呢?还是把代码贴上吧。
#include <stdio.h>
#include <string.h>
#include <conio.h>
int xx[200],b[10];
int maxline=0;
void jsSort()
{int i,j,t;
for(i=0;i<199;i++)
{
for(j=i+1;j<200;j++)
{ if(xx[i]!='\0')
if(xx[i]%1000>xx[j]%1000 ||(xx[i]%1000==xx[j]%1000)&&(xx[i]<xx[j]))
{t=xx[i];xx[i]=xx[j];xx[j]=t;}}
}
for(i=0;i<10;i++) b[i]=xx[i];
}
void main()
{
readDat();
jsSort();
writeDat();
system("pause");
}
readDat()
{
FILE *in;
int i;
in=fopen("in.txt","r");
for(i=0;i<200;i++)
{
fscanf(in,"%d",&xx[i]);}
fclose(in);
}
writeDat()
{
FILE *out;
int i;
out=fopen("out.dat","w");
for(i=0;i<10;i++){
printf(" %d ",b[i]);
fprintf(out,"%d\n",b[i]);
}
fclose(out);
}