一、本周完成的作业:
求最大值及其下标
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
6
2 8 10 1 9 10
输出样例:
10 2
请在上题的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出
在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
1).实验代码
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
FILE*fp;
int i,x,y,n;
int a[10];
if((fp=fopen("D:\helei.txt","a+"))==NULL){
printf("File open error!
");
exit(0);
}
scanf("%d",&n);
for(i=0;i<n;i++){
fscanf(fp,"%d,",&a[i]);
if(a[i]>y&&a[i]!=y){
y=a[i];
x=i;
}
}
printf("%d %d",y,x);
fseek(fp, 0L, SEEK_END);
fprintf(fp,"
%d %d",y,x);
if(fclose(fp)){
printf("Can not close the file!
");
exit(0);
}
return 0;
}
2).设计思路
3).本题调试过程碰到的问题以及解决办法
1.读入文本中的数据失败了,并且自动创建了一个新的同名文本文件,且将数据写入了该文本文件;机缘巧合之下发现这个窗口
中的文件名为helei.txt,明白了初次创建的文件电脑会自动在文件名后添加“.文件格式”(但不会显示出来)而导致文件路径错误,从而导致读取失败,将代码中的helei改为helei.txt后读取数据成功。
2.多次运行代码,文本没有发生改变,追加失败,在一个多小时的尝试下,终于意识到可能是指针位置不处于文本末尾,导致写入的数据覆盖了上次写入的数据,根据这一想法,百度了将指针移至文本末尾的方法(如何用fseek函数调整指针的位置),在写入数据之前加一行fseek(fp, 0L, SEEK_END);使指针移至文本末尾,再次尝试发现成功了!
4).运行结果截图
二、学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
3/2-3/8 | 2h | 23行 | 数组 | 无 |
3/9-3/15 | 3h | 29行 | 读取文件数据 | 无 |
三、学习感悟
除读取文件数据代码的学习外,还学习了用fseek函数移动指针位置。