【c语言】已知文本数据文件number.dat中已保存有300个4位整数,请编写程序读取这些数并将其中满足指定条

已知文本数据文件number.dat中已保存有300个4位整数,请编写程序读取这些数并将其中满足指定条件的数从小到大排列在屏幕上输出。条件为:千位数上的数加个位数上的数等于百位数上的数加十位数上的数。

#include <stdio.h>
#include <stdlib.h>

void main()
{
int i,a[300],b,c,d,e;
FILE *fp;
fp=open("number.dat","r");
if(fp==NULL)
{
printf("cannot open file.\n");
}

for(i=0;i<300;i++)
{
fscanf(fp,"%d",&a[i]);
}
fclose(fp);

for(i=0;i<300;i++)
{
printf("%d ",a[i]);
}
for(i=0;i<300;i++)
{
e=a[i]/1000;
b=a[i]/100%10;
c=a[i]/10%10;
d=a[i]%10;
if(e+d==b+c)
printf("%d:%d+%d=%d+%d\n",i,e,d,b,c);
}

}

请帮我看看这个代码,好像读取文件那一步就出错了。

第1个回答  2018-12-02
打开文件是fopen'
第2个回答  2018-12-02
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i,a[300],b,c,d,e;
FILE *fp;
fp=fopen("number.dat","r");
if(fp==NULL)
{
printf("cannot open file.\n");
return ;
}
for(i=0;i<300;i++)
{
fscanf(fp,"%d",&a[i]);
}
fclose(fp);
for(i=0;i<300;i++)
{
printf("%d ",a[i]);
}
printf("\n");
printf("\n");
for(i=0;i<299;i++)
{
c=i;
for(b=i+1;b<300;b++)
{
if(a[b]<a[c])
c=b;
}
if(c!=i)
{
d=a[i];
a[i]=a[c];
a[c]=d;
}
}
for(i=0;i<300;i++)
{
e=a[i]/1000;
b=a[i]/100%10;
c=a[i]/10%10;
d=a[i]%10;
if(e+d==b+c)
printf("%d:%d+%d=%d+%d\n",i,e,d,b,c);
}
}本回答被提问者和网友采纳
第3个回答  2018-12-02
读文件推荐你用文件重定向试试,那个比较简单,而且你好像并没有排序
相似回答