作業要求一
實踐最簡答的項目wordcount,必須完成其中的基本功能,若可以完成其他功能給予加分。完成后請將你的設計思路、主要代碼寫在本次作業博客里。
設計思路:
第一步:定義文件型指針變量fp,整型number,字符a。
第二步:判斷輸入的字符a的值,根據a值的不同調用不同的函數。
第三步:在被調用的三個函數中,判斷是否打開此txt文件,如果打開失敗則直接退出,從fp所指示的磁盤文件上分別讀入一個字符到a,b,c,在while循環中判斷文件是否結束。
第四步:對應不同的函數在循環中有不一樣的條件,最后返回主函數。
主要代碼:
#include <stdio.h>
#include <process.h>
int main(int argc,char *argv[])
{
FILE *fp;
int number;
char a;
printf("請輸入字符:\n");
scanf("%c",&a);
if(a=='c') {
number=ch();
} else if(a=='w') {
number=wo();
} else {
number=li();
}
printf("%d",number);
return 0;
}
int ch() {
FILE *fp;
if((fp=fopen("wc.txt","r"))==NULL)
{
printf("File to open error!\n");
exit(-1);
}
int m=0;
char a;
a = fgetc(fp);//
while(a!=EOF) {
m++;
a=fgetc(fp);
}
if( fclose(fp) )
{
printf( "Can Not Close The File!\n" );
return 0;
}
return m;
}
int wo () {
FILE *fp;
if((fp=fopen("wc.txt","r"))==NULL)
{
printf("File to open error!\n");
exit(-1);
}
char b;
int i=1,count=0;
b = fgetc(fp);
while(b!=EOF) {
if(b==' '||b=='\n')
{
i=1;
}else
{
if(i==1)
{
count++;
i=0;
}
}
b = fgetc(fp);
}
if( fclose(fp) )
{
printf( "Can Not Close The File!\n" );
return 0;
}
return count;
}
int li() {
FILE *fp;
if((fp=fopen("wc.txt","r"))==NULL)
{
printf("File to open error!\n");
exit(-1);
}
int n=1;
char c;
c= fgetc(fp);
while(c!=EOF) {
if(c=='\n') {
n++;
}
c= fgetc(fp);
}
if( fclose(fp) )
{
printf( "Can Not Close The File!\n" );
return 0;
}
return n;
}
自身覺得自己的代碼並不是十分的符合題目要求,雖然在主函數的括號中有寫到argc和argv[],但在主函數中並沒有運用到。在做這道題的時候自己一開始並沒有讀懂題目,用了先寫后讀的方法,最后雖然明白了題意但很懵。在仔細看了趙寅勝同學的代碼后,也查閱了關於int main(int argnum, char* args[]) 的書籍和資料,然而還是很懵。最后只是大致明白了它的含義,因此最終選擇了這樣較為簡單的方法。




要求二、學習總結和進度
1、將PTA作業的源代碼使用git提交到托管平台上,要求給出上傳成功截圖和你的git地址。

git地址:(https://git.coding.net/exo07/disizhouzuoye.git)
2、點評3個同學的本周作業(在作業中給出被點評同學博客的鏈接),並邀請3名同學點評你的作業,無點評作業(你的作業未被3人點評)/或者沒有回復同學或老師的點評都倒扣該題分數。
趙寅勝:(http://www.cnblogs.com/2017023960ZYS/p/8952253.html)
董欣:(http://www.cnblogs.com/dx2017/p/8992749.html)
馮子旋:(http://www.cnblogs.com/fengzx/p/8992814.html)
3、請用表格和折線圖呈現你本學期的代碼行數和所用時間、博客字數和所用時間,包括ACM刷題等其他平時自己練習的代碼

4、本學期課程即將結束,請總結下你本課程的收獲,回顧第0次作業,你是否實現了你的目標?
答:在本學期感覺自己學了很多,但又感覺像是沒學多少,總和起來就是那種學的知識點很多然而自己掌握的都不怎么好的那種程度。
a:在指針方面自己學到了如何去定義指針變量、指針變量的引用、用指針指向數組且進行相應的運算、指針的指向各種類型(指針,字符串,結構體等等),自我感覺前三點掌握的還算熟練以外其他都是需要多加磨煉的。
b:在結構體方面學到了結構體變量的引用和初始化,及結構體數組的應用,感覺這章的知識點較少,因此自己的掌握程度較熟練。
c:在鏈表這章,自己主要學習到了鏈表的定義即如何去創建鏈表及輸出鏈表,而在鏈表的插入及刪除方面屬於懂得原理,但實際操作起來的話會需要時間的程度。
d:在文件方面學到了如何去打開和關閉文件,了解了文件的讀和寫。
回顧第0次作業,自己給自己這一學期設定的目標來看,在對上學期的知識點能夠更加熟悉掌握這方面覺得自己是有達到要求的;而在這學期盡量掌握新學的內容方面,感覺自己做的不是很夠。而在自己的《第0次作業》中,寫到每天會規定至少一個小時的時間去練習和深入了解且不包括PTA作業所需要懂的這點,自己確實是沒有做到,可以在每次博客的表格和折線圖中也可以看出。而在寫PTA時,也沒有將時間和寫博客園的時間相對應,一般都是在寫完PTA之后才開始寫的博客園。回顧第0次作業對自己的要求,和現在自身的情況一對比,感覺很內疚。在寫第0次作業時,對自己的規划感覺是很滿意的,也想每天都要實施下去的,然而卻經常會被自己的一些事情打破計划,只能保質保量的完成PTA中的題目。在后面較多的復習的時間內,自己會針對這不足點,將概念及書上例題都盡量做到熟悉和了解,希望在期末考試前,可以做到讓自己滿意的程度。
5、你對目前的上課和作業方式(上課講解+PTA+博客)有何意見和建議?
答:對上課講解+PTA+博客的總體模式並沒有什么意見,但就PTA的題目的話,覺得前期的方法較好一點,就是那種一節課講完后,就對相關知識點的PTA題目進行發布,在下一節課上完以后,再進行第二次發布,而不是那種一次性發布完。當PTA中新的題集一發布里面就有三四道題目時,這樣的話會導致同學們一看題數就有可能會做完的話會花費很多時間,且題目肯定比較難的感覺。如果是每道題隔一段時間的話,感覺同學們有可能看到PTA題目時的壓力會比較小一點,從而提高同學們的積極性,但如果這樣的話,老師應該會更加的辛苦。對PTA+博客的模式感覺是蠻好的,PTA是必要的,而博客也是不可缺的。在博客園中將自己的錯誤點記錄下來,這樣積累下來,對我們自身來說也是一筆小小的財富,並且博客園本身也是一個開放的模式,也希望自己可以在其中學到更多的東西。
6、終於我們即將不再是師生。當你結束本課程,你和我就站在同樣的位置上,我將不再基於學校授權和知識、經驗 (年齡?)上的優勢而對你的自由有任何干擾。除發布成績以外,我最后一次行使教師特權: 請問你有什么要對教師 (我)說的,建議、抱怨、希望……多謝。
答:覺得老師在最后兩周的授課中,相較於之前是比較溫柔噠。C程序這門課的掌握程度和自己敲的代碼數量是呈正比例關系的,並且最終也是以代碼的形式呈現出來的,不像網頁制作或者是PS這類,效果比較直觀。抱怨的話,確實是沒有的,老師是很負責任,也很辛苦,希望下學期的相關課程也會是牛老師來教授我們。
