第二周作业
第二周作业
题目:请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出
在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
1.代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
int a[10];
int i, q=0, m;
if((fp=fopen("D:\\作业\\xiongyating.txt","r+"))==NULL) \\注意双斜杠
{
printf("File open error!\n");
exit(0);
}
\\可用来判断文件是否打开正常
for(i = 0; i < 5; i++)
{
fscanf(fp,"%d%c", &a[i]);
printf("%d%c", a[i]);
\\%c题目要求以逗号分隔开来
}
m = a[0];
for(i = 0; i < 5; i++)
{
if(a[i] > m)
{
m = a[i];
q = i;
}
}
printf("\n%d %d", m, q);
fprintf(fp,"\n%d %d", m, q);
\\注意换行符
if(fclose(fp))
{
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
2.设计思路
3.本题调试中遇到的问题及解决办法
问题1:得不到我想要的记事本的截图,因为并不知道记事本需要需要退出之后重新进入,才能得到变化
解决方法:不知道用那种文件打开方式,在一个个尝试之后,就发现了问题1,并且尝试了一下发现a+,r+两种都可以用
问题2:为什么改了代码之后再编译会出现一串各种各样的数字。因为并不知道自己上一次的编译将文本中的数据改变了,影响了被输入代码的数据
解决方法:这种属于不停的去尝试改写自己的代码发现的解决方法
问题3: 不知道逗号怎么同时从文件中读进程序中,且出现在编译结果中
解决方法:类比了printf原样输出的情况想了一下用了一个字符格式符,将逗号原样输出
问题4:第一次编译出来的结果是在一行的
解决方法:后来几个位置尝试添加换行符,看编译结果
写完这个作业让我很好的认识到了fscanf与 scanf ,fprintf 与printf的区别了。
4.运行截图
正确截图
错误截图
二。学习进度条
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点 | 目前比较迷惑的问题 |
---|---|---|---|---|
2/25-3/3 | 两天 | 52 | 一维数组的用法 | 数组长度是否为变量 |
3/4-3/10 | 零碎的一天(18h) | 43 | 编写程序处理文件 | 文件结构与类型 |
三、学习感悟
本周学习了文件概念,然后学习编写程序读取文件中的数据在深入到学习代码可以改变文件中的数据。
另外我也去搜索了一下关于exit(0)的知识,
注意到:
exit(0):正常运行程序并退出程序;
exit(1):非正常运行导致退出程序;
return():返回函数,若在主函数中,则会退出函数并返回一值。