2019 第二週做業

1、本週完成的做業

基礎做業

請在第一週做業的基礎上,繼續完成:找出給定的文件中數組的最大值及其對應的最小下標(下標從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)設計思路

第一步:定義文件指針,整數和數組
第二步:打開文件逐個讀入和處理數據
第三步:運用for語句循環從文件中讀入數據儲存到 a 中
第四步:運用for語句循環比較數的大小,直到找到最大值爲止
第五步:將最大值及最大值的最小下標寫入文件中
第六步:關閉文件打印結果設計

(3)本題調試過程碰到問題及解決辦法

問題1:不懂文件指針的用法
解決方法:一直看書,而後查資料,最後瞭解一點皮毛指針

問題2:不知道怎麼把文件用到代碼中來
解決方法:看書上的例題,而後試着編寫調試

問題3:對於「fscanf()」和「fprintf()」的用法有點陌生
解決方法:翻看資料,知道了"fscanf()"的功能是把磁盤文件數據讀出保存到變量(內存),而「fprintf()」的功能是將數據和字符等寫入文件code

問題4:不知道爲何要把"r"改爲"r+"
解決方法:個人代碼是對照着書上寫的,可是就是錯的,後來看了其餘同窗的博客,發現他們用的是「r+」,而後我便翻書看,才知道「r」是打開文本文件進行只讀,而「r+」是打開文本文件進行讀/寫, 而咱們的文件須要寫,因此用「r+」blog

(4)運行結果截圖

2、學習進度條

周/日期 這周所花的時間 代碼行數 學到的知識點簡介 目前比較迷惑的問題
2/25-3/3 三天 45 數組的認識及用法 數組長度的理解
3/4-3/10 兩天 37 編寫程序時處理文件 fscanf與fprintf的具體用法

3、學習感悟

本週咱們學習了到文件的概念,並深刻學習從給定的文件中讀取數據並進行數據處理,主要包括定義文件指針(FILE型)fp、打開文件,從文件讀取數據和關閉文件等操做。其中FILE能夠看作是新的數據類型,用來表示文件。fopen(),fscanf(),fclose(),是文件操做額函數,stdio.h中定義。其中,fscanf()的功能是把磁盤文件數據讀出保存到變量中。 另外還初步學習到了關於指針的概念,關於這個知識點我還須要進一步學習瞭解。內存

感悟:其實最初聽課時候以爲很難感受一點也不理解,可是後來通過反覆去看教科書再嘗試編寫代碼的時候就發現本身能夠理解了,因此我以爲仍是堅持吧,哪怕一開始不懂不表明永遠不會理解。博客

相關文章
相關標籤/搜索