2019年春季学期第二周作业(文件指针)
2019年春季学期第二周作业(基础作业)
请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出:
在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
一、实验流程
二、实验代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;char op=',';
int b,t;
int a[6];
/*打开文件*/
if((fp=fopen("E:\\第二周作业\\William.txt","w+"))==NULL)
{
printf("File open error! \n");
exit(0);
}
for(b=0;b<6;b++)
{
scanf("%d",&a[b]); /*输入数组元素并写入文件*/
fprintf(fp,"%d",a[b]);
if(b!=5)
{
fprintf(fp,"%c",op); /*应题目要求,写逗号入文件*/
}
}
/*找最大值a[t]*/
t=0; /*假设a[t]是最大值,即下标为0的元素最小*/
for(b=1;b<6;b++)
{
if(a[b]>a[t]) /*如果a[b]比假设的最大值还大*/
t=b; /*再假设a[b[是新的最大值,即下标为b的元素最大*/
}
/*输出最大值和对应的下标并写入文件*/
printf("%d %d",a[t],t);
fprintf(fp,"\n%d %d",a[t],t);
if(fclose(fp))
{
printf("Can not close the file! \n");
exit(0);
}
return 0;
}
三、本体调试过程中遇到的问题及解决方法
问题一:打开文件的代码写错
问题一的解决办法:
把open改成fopen。
问题二:直接复制了上次的代码,忘记定义数组a,整型变量t。
问题二的解决办法:
定义数组a及变量t;
问题三:忘记写printf输出结果
问题三的解决办法:
在第30行写入printf(“%d %d”,a[b],b);
问题四:找到的最大值有误
问题四的解决办法:
将16行的取地址后b及20行b 改成 a[b] ;
问题五:文件的各元素间多了个逗号
问题五的解决办法:
定义一个字符变量char op; op=',' ; 然后在18行加 fprintf(fp,"%c",op);
四、运行结果截图
五、本次作业小结
日期 | 本次作业所花时间 | 代码行数 | 评价 |
---|---|---|---|
2019/3.4~3.9 | 5小时 | 38行 | 本次基础作业说难也不难,难道适中吧,刚开始,我的思路就是利用本周学的文件指针,然后直接在文件指针代码中嵌入查找最大值及其下标的代码。我的想法其实没错,就是在做的的时候想先在文件中事先手动输入数组元素,然后利用 fscanf(fp,“”,&);直接读出元素,结果我的想法是错的,我试了很多遍,都没成功。最后只能放弃利用fscanf函数改用fprintf函数。结果才理想的。 |