2019 第二周作业

一、本周完成的作业

基础作业

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

输入:

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

输出

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

(1)实验代码

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    FILE*fp;
    int i,j,n=0;
    int a[10];
    
    if((fp=fopen("C:\\Users\\Administrator\\Desktop\\作业\\zhangman.txt","r+"))==NULL)   /*打开文件*/
    {
        printf("File open error!\n");
        exit(0);
    }                       
    for(i=0;i<6;i++)                  /*文件处理(逐个读入和处理数据)*/
    {
        fscanf(fp,"%d%c",&a[i]);          /*从文件中读入数据储存到 a 中 */  
        printf("%d%c",a[i]);    
    }
    j=a[0];
    for(i=0;i<6;i++)
    {
        if(j<a[i])
        {
            j=a[i];
            n=i;
        }
    }
    printf("\n%d %d",j,n);
    fprintf(fp,"\n%d %d",j,n);     /*将最大值及最大值的最小下标写入文件中 */
    
    if(fclose(fp))              /*关闭文件*/ 
    {
        printf("Can not close the file!\n");
        exit(0);
    }
    return 0;
}

(2)设计思路

1582613-20190309005920473-832383631.png

第一步:定义文件指针,整数和数组
第二步:打开文件逐个读入和处理数据
第三步:运用for语句循环从文件中读入数据储存到 a 中
第四步:运用for语句循环比较数的大小,直到找到最大值为止
第五步:将最大值及最大值的最小下标写入文件中
第六步:关闭文件打印结果

(3)本题调试过程碰到问题及解决办法

问题1:不懂文件指针的用法
解决方法:一直看书,然后查资料,最后了解一点皮毛

问题2:不知道怎么把文件用到代码中来
解决方法:看书上的例题,然后试着编写

问题3:对于“fscanf()”和“fprintf()”的用法有点陌生
解决方法:翻看资料,知道了"fscanf()"的功能是把磁盘文件数据读出保存到变量(内存),而“fprintf()”的功能是将数据和字符等写入文件

问题4:不知道为什么要把"r"改成"r+"
解决方法:我的代码是对照着书上写的,但是就是错的,后来看了其他同学的博客,发现他们用的是“r+”,然后我便翻书看,才知道“r”是打开文本文件进行只读,而“r+”是打开文本文件进行读/写, 而我们的文件需要写,所以用“r+”

(4)运行结果截图

1582613-20190309004641842-1454337977.png

1582613-20190309004655897-701164290.png

二、学习进度条

周/日期这周所花的时间代码行数学到的知识点简介目前比较迷惑的问题
2/25-3/3三天45数组的认识及用法数组长度的理解
3/4-3/10两天37编写程序时处理文件fscanf与fprintf的具体用法

三、学习感悟

本周我们学习了到文件的概念,并深入学习从给定的文件中读取数据并进行数据处理,主要包括定义文件指针(FILE型)fp、打开文件,从文件读取数据和关闭文件等操作。其中FILE可以看做是新的数据类型,用来表示文件。fopen(),fscanf(),fclose(),是文件操作额函数,stdio.h中定义。其中,fscanf()的功能是把磁盘文件数据读出保存到变量中。 另外还初步学习到了关于指针的概念,关于这个知识点我还需要进一步学习了解。

感悟:其实最初听课时候觉得很难感觉一点也不理解,但是后来经过反复去看教科书再尝试编写代码的时候就发现自己可以理解了,所以我觉得还是坚持吧,哪怕一开始不懂不代表永远不会理解。

转载于:https://www.cnblogs.com/zmzhang/p/10489629.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值