一、本周完成的作业
请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出:
在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main (void)
{
FILE *fp;
int i,N,index;
char a[10];
if((fp=fopen("E:\\PTA\\chenxilin.txt","w+"))==NULL){
printf("File open error!\n");
exit(0);
}
scanf("%d\n",&N);
fprintf(fp,"%d\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
fprintf(fp,"%d",a[0]);
for(i=1;i<N;i++)
fprintf(fp,",%d",a[i]);
index=0;
for(i=1;i<N;i++)
if(a[i]>a[index])
index=i;
printf("%d %d",a[index],index);
fprintf(fp,"\n%d %d",a[index],index);
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
设计思路
本题遇到的问题及其解决方法
问题1,不知道运用那种文件打开方式。
解决方法,通过翻阅书籍,发现只能用“w“和“w+”打开最好。因为根据题意中输入的规则,我们要在编译器建立一个文件,然后在编译器中输入数字,并输入结果。而不是在磁盘中建立一个文件,通过记事本输入数字!
问题2,不了解各种输入,输出语句(scanf,fscanf,printf,fprintf)的区别。
解决方法,通过摸索。花了我很长的时间。scanf用于编译器(屏幕)的输入。fscanf用于直接输入到文件中。printf用于编译器(屏幕)的输入,fscanf用于直接输入到文件中!
运行结果
二、学习进度条
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较困惑的问题 |
3/9-3/15 |
240min |
100 |
文件建立及其文件的利用 |
|
三、学习感悟
学习到了建立文件,感觉特别不错。一个软件不就是是用程序和文件建立起来的吗(软件的组成是程序和文件建立起来的是一种简单的说法)