2019年春季学期第二周作业 基础作业
请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。
并将最大值和对应的最小下标数值写入文件。
输入: 请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出 在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
#include<stdio.h>
#include<process.h>
#include<stdlib.h>
int main()
{
FILE *fp;
int i,j,k,max;
int a[7];
char op;
if((fp = fopen ("D:\\xia-unun.txt","a+")) == NULL)
{
printf("File open error!\n");
exit(0);
}
for(i = 0; i < 8; i++ ){
fscanf(fp,"%d%c",&a[i],&op);
printf("%d%c",a[i],op);
}
max = a[0];
for(j = 0; j < 8; j++){
if(a[j] > max){
max = a[j];
k = j;
}
}
fprintf(fp,"\n%d %d",max,k);
printf("\n%d %d",max,k);
if (fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
运行结果:
由于之前的错误截图没有截屏所以只有最后的这个截图:
过程中出现的问题:
1,代码运行出来的结果是一堆乱码。
解决方法:询问大腿搭档,发现问题是文本中数据隔开的逗号使用的是中文逗号,然后更改为英文逗号。
2,代码运行成功后答案不正确。
解决方法:在33行if(a[j]>max)后面加上{},就解决了。
3,元素之间用逗号隔开,但没对逗号进行编译。
解决方法:加入了字符型op。
设计思路:
流程图好像有逻辑错误,反正感觉有点奇怪