春季第二周作业

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! ");

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," %d %d",max,k);

printf(" %d %d",max,k);

if (fclose(fp)){

printf("Can not close the file! ");

exit(0);

}

return 0;

}

 运行结果:

由于之前的错误截图没有截屏所以只有最后的这个截图:

过程中出现的问题:

1,代码运行出来的结果是一堆乱码。

解决方法:询问大腿搭档,发现问题是文本中数据隔开的逗号使用的是中文逗号,然后更改为英文逗号。

2,代码运行成功后答案不正确。

解决方法:在33行if(a[j]>max)后面加上{},就解决了。

3,元素之间用逗号隔开,但没对逗号进行编译。

解决方法:加入了字符型op。

设计思路:

流程图好像有逻辑错误,反正感觉有点奇怪 

原文地址:https://www.cnblogs.com/xia-unun/p/10498337.html