已知文本文件file.txt中连续存放了n(2 <= n <= 1000)个整数,邻近两数之间用一个空格隔开。第一个数为文件中存放整数的总数n,后面n - 1个数为具体的数值,这些数有正有负,也没有被排序。
编写程序,读入文件中的数,并且将后面n - 1个数读入数组中。由于宝宝讨厌正数,想把这些数向左平移,移动规则是让数列中的最大值落在坐标轴原点上。宝宝的方法是先找出数列中的最大值,然后将数列中的每个数都减去最大值,这样就实现数列向左平移了。 注意:1.路径及文件名为"file.txt",注意不要写路径。2.只允许使用只读方式打开文件。
题目
已知文本文件file.txt中连续存放了n(2 <= n <= 1000)个整数,邻近两数之间用一个空格隔开。第一个数为文件中存放整数的总数n,后面n - 1个数为具体的数值,这些数有正有负,也没有被排序。
编写程序,读入文件中的数,并且将后面n - 1个数读入数组中。由于宝宝讨厌正数,想把这些数向左平移,移动规则是让数列中的最大值落在坐标轴原点上。宝宝的方法是先找出数列中的最大值,然后将数列中的每个数都减去最大值,这样就实现数列向左平移了。 注意:1.路径及文件名为"file.txt",注意不要写路径。2.只允许使用只读方式打开文件。
一、输入输出
二、代码实现
#include <stdio.h>
#include <stdlib.h>
void ReadArticle(FILE *f)
{
int i,k=-1000,a[2000],j=0;
while (~fscanf(f,"%d",&i))
{
a[j]=i;
if(j>0)
{
if(k<a[j])k=a[j];
}
j++;
}
for(i=1;i<a[0];i++)
{
a[i]-=k;
}
for(i=1;i<a[0];i++)
{
if(i==1)
{printf("%d",a[i]);}
else printf(" %d",a[i]);
}
}
int main()
{
FILE *f;
f = fopen("file.txt", "r");
if (!f)
{
puts("文件无法打开!");
exit(1);
}
ReadArticle(f);
if (fclose(f))
{
puts("文件无法关闭!");
exit(1);
}
return 0;
}
总结
以上就是今天要讲的内容