zoukankan      html  css  js  c++  java
  • 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! 
    ");
    		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,"
    %d %d",a[t],t);
    		   if(fclose(fp)) 
    		   {
    		   	    printf("Can not close the file! 
    ");
    		   	    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函数。结果才理想的。
  • 相关阅读:
    web前段学习2017.6.15
    web前段学习2017.6.13
    web前端2017.6.10
    web前段2017.6.8
    web前段学习2016.6.6
    宏任务与微任务
    浏览器兼容性问题
    TCP 和 UDP 的区别
    React如何渲染大数据量的列表?
    移动端兼容性问题
  • 原文地址:https://www.cnblogs.com/xw1203/p/10486921.html
Copyright © 2011-2022 走看看