《C語言及程式設計》實踐專案——用檔案輸入輸出初步
阿新 • • 發佈:2019-02-11
【專案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中。
[參考解答]