• 2019年春季学期第二周作业


    基础作业
    请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
    输入:
    请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
    输出
    在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。

    (1)实验代码

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int main()
    {
    FILE*fp;
    int a[10];
    int i, n, f=0;

    if((fp=fopen("D:\Jastina.txt","a+"))==NULL)
    {
    printf ("File open error! ");
    exit (0);
    }
    scanf ("%d",&n);
    fprintf (fp,"%d ",n);
    for (i=0; i<n; i++)
    {
    scanf ("%d",&a[i]);
    fprintf(fp,"^%d",a[i]);
    }
    for (i=0; i<n; i++)
    {
    if (a[f]<a[i])
    f=i;
    }
    printf ("%d %d",a[f],f);
    fprintf (fp," %d %d",a[f],f);
    if (fclose(fp))
    {
    exit (0);
    }
    return 0;
    }

    2.流程图

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

    (3)本题调试过程碰到问题及解决办法
    问题1:不懂文件指针的用法
    解决方法:一直看书,然后查资料,最后了解一点皮毛

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

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

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

    3.运行截图

  • 相关阅读:
    377. Combination Sum IV
    字符串全排列,并去重。
    字符串全排列,并去重。
    智乐活,查找一片区域
    每日一题:华为初级题库——字符个数统计
    每日一题:华为初级题库——字符串替换
    总结菜鸟最近做题目的易错地方
    每日一题:华为初级题库——报数
    每日一题:华为初级题库——最大公约数
    每日一题:华为初级题库——图片整理
  • 原文地址:https://www.cnblogs.com/yun522/p/10500364.html
Copyright © 2020-2023  润新知