第一題:統計字母的使用頻率
一、題目:統計字母的使用頻率
目的與要求
1.目的:
通過編寫程式統計字母的使用頻率,培養學生綜合利用c語言進行程式設計的能力,熟悉字串的操作方法,加強函式的運用,提高軟體系統分析能力和程式文件建立、歸納總結的能力。
2.基本要求:
1)要求用c語言程式設計,在visual c++環境下除錯完成;
2)要求按照程式功能分成幾個功能模組來實現,各個功能模組分別使用函式來完成;
3)要求應用本課所講授的程式語言知識來解決問題
設計方法和基本原理
1.課題功能描述:本程式的功能,就是要統計英文本母的使用頻率。
2.問題詳細描述
為統計英文本母的使用頻率,輸入乙個不包括空格的由英文本母組成的字串,長度不超過200個字元。統計26個英文本母的使用頻率,不區分大小寫。最後按使用頻率從大到小輸出字母(小寫字母)和使用頻率(出現的次數)。
3.問題的解決方案
按照程式要求,本程式應採用模組化設計方法,設計幾個功能模組。例如(僅供參考):
◆ 將字串中的大寫字母轉換為小寫字母
◆ 統計輸入的字串中字母的使用頻率
◆ 按使用頻率從大到小進行排序
主函式中控制輸入、函式呼叫和輸出。
主要技術問題的描述
根據三的分析,主要問題在於:
1)為統計字母的使用頻率,定義乙個長度為26的int陣列存放所統計的各個字母的使用頻率。
2)在統計字母的使用頻率時,不要使用if語句或switch語句,利用字母的ascii碼與陣列元素下標之間的關係來求得。
3)按使用頻率從大到小進行排序時,建議使用指標陣列更為方便。
創新要求
實現程式功能後,可進行創新設計:
1)使用多檔案,即主函式和各個函式分別存放在不同的.c檔案中,在標頭檔案中進行函式原型宣告。
2)讀入一篇英文文件,並對其進行字母頻率分析。
2、功能描述
1.程式執行第一步進行模式選擇:從螢幕讀入一串字母或從檔案中讀取文章(從螢幕讀入時字串長度不超過200)。
2.讀取文章完畢後,統計各個字母的使用頻率,並按從大到小的順序列印出來,同時,對使用次數相同的字母按字母表順序列印,對使用次數為0的字母不予列印。
三、解決方案(流程圖
4、主要函式描述
函式:負責變數的定義、模式的選擇及函式的呼叫。
函式:負責將大小寫字母統一成小寫字母後返回小寫字母。
函式:負責統計某一字母的使用頻率並輸出。
函式:讀入位於f://單詞開頭大寫.txt,通過呼叫函式統計字母頻率並相應輸出。
函式:按字母使用頻率從大到小的順序輸出字母及其使用頻率。
5、主要技術問題
程式如下:
#include <>
#include <>
#define n 200
/*判斷字母並將大寫字母轉換為小寫字母後返回*/
void change(char *p
}/*讀入位於f://單詞開頭大寫.txt,通過呼叫函式統計字母頻率並相應輸出*/
void read()
; a[26]=-1;
if(!(fp=fopen("f:\\單詞開頭大寫.txt","r")))
ch=fgetc(fp);
while(ch!=-1)
fclose(fp);//關閉檔案指標
for(i=0;i<=25;i++)
void main()//主函式
,mode_num;//mode_num為模式選擇
b[26]=-1;
printf("please choose the mode:\n1--to read from the screen\n2--to read from file\n");
scanf("%d",&mode_num);
if(mode_num==1)
}else
}執行結果:
六、實驗心得
通過這次「統計字母使用的頻率」演算法程式設計的實習,我學習並掌握了函式的呼叫、形參為指標或陣列的傳遞方法以及讀取檔案資料的方法。同時,在程式設計過程中,也遇到了許多問題:
1.在檔案呼叫的過程中,使用課本上的「while(ch!=eof)」不能實現對檔案結尾的判斷,造成函式進入死迴圈,不能及時退出。
心得:當自己的程式出現邏輯錯誤且自己不知道錯誤的地點時,用除錯的方法一步步觀察程式的執行方式,就可以發現錯誤的原因並加以改正。
2.在輸出字母及其使用頻率的過成中,曾因為不知道運用轉義字元而重新定義了乙個陣列用來存放a~z的英文本母,在一次翻書的過程中突然看見了轉義字元的使用方法,從而使自己的程式大幅度的簡化。
心得:雖然這並不屬於程式的語法或邏輯錯誤,但這次經過使我明白了:程式的編譯每個人可能都有不同的方法,但方法與方法之間是存在差別的,只有用心思考,才能以最簡單明瞭的方式實現程式的功能。
第二題:四則運算
1、題目:四則運算
目的與要求
1.目的:
通過編寫四則運算程式,培養學生綜合利用c語言進行程式設計的能力,熟悉字串的操作方法,加強函式的運用,提高軟體系統分析能力和程式文件建立、歸納總結的能力。
2.基本要求:
1)要求用c語言程式設計,在visual c++環境下除錯完成;
2)要求按照程式功能分成幾個功能模組來實現,各個功能模組分別使用函式來完成;
3)要求應用本課所講授的程式語言知識來解決問題.
設計方法和基本原理
1.課題功能描述
本程式的功能,就是實現數的加減乘除四則運算,如自動計算3+5*8的結果。
2.問題詳細描述
程式執行時,首先提示使用者輸入四則運算表示式(表示式中最多有3個運算子,資料範圍為1-100的整數);
輸入結束後,程式自動進行計算並給出結果。
如:輸入13-10+5/8時輸出3.625。
3.問題的解決方案
注意:問題的解決方案有很多,下面給出的僅供同學們參考。
該問題主要注意四則運算的優先順序問題:乘除運算比加減運算優先順序高,同級運算按從左到右的順序運算。
本程式應採用模組化設計方法,設計幾個功能模組。例如(僅供參考):
◆ 字串解析函式(將輸入字串分解成數和運算子)
◆ 將資料(字元陣列中)轉換成十進位制數(long)
◆ 判讀是否存在高優先順序運算子,若存在首先計算其運算結果並儲存。
◆ 同級運算按先後順序進行。
創新要求
實現程式功能後,可進行創新設計:
1)使用多檔案,即主函式和各個函式分別存放在不同的.c檔案中,在標頭檔案中進行函式原型宣告;
2)在程式中增加自動出題功能及自動批卷功能
3)不限定運算子個數
4)允許括號運算的存在。
2、功能描述
本程式的功能,就是實現數的加減乘除四則運算,同時支援多重括號,算是的長度不超過20個運算子(可以修改數量)。而且,程式中包含自動出題及自動閱卷功能,對答錯的問題會給出正確答案,最後會給出整體分數。
3、解決方案(流程圖)
4、主要函式描述
函式:變數的定義,模式的選擇以及函式的呼叫。
函式:判斷該字元是否為數字
函式:給運算子賦優先順序,同時呼叫函式cal,向主函式返回最後計算值
函式:計算算式的值並返回。
函式:程式的出題模式
5、主要技術問題
程式如下:
#include<>
#include<>
#include<>
演算法與程式設計實習報告
報告班級 姓名 李明 學號 12345678 第一題一 題目 一 題目 統計字母的使用頻率 二 目的與要求 1 目的 通過編寫程式統計字母的使用頻率,培養學生綜合利用c語言進行程式設計的能力,熟悉字串的操作方法,加強函式的運用,提高軟體系統分析能力和程式文件建立 歸納總結的能力。2 基本要求 1 要...
演算法與程式設計實習報告
題1 統計字母的使用頻率 一 題目 統計字母的使用頻率 目的與要求 1.目的 通過編寫程式統計字母的使用頻率,培養學生綜合利用c語言進行程式設計的能力,熟悉字串的操作方法,加強函式的運用,提高軟體系統分析能力和程式文件建立 歸納總結的能力。2.基本要求 1 要求用c語言程式設計,在visual c ...
《ACM程式設計與演算法》課程報告
2010 2011學年第2學期 acm程式設計與演算法 課程報告 班級 電氣0903 學號 20095690 姓名 劉星 格雷碼問題解題報告 一 研究報告 80分 1.題目描述 10分 在數字系統中只能識別0和1,各種資料要轉換為二進位制 才能進行處理,格雷碼是一種無權碼,採用絕對編碼方式,典型格雷...