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); |
| } |
| } |
| |
| |
| t=0; |
| for(b=1;b<6;b++) |
| { |
| if(a[b]>a[t]) |
| t=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; |
| } |
三、本体调试过程中遇到的问题及解决方法
问题一:打开文件的代码写错

问题一的解决办法:
问题二:直接复制了上次的代码,忘记定义数组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函数。结果才理想的。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义