基础作业
请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出
在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
1.实验代码
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
FILE *fp; //定义文件指针
int n,i,max;
int count=0;
char num[10];
if((fp=fopen("F:\f505-Yangling.txt","w+"))==NULL) //运用if语句判断,建立新文本文件进行读或写
{
printf("File open error!
");
exit(0);
}
scanf("%d
",&n);
fprintf(fp,"%d
",n);
for (i=0;i<n;i++) //将输入的数字输出到文件文本中
{
scanf("%d",&num[i]);
fprintf(fp,"%d,",num[i]);
}
max=num[0];
for (i=1;i<n;i++)
while (num[i]>max){
max=num[i];
count=i;
}
fprintf(fp,"
%d %d",max,count); //将最大值和下标输出到文件文本中
if(fclose(fp)){ //关闭文件
printf("Can not close the file!
");
exit(0);
}
return 0;
}
2.设计思路
流程图:
思路:
先定义文件指针,然后建立新文本文件,运用for语句进行输入同时将输入的数字写入文件文本中 ;
运用while语句进行判断将最大值和下标输出到文件文本中 ,最后关闭文件
3.本题遇到的问题及其解决方法
错误截图:
问题:我开始将输出最大值和下标写在了while语句里面
解决办法:将fprintf(fp,"
%d %d
",max,count);写到while 语句外面
注意事项:
1.是要通过代码建立一个新的文件文本,不是让我们在磁盘里面创建文档
2.我觉得文件打开方式用“w”也应该可以,进行只写,代码已经读过了
4.实验结果截图:
二、学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的题目 |
---|---|---|---|---|
3/4-3/9 | 6小时 | 89 | 新建文件进行读写 | 二位数组子数组的最大值的求和 |
三、学习感悟
我在这周学了怎么去新建文件 在文件中打印结果,还学了一维数组的使用,但是老师的挑战题目我不会做