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