2019年春季学期第二周作业(文件指针)

2019年春季学期第二周作业(基础作业)

请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
输入:

请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。

输出:

在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。

一、实验流程

1548681-20190308133540739-1014332291.png

二、实验代码

#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;   
 }

三、本体调试过程中遇到的问题及解决方法

问题一:打开文件的代码写错

1548681-20190306225557315-861699072.png

问题一的解决办法:

把open改成fopen。

问题二:直接复制了上次的代码,忘记定义数组a,整型变量t。

1548681-20190306230220306-2026900102.png

问题二的解决办法:

定义数组a及变量t;

问题三:忘记写printf输出结果

1548681-20190306230545412-336722665.png

问题三的解决办法:

在第30行写入printf(“%d %d”,a[b],b);

问题四:找到的最大值有误

1548681-20190306230821922-1326806744.png

问题四的解决办法:

将16行的取地址后b及20行b 改成 a[b] ;

问题五:文件的各元素间多了个逗号

1548681-20190306232521707-387655371.png

问题五的解决办法:

定义一个字符变量char op; op=',' ; 然后在18行加 fprintf(fp,"%c",op);

四、运行结果截图

1548681-20190308134219977-436616025.png

五、本次作业小结

日期本次作业所花时间代码行数评价
2019/3.4~3.95小时38行本次基础作业说难也不难,难道适中吧,刚开始,我的思路就是利用本周学的文件指针,然后直接在文件指针代码中嵌入查找最大值及其下标的代码。我的想法其实没错,就是在做的的时候想先在文件中事先手动输入数组元素,然后利用 fscanf(fp,“”,&);直接读出元素,结果我的想法是错的,我试了很多遍,都没成功。最后只能放弃利用fscanf函数改用fprintf函数。结果才理想的。

转载于:https://www.cnblogs.com/xw1203/p/10486921.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值