鄧麗萍
摘要:C語言程序設計是計算機和電子專業必修的專業課,但多數同學覺得此課程枯燥無趣,在學習過程中感覺都是些離生活遙遠的無聊的數學例子,該文通過列舉生活中的實用的趣味的案例來激發學生的學習興趣。
關鍵詞:C語言;必修課;趣味;
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)26-0086-02
1 入場排序器
日常生活中大小賽事,重要活動如奧運會、城運會等,都將有很多國家或城市參加,開幕時將按一定(如名字的首字母先后)的順序入場,那么怎樣對這些國家和城市來排序呢?這里我們可以用代碼將入場的次序按字母的先后進行排序,使入場時變得井然有序。
1.1 實訓過程
1)說明部分,定義一個二維字符數組,用于存儲需要排序的字符串;
2)對字符串數組進行排序;
3)輸出排序后的字符串。
1.2 所用到的知識點
1)二維數組的定義;
2)數組的排序;
3)字符串的處理函數:頭文件 #include "string.h"
字符串比較函數:strcmp(charArr[j],charArr[j+1])>0
字符串復制:strcpy(temp,charArr[j]);
字符串輸出:puts(charArr[i]);
1.3 案例擴展
1)動態輸入字符串進行排序;
2)為了節約存儲用指針數組來實現排序。
2 兒童算術能力測試軟件
在我們的一生學習中,兒童期的算術能力是學好的數學的基本功。此款兒童算術能力測試軟件可以輔助兒童進行算術訓練,從而提高兒童的算術能力,程序會自動生成兩個隨機數和一個運算符,使用者只需要輸入運算后的值,軟件會自動評判并統計出所得的分數。
2.1 實訓過程
1)說明部分:分別定義一個用于存儲正確答案和用戶所輸入的答案的數組;
2)打印測試軟件的說明
3)隨機生成10個題目
a)先定義兩個變量作為運算的值,一個存儲運算符的top,一個循環變量以及存儲運算符的字符op
b)用system(“cls”)
c)初始化隨機數種子
d)循環十次,分別初始化兩個數和一個運算符判斷運算符是否符合規范
e)用switch分支語句對運算符進行分支,并且把運算符給op賦值,
f)輸出題目
4)供用戶回答題目(循環十次,用戶分別輸入答案)
5)批改評判
a)循環遍歷答案
b)如果答案正確輸出黃色的well done
c)如果答案錯誤輸出紅色的答案
6)輸出成績等級
a)先讓成績num*10變成百分制
b)如果成績在90分至100分之間,輸出總成績,輸出Very Good
c)如果成績在60分至90分之間,輸出總成績,輸出fight for good grades!
d)如果小于60分,則輸出總成績和Dont give up??!
7)輸入字符串Y或N判斷是否還要再測試,如果輸入Y則再進行測試N則退出while循環,并打印Thank you for using it,Byebye!
2.2 所用到的知識點
1)分支語句;
2)循環語句;
3)隨機數的產生方法;
4)函數的定義;
5)函數參數的使用;
6)函數原型申明;
7)函數的調用。
2.3 案例擴展
將分數保存到數組,做一個排行榜,看看哪個小朋友最棒。
3 日歷
在我們的生活中離不開日期,我們很在意我們所過的這一天是什么日子,尤其是雙休日還是工作日,是平年還是閏年。本案例可以使我們更便捷地查看某一天是星期幾。
3.1 實訓過程
1)說明部分:分別定義了表示年,月,日的三個變量。和每個月的天數的一個數組,表示總天數的long int型數據day,存放每個星期的字符數組week;
2)清空緩存,并且輸入日期;
3)判斷是否為閏年。如果是閏年,把存放每個月天數的monthd數組的第二個月天數修改為29天;
4)循環monthd數組。到輸入的那個月份為止,計算出當前這一年的月的天數,再加上輸入的天數,求得當前年所過的天數;
5)從1900年開始到當前年,求得所有的天數;
6)判斷所得的是否為雙休日。
3.2 所用到的知識點有:
1)清空緩存:fflush(stdin);
2)按格式輸入內容: scanf("%d-%d-%d",&y,&m,&d);
3)條件分支,判斷是否為閏年:if(y%4==0&&y%100!=0||y%400==0),判斷是否為工作日;
4)循環;
5)數組的應用。
3.3 案例擴展
1)用”time.h”頭文件查詢當前日期,計算今天為星期幾;
2)用枚舉初始化星期。
4 我的圖形我做主
形狀是人們認識一件事物的第一反應,我們對一件事物是否熟悉,也取決于對這件事物的形狀的印象,數學更是離不開形狀,因此我們做了一個可以生成各種形狀的程序,來幫助人們對形狀的認識?!拔业膱D形我做主”是一款可以由用戶輸入指定的邊數,行數和是否為空心三個參數后,便自動生成相應的圖形的程序。
4.1 實訓過程
1)說明部分:定義了三個變量,分別是edge(邊數),line(行數),shape(是否為空心);
2)使用while無限循環,讓用戶可以多次使用;
3)清空當前屏幕內容。并且提示用戶輸入邊數,行數以及是否為空心;
4)用戶進入Produce_Pattern函數后
a)判斷line,如果行數小于三,就讓line=3
b)進入switch分支,如果line是3,則進入Triangle,輸出三角形,如果line是4,則輸出菱形和平行四邊形,否則輸出error;
5)打印完后,讓程序暫停
a)定義一個char ,用戶保存輸入的值
b)清空緩存
c)輸出提示語句enter continue...
d)判斷用戶輸入的是不是enter鍵,如果是,則返回主頁面,如果不是,一直處于程序暫停狀態。
4.2 所用到的知識點
1)雙重循環的使用;
2)函數的定義;
3)函數參數的使用;
4)函數的調用。
4.3 案例擴展
1)再加上空、實心的六邊形和空心的五角星;
2)用graphics繪制圖形。
5 猜拳游戲
制作一個玩家可以與電腦進行猜拳的娛樂小游戲。
5.1 實訓過程
1)說明部分:定義一個玩家結構體;
2)建立一個玩家user,并對其進行初始化;
3)接收玩家的出拳和產生電腦的出拳;
4)判斷勝負,并且對總局數user.total++,若玩家勝利則將user.win++;
5)選擇繼續或者退出,繼續則再進行游戲,退出則打印排行榜,輸出玩家所玩總局數user.totoal和勝率user.victory=user.win/user.total*100。
5.2 所用到的知識點有:
1)函數的定義;
2)函數參數的使用;
3)函數的調用;
4)結構體的定義;
5)指針的定義及使用。
參考文獻:
[1] 吳麗娟, 申海, 張浩華. C語言課程設計教學模式的探索與實踐[J]. 沈陽師范大學學報:自然科學版, 2012(1).
[2] 齊心. 以C語言實驗教學為核心培養學生創新能力[J]. 科技創新導報, 2012(5).
[3] 張秋生. 《C語言程序設計》課程教學改革與實踐[J]. 軟件導刊, 2012(2).
[4] 李紅葉. 項目驅動教學法在《C語言程序設計》教學中的應用[J]. 中國科技信息, 2012(6).
[5] 馬占軍. “船舶電氣設備及系統”課程教學改革的探討[J]. 通化師范學院學報, 2012(6).
[6] 盧爭艷, 張蘭. 舉一反三——談C語言循環結構教學[J]. 科技創新導報, 2011(29).