1. 程式人生 > >《C語言及程式設計》實踐專案——用檔案輸入輸出初步

《C語言及程式設計》實踐專案——用檔案輸入輸出初步

【專案1-由鍵盤到檔案】
(1)從鍵盤輸入一個檔名,以及一個以#結束的字元序列,將輸入的字元儲存到檔案中去。

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp ;
    char ch,fname[10];
    printf("檔名:");
    gets(fname);
    if ((fp=____(1)____)==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    while ((ch=getchar())!='#')
        fputc(____(2)____);
    ____(3)____;
    return 0;
}


(2)設上題建立了名為f1.dat的檔案,請將這個檔案拷貝到一個名為f2.dat的檔案中。

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp1,*fp2 ;
    char c;
    if ((fp1=fopen("f1.dat", ___(1)___))==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    if ((fp2=fopen("f2.dat", ___(2)___))==NULL)
    {
        printf("connot open\n");
        exit(0);
    }
    c=fgetc(fp1);
    while (___(3)___)
    {
        fputc(c,fp2);
        c=fgetc(fp1);
    }
    ___(4)___      
    return 0;
}


(3)以下程式的功能是將檔案file1.dat的內容輸出到螢幕上並複製到檔案file2.dat中。

#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE ___(1)___;
    char ch;
    fp1=fopen("file1.dat","r");
    fp2=fopen("file2.dat","w");
    while (!feof(fp1))
    {
        ch=___(2)___;
        putchar(ch);
        fputc(___(3)___);
    }
    fclose(fp1);
    fclose(fp2) ;
    return 0;
}

[參考解答]


【專案2-檔案中的符號個數】
統計一個文字檔案中數字、空格、字母出現的次數,以及檔案的位元組數,並將結果輸出,文字檔名在程式中輸入(請自建文字檔案完成測試)。
[參考解答]


【專案3-成績統計】
檔案english.dat(這個檔案中的資料量,超出了你之前所有的體驗)中已經有了學生的英語考試成績資料。
(1)請程式設計從english.dat中讀取資料,求出這次考試的平均成績,並統計輸出優秀人數和不及格人數。請在下面程式基礎上填空完成:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int score; //讀入的成績
    int excelent=0, fail=0,count=0;//分別代表優秀、不及格人數、總人數
    double sum=0,ave; //sum: 成績和,ave: 平均分
    //以輸入的方式(ios::in)開啟檔案
    FILE ____(1)____;
    fp=fopen(____(2)____);
    if(fp==NULL)
    {
        printf("open error!\n");
        exit(1);
    }
    while(fscanf(____(3)____)!=EOF)   //當讀取成功……
    {
        count++;
        sum+=score;
        if(____(4)____)
            excelent++;
        else if(score<60)
            ____(5)____;
    }
    ____(6)____;  
    //下面輸出結果
    ave=sum/count;
    printf("總人數為:%d\n", count);
    printf("平均成績為:%.2f\n", ave);
    printf("優秀人數:%d\n", excelent);
    printf("不及格人數:%d\n", fail);
    return 0;
}


(2)擴充上面的程式,要求將統計結果儲存到資料檔案statictic.dat中(提示:要用fprintf寫入檔案了)
(3)(用柱狀圖輸出)程式設計序,求出這次考試的平均成績,並統計各分數段的人數(優秀:≥90,良好:≥80,中等:≥70,及格:≥60,不及格:<60)。執行結果如圖所示。試著將輸出介面改變成成下面的樣子(僅變輸出方式)

[參考解答]

【專案4-算工資】
從檔案salary.txt中讀入工人的工號、基本工資、獎金,將獎金全部增加20%(好事)後,將工號、基本工資、獎金和應發工資(前專案之和)儲存到檔案salarylist.txt中。

[參考解答]