第一篇:C語言程序設(shè)計教學(xué)安排
C語言程序設(shè)計教學(xué)安排
本課程的任務(wù)是結(jié)合一般數(shù)值計算向?qū)W生介紹計算機程序設(shè)計的基本知識,使學(xué)生掌握C語言的基本內(nèi)容及程序設(shè)計的基本方法與編程技巧,了解進行科學(xué)計算的一般思路,培養(yǎng)學(xué)生應(yīng)用計算機解決和處理實際問題的思維方法與基本能力,為進一步學(xué)習(xí)和應(yīng)用計算機打下基礎(chǔ)。本課程學(xué)時總計32學(xué)時。
二、課程內(nèi)容、基本要求與學(xué)時分配
㈠ C語言的基本概念
3學(xué)時
1.了解C語言的特點及發(fā)展
2.掌握程序的基本結(jié)構(gòu)與書寫格式
3.掌握頭文件、數(shù)據(jù)說明、函數(shù)的開始和結(jié)束標志。
㈡ 數(shù)據(jù)類型及其運算
2學(xué)時
1.掌握數(shù)據(jù)類型(基本類型、構(gòu)造類型、指針類型、空類型)及其定義方法。
2.掌握運算符的種類、運算優(yōu)先級、結(jié)合性。
3.掌握不同類型數(shù)據(jù)間的轉(zhuǎn)換與運算。
4.掌握表達式類型(賦值表達式、算術(shù)表達式、關(guān)系表達式、邏輯表達式、條件表達式、逗號表達式)和求值規(guī)則。
㈢ 基本語句
2學(xué)時
1.掌握表達式語句、空語句、復(fù)合語句。
2.掌握數(shù)據(jù)的輸入/輸出和輸入/輸出函數(shù)。
3.掌握go to 語句和語句標號的使用。
㈣ 選擇結(jié)構(gòu)
2學(xué)時
1.掌握用if語句實現(xiàn)選擇結(jié)構(gòu)。
2.掌握用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。
㈤ 循環(huán)結(jié)構(gòu)
4學(xué)時
1.掌握for循環(huán)結(jié)構(gòu)。
2.掌握while和do while循環(huán)結(jié)構(gòu)。
3.掌握continue、break、return語句。
4.掌握循環(huán)的嵌套。
㈥ 數(shù)組的定義和引用
4學(xué)時
1.掌握一維數(shù)組和多維數(shù)組的定義、初始化和引用。
2.掌握字符串與字符數(shù)組。
㈦函數(shù)
6學(xué)時
1.掌握庫函數(shù)的正確調(diào)用。
2.掌握函數(shù)的定義方法。
3.掌握函數(shù)的類型和返回值。
4.掌握形式參數(shù)與實在參數(shù)的區(qū)別,參數(shù)值的傳遞。
5.掌握函數(shù)的一般調(diào)用和嵌套調(diào)用,學(xué)會遞歸調(diào)用。
6.掌握局部變量和全局變量。
7.掌握變量的存儲類型(自動、靜態(tài)、寄存器、外部),變量的作用域和生存期。
8.了解內(nèi)部函數(shù)和外部函數(shù)。
㈧編譯預(yù)處理
1學(xué)時
1.掌握編譯預(yù)處理的概念和特點
2.了解帶參數(shù)的宏定義及其使用,掌握不帶參數(shù)的宏定義及其使用。
3.掌握“文件包含”的概念和使用。
㈨指針
8學(xué)時
1.掌握指針的概念及指針的定義。
2.掌握指針運算。
3.掌握指向變量、數(shù)組、字符串、函數(shù)的指針變量。
4.掌握用指針作函數(shù)參數(shù)。
5.掌握指針數(shù)組和指向指針的指針的概念及其定義方法,了解main函數(shù)的命令行參數(shù)。
㈩結(jié)構(gòu)與聯(lián)合 2學(xué)時
1.掌握結(jié)構(gòu)和聯(lián)合類型數(shù)據(jù)的定義方法。
2.掌握結(jié)構(gòu)和聯(lián)合類型數(shù)據(jù)的引用方法。3.掌握指向結(jié)構(gòu)體的指針變量。3.了解用typedef 定義類型的方法。
(十一)文件操作
2學(xué)時
1.掌握文件類型指針(file類型指針)。
2.掌握文件的打開與關(guān)閉(fopen和fclose函數(shù))。
3.掌握文件的讀與寫(fprintf和fscanf函數(shù))。
三、說明
本課程的先修課程為《計算機文化基礎(chǔ)》和《高等數(shù)學(xué)》
四、課程使用的教材和主要參考書
使用的教材:《C程序設(shè)計》
潭浩強 著
清華大學(xué)出版社
主要參考書:《C語言程序設(shè)計》 王樹義 錢達源 編著 大連理工大學(xué)出版社
第二篇:C語言程序設(shè)計實驗安排
C語言實驗指導(dǎo)
實驗一 順序結(jié)構(gòu)程序設(shè)計(2學(xué)時)
一、實驗?zāi)康氖煜ぴ赩C運行環(huán)境下,編輯調(diào)試C語言程序的一般步驟。掌握順序結(jié)構(gòu)程序設(shè)計的基本思想和基本方法。
二、實驗要求
1. 仔細閱讀下列實驗內(nèi)容,并編寫出相應(yīng)的C語言源程序。2. 在VC運行環(huán)境下,編輯錄入源程序。
3. 調(diào)試運行源程序,注意觀察調(diào)試運行過程中發(fā)現(xiàn)的錯誤及改正方法。4. 掌握如何根據(jù)出錯信息查找語法錯誤。
5.最后提交帶有注釋的源程序文件(擴展名為.c)。要求該文件必須能夠正確地編譯及運行,并不得與他人作品雷同。
6.源程序注釋信息可以包括以下幾方面內(nèi)容:
⑴ 程序功能描述。
⑵ 程序版本號、創(chuàng)作日期。
⑶ 作者信息描述:班級、學(xué)號、姓名。
⑷ 問題分析描述。
⑸ 算法設(shè)計描述。
⑹ 關(guān)鍵語句注釋說明。
⑺ 調(diào)試運行過程中出現(xiàn)的錯誤及改正方法。
⑻ 輸入數(shù)據(jù)樣例。
⑼ 輸出數(shù)據(jù)樣例。
三、實驗內(nèi)容
以下兩題,任選其一解答。
你知道淄博到北京的地面距離是多少千米嗎,淄博到紐約的地面距離又是多少千米呢?說不上來了吧。還是讓我們編一個程序來計算一下吧。
1.已知地球的平均半徑為6371千米,假設(shè)在地球的同一緯度上,有兩個處于不同經(jīng)度的城市A、B,編程序求出這兩個城市之間的地面距離。
輸入數(shù)據(jù)樣例:例如,欲求北緯30度上東經(jīng)10度到東經(jīng)50度的距離,輸入格式應(yīng)為:30 10 50
參考測試數(shù)據(jù):
輸入:0 0 180 輸出:20015.08
輸入:30 0 90 輸出:8397.7
2輸入:60 0 45 輸出:2453.20
2.地球的平均半徑為6371千米,已知地球上兩個城市A、B的經(jīng)度和緯度,編程序求出這兩個城市之間的地面距離。
提示:球面上兩點之間的最短距離,等于過這兩點以球心為圓心的圓上,這兩點之間劣弧的長度。(即這兩點與球心之間的連線構(gòu)成的夾角所對球面劣弧的長度)。
建議你自己一步步推導(dǎo)出公式,而不要照搬網(wǎng)上的現(xiàn)成公式。
四、常見問題
疑問1:這分明是兩道數(shù)學(xué)題啊,能否將數(shù)學(xué)公式提供給我們呢,我們的主要任務(wù)不是編寫程序嗎?
答:建立數(shù)學(xué)模型也是編程序的一部分。學(xué)會分析解決現(xiàn)實中遇到的問題,是我們學(xué)習(xí)的重要目標。
疑問2:這個問題好像屬于球面幾何的范疇,用平面幾何可以求解嗎?
答:這個問題的確涉及到球面幾何,但是也的確可以利用投影以及平面幾何方法來求解。
實驗二 選擇結(jié)構(gòu)程序設(shè)計(2學(xué)時)
一、實驗?zāi)康?/p>
掌握選擇結(jié)構(gòu)程序設(shè)計的一般方法及選擇結(jié)構(gòu)程序的調(diào)試方法。
二、實驗要求
1. 仔細閱讀下列實驗內(nèi)容,并編寫出相應(yīng)的C語言源程序。2. 在VC運行環(huán)境下,編輯錄入源程序。
3. 調(diào)試運行源程序,注意觀察調(diào)試運行過程中發(fā)現(xiàn)的錯誤及改正方法。4. 掌握如何根據(jù)出錯信息查找語法錯誤。
5.最后提交帶有充分注釋的源程序文件(擴展名為.c)。要求該文件必須能夠正確地編譯及運行,并不得與他人作品雷同。
6.源程序注釋信息可以包括以下幾方面內(nèi)容:
⑴程序功能描述。
⑵程序版本號、創(chuàng)作日期。
⑶作者信息描述:班級、學(xué)號、姓名。
⑷問題分析描述。
⑸算法設(shè)計描述。
⑹關(guān)鍵語句注釋說明。
⑺調(diào)試運行過程中出現(xiàn)的錯誤及改正方法。
⑻輸入數(shù)據(jù)樣例。
⑼輸出數(shù)據(jù)樣例。
三、實驗內(nèi)容
你知道你生日那天是星期幾嗎,還有你知道你爸爸生日那天是星期幾嗎?你可能會說:可以查萬年歷啊。那么,不查萬年歷你能計算出來嗎?
以下兩題,任選其一解答。
1.編程序?qū)崿F(xiàn):輸入一個年份y,求出從公元1年1月1日到y(tǒng)年1月1日,總共有多少天,并求出y年的1月1日是星期幾。
2.編程序?qū)崿F(xiàn):輸入任意一個日期的年、月、日的值,求出從公元1年1月1日到這一天總共有多少天,并求出這一天是星期幾。
四、常見問題
疑問1:閏年的規(guī)律是不是四年一閏?
答:四年一閏是儒略歷(儒略也就是凱撒大帝)的置閏規(guī)則。我們現(xiàn)在使用的是格里高利歷,置閏規(guī)則是每400年97閏。
疑問2:公元1年1月1日是星期幾呢?
答:星期一。
疑問3:據(jù)說從儒略歷改為格里高利歷時,將1582年10月4日的下一天定為格里高利歷的10月15日,中間銷去了10天,這會不會影響星期幾的計算?
答:這個調(diào)整是對儒略歷誤差的糾正,并不會影響總天數(shù)和星期幾的計算。
疑問4:這里計算總天數(shù),好像要用到循環(huán)程序吧?
答:其實根據(jù)閏年的置閏規(guī)則,不使用循環(huán)也可以計算出來總天數(shù)。當然,你想使用循環(huán)編寫該程序也是可以的。
實驗三 循環(huán)結(jié)構(gòu)程序設(shè)計(2學(xué)時)
一、實驗?zāi)康恼莆昭h(huán)結(jié)構(gòu)程序設(shè)計的一般方法及循環(huán)結(jié)構(gòu)程序的調(diào)試方法。
二、實驗要求
1. 仔細閱讀下列實驗內(nèi)容,并編寫出相應(yīng)的C語言源程序。2. 在VC運行環(huán)境下,編輯錄入源程序。
3. 調(diào)試運行源程序,注意觀察調(diào)試運行過程中發(fā)現(xiàn)的錯誤及改正方法。4. 掌握如何根據(jù)出錯信息查找語法錯誤。
5.最后提交帶有充分注釋的源程序文件(擴展名為.c)。要求該文件必須能夠正確地編譯及運行,并不得與他人作品雷同。
6.源程序注釋信息可以包括以下幾方面內(nèi)容:
⑴程序功能描述。
⑵程序版本號、創(chuàng)作日期。
⑶作者信息描述:班級、學(xué)號、姓名。
⑷問題分析描述。
⑸算法設(shè)計描述。
⑹關(guān)鍵語句注釋說明。
⑺調(diào)試運行過程中出現(xiàn)的錯誤及改正方法。
⑻輸入數(shù)據(jù)樣例。
⑼輸出數(shù)據(jù)樣例。
三、實驗內(nèi)容
以下兩題,任選其一解答。
1. 海萍夫婦為了徹底告別“蝸居”生活,痛下決心貸款60萬元購買了一套三居室。若貸款月利率為0.5%,還款期限為120個月,還款方式為等額本金還款法(即貸款期限內(nèi)每期以相等的額度償還貸款本金,貸款利息隨本金逐期遞減)。試求出每個月還款的本金、每個月的利息以及總利息分別是多少元。
2. 若還款方式采用等額本息還款法(即貸款期限內(nèi)每期以相等的額度償還貸款本息,貸款利息隨本金逐期遞減)。試求出每個月還款的本金、每個月的利息以及總利息分別是多少元。
四、常見問題
疑問1:等額本息還款法每個月的還款額怎么計算,應(yīng)該有個公式吧,要不然怎么計算出來每個月應(yīng)還的利息與本金?
答:的確有一個計算公式。當然你可以自己推導(dǎo)出來(這樣你會很有成就感?。?,要不然就從網(wǎng)上搜索出來。
實驗四 循環(huán)程序綜合應(yīng)用(4學(xué)時)
一、實驗?zāi)康模?/p>
掌握循環(huán)結(jié)構(gòu)程序設(shè)計的一般方法及循環(huán)結(jié)構(gòu)程序的調(diào)試方法,能夠綜合運用順序、選擇和循環(huán)結(jié)構(gòu)解決一般難度的實際應(yīng)用問題。
二、實驗要求
1. 仔細閱讀下列實驗內(nèi)容,并編寫出相應(yīng)的C語言源程序。2. 在VC運行環(huán)境下,編輯錄入源程序。
3. 調(diào)試運行源程序,注意觀察調(diào)試運行過程中發(fā)現(xiàn)的錯誤及改正方法。4. 掌握如何根據(jù)出錯信息查找語法錯誤。
5.最后提交帶有充分注釋的源程序文件(擴展名為.c)。要求該文件必須能夠正確地編譯及運行,并不得與他人作品雷同。
6.源程序注釋信息可以包括以下幾方面內(nèi)容:
⑴程序功能描述。
⑵程序版本號、創(chuàng)作日期。
⑶作者信息描述:班級、學(xué)號、姓名。
⑷問題分析描述。
⑸算法設(shè)計描述。
⑹關(guān)鍵語句注釋說明。
⑺調(diào)試運行過程中出現(xiàn)的錯誤及改正方法。
⑻輸入數(shù)據(jù)樣例。
⑼輸出數(shù)據(jù)樣例。
三、實驗內(nèi)容
以下兩題,任選其一解答。
1.編程序?qū)崿F(xiàn)如下功能:輸入任意一個年份和月份,按以下格式輸出該月份的公歷日歷。
要求由程序計算出來該月份的1日是星期幾,并用循環(huán)控制打印。打印樣例如下:
2012年日歷
==========
9月
---------日 一 二 三 四 五 六2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30-------------------------
2.編程序?qū)崿F(xiàn)如下功能:輸入任意一個年份,按以下格式輸出該年份全年的公歷日歷。要求由程序計算出來每個月份的1日是星期幾,并用循環(huán)控制打印。
四、常見問題
疑問1:如何控制某個月1日的打印位置?
答:先由程序計算出來該月份的1日是星期幾,然后控制在打印“1”之前打印相應(yīng)個數(shù)的空格。
疑問2:如何控制每周和每月的打印換行?
答:可以根據(jù)當前這一天的打印位置控制每周的打印換行,并根據(jù)該月份的天數(shù)控制每月的打印換行。
實驗五 字符串處理綜合應(yīng)用(4學(xué)時)
一、實驗?zāi)康?/p>
掌握字符串處理的一般方法及字符串處理應(yīng)用程序的調(diào)試方法,能夠綜合運用選擇、循環(huán)結(jié)構(gòu)和數(shù)組、指針解決一般難度的實際應(yīng)用問題。
二、實驗要求
1. 仔細閱讀下列實驗內(nèi)容,并編寫出相應(yīng)的C語言源程序。2. 在VC運行環(huán)境下,編輯錄入源程序。
3. 調(diào)試運行源程序,注意觀察調(diào)試運行過程中發(fā)現(xiàn)的錯誤及改正方法。4. 掌握如何根據(jù)出錯信息查找語法錯誤。
5.最后提交帶有充分注釋的源程序文件(擴展名為.c)。要求該文件必須能夠正確地編譯及運行,并不得與他人作品雷同。
6.源程序注釋信息可以包括以下幾方面內(nèi)容: ⑴程序功能描述。
⑵程序版本號、創(chuàng)作日期。
⑶作者信息描述:班級、學(xué)號、姓名。
⑷問題分析描述。
⑸算法設(shè)計描述。
⑹關(guān)鍵語句注釋說明。
⑺調(diào)試運行過程中出現(xiàn)的錯誤及改正方法。
⑻輸入數(shù)據(jù)樣例。
⑼輸出數(shù)據(jù)樣例。
三、實驗內(nèi)容
以下兩題,任選其一解答。
1.編程實現(xiàn),輸入一個整數(shù)的小寫金額值(即不考慮角和分),轉(zhuǎn)化為大寫金額值并輸出。先實現(xiàn)基本功能,如輸入1002300,可以輸出“壹佰零拾零萬貳仟叁佰零拾零元整”。
2.編程實現(xiàn),輸入一個小寫金額值,轉(zhuǎn)化為大寫金額值輸出。要求實現(xiàn)相對完善的功能,如輸入1002300.90,應(yīng)該輸出“壹佰萬貳仟叁佰元零玖角整”。
四、常見問題
疑問1:如何才能分離出整數(shù)中的每一位數(shù)字?
答:可以利用整數(shù)的求余數(shù)和除法運算實現(xiàn)數(shù)字的分離,同時將分離出的數(shù)字存入到一個事先定義好的數(shù)組中,每個數(shù)組元素只存儲一位數(shù)字。
疑問2:若不能確定整數(shù)的實際位數(shù),如何控制分離過程?
答:可以通過循環(huán)控制數(shù)字的分離過程,每循環(huán)一次分離出來當前的最末一位,然后去掉最末一位,直至分離出所有的位。
疑問3:如何控制給某位數(shù)字添加合適的數(shù)量單位,如萬、仟、佰、拾、元?
答:可以根據(jù)該數(shù)字在原小寫數(shù)值中的位置進行控制,如第0位單位為“元”,第1位單位為“拾”,依此類推。
實驗六 文件應(yīng)用程序設(shè)計(2學(xué)時)
一、實驗?zāi)康恼莆瘴募?yīng)用程序設(shè)計的一般方法及其調(diào)試方法。
二、實驗要求
1. 仔細閱讀下列實驗內(nèi)容,并編寫出相應(yīng)的C語言源程序。2. 在VC運行環(huán)境下,編輯錄入源程序。
3. 調(diào)試運行源程序,注意觀察調(diào)試運行過程中發(fā)現(xiàn)的錯誤及改正方法。4. 掌握如何根據(jù)出錯信息查找語法錯誤。
5.最后提交帶有充分注釋的源程序文件(擴展名為.c)。要求該文件必須能夠正確地編譯及運行,并不得與他人作品雷同。
6.源程序注釋信息可以包括以下幾方面內(nèi)容:
⑴程序功能描述。
⑵程序版本號、創(chuàng)作日期。
⑶作者信息描述:班級、學(xué)號、姓名。
⑷問題分析描述。
⑸算法設(shè)計描述。
⑹關(guān)鍵語句注釋說明。
⑺調(diào)試運行過程中出現(xiàn)的錯誤及改正方法。
⑻輸入數(shù)據(jù)樣例。
⑼輸出數(shù)據(jù)樣例。
三、實驗內(nèi)容
以下兩題,任選其一解答。
1. 海萍夫婦為了徹底告別“蝸居”生活,痛下決心貸款60萬元購買了一套三居室。若貸款月利率為0.5%,還款期限為120個月,還款方式為等額本金還款法(即貸款期限內(nèi)每期以相等的額度償還貸款本金,貸款利息隨本金逐期遞減)。試求出每個月還款的本金、每個月的利息以及總利息分別是多少元。要求將輸出結(jié)果寫入到數(shù)據(jù)文件中。
2. 若還款方式采用等額本息還款法(即貸款期限內(nèi)每期以相等的額度償還貸款本息,貸款利息隨本金逐期遞減)。試求出每個月還款的本金、每個月的利息以及總利息分別是多少元。要求將輸出結(jié)果寫入到數(shù)據(jù)文件中。
第三篇:C語言程序設(shè)計
1.Problem A: Hello world!Description Xiao_ming有兩個哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放學(xué)回家,父母分別跟他們打招呼。
Input 無
Output 請輸出: Hello Da_min, Hello Er_min, Hello Xiao_ming!
Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!
HINT 請注意換行符
Append Code #include
printf(“Hello Da_min,n”);
printf(“Hello Er_min,n”);
printf(“Hello Xiao_ming!n”);} 2.Problem B: 求圓的面積和周長 Description 從鍵盤輸入圓的半徑,求圓的面積和周長,圓周率取3.14。
Input 輸入一個浮點型數(shù)據(jù),有效數(shù)字不會超過十進制的6位。
Output 輸出為兩行。
第一行為圓的面積,第二行為圓的周長,格式見sample。
Sample Input 3
Sample Output Area: 28.260000 Perimeter: 18.840000
HINT 了解浮點類型的輸入、輸出和算術(shù)運算符
Append Code 法一
#include
#include
double r;
scanf(“%d”,&r);
printf(“Area: %lfn”,pi*r*r);
printf(“Perimeter: %lfn”,2*pi*r);
}
3.Problem C:平均值 Description 求3個數(shù)的平均值。
Input 輸入只有一行,為3個較小的整數(shù)。
Output 輸出為這3個整數(shù)的平均值,保留3位小數(shù)。
Sample Input 1 2 3 Sample Output 2.000
HINT 注意除法運算對整型數(shù)據(jù)和浮點型數(shù)據(jù)是不一樣的。
Append Code #include
4.Problem D: 求字符的值 Description 從鍵盤輸入3個字符(不含雙字節(jié)字符),分別輸出每個字符的十進制值(ASCII碼)、八進制值和十六進制值。
Input 輸入為3個字符。
Output 輸出為3行。
每一行為每個字符(對應(yīng)輸入順序)的十進制、八進制和十六進制值,用空格分隔開。每個輸出的值占3個字符,不足3個字符前面補0。
Sample Input 0 A
Sample Output 048 060 030 032 040 020 065 101 041
HINT 了解字符值的存儲和整型的關(guān)系。
Append Code #include
5.Problem A: 最簡單的程序 Description 輸出一行“Hello world!”。
Input 無
Output Hello world!
Sample Input Sample Output Hello world!
HINT Append Code #include
printf(“Hello world!”);}
6.Problem B: 算術(shù)基本運算 Description 計算兩整數(shù)x和y(0 Input 輸入只有一行,格式見sample。 Output 輸出為多行,按順序每行輸出x,y的和、差、積、商、余數(shù)、x的平方和y的三次方,格式見sample Sample Input x = 11, y = 3 Sample Output x + y : 14 xy : %dn“,x-y); printf(”x * y : %dn“,x*y); printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y); printf(”x ^ 2 : %dn“,x*x); printf(”y ^ 3 : %dn“,y*y*y);} 7.Problem C: 自增自減運算 Description C語言中有自增運算++、自減運算--,并且可以前置和后置。 編寫一個程序:對輸入的一個整數(shù)a,輸出a++、a--、++a、--a的值。 Input 一個整數(shù)a,a是很小的整數(shù)。 Output 輸出為5行,第一行為a的值,后面依次為--a、a--、a++、++a的值。 5行輸出縱向a要對齊,“:”對齊,“:”前后各一個空格,后面的數(shù)值不用對齊。每行行尾都有回車。 Sample Input 0 Sample Output a : 0--a :-1 a--: 0 a++ : 0 ++a : 1 HINT Append Code #include : %dn“,a);printf(”--a : %dn“,--a);a=x;printf(” a--: %dn“,a--);a=x;printf(” a++ : %dn“,a++);a=x;printf(”++a : %dn“,++a);} 8.Problem F: 絕對值 Description 求整型數(shù)據(jù)和浮點型數(shù)據(jù)的絕對值。 Input 輸入兩個數(shù),第一個是整數(shù),第二個是浮點數(shù)。 Output 輸出為兩行,第一行為整數(shù)的絕對值,第二行為浮點數(shù)的絕對值,注意浮點數(shù)的絕對值不輸出無意義的0。 Sample Input-1 1 Sample Output 1 1 HINT 求絕對值可以用標準庫函數(shù)來完成,也可以自己判斷。注意浮點數(shù)的輸出格式。求絕對值的函數(shù)在哪個頭文件?貌似很多人會搞錯,包括很多編書的人! Append Code #include int n; float m; scanf(”%d%f“,&n,&m); //n=abs(n); //m=fabs(m); if(n<0) { n=-n; } if(m<0) { m=-m; } printf(”%dn“,n); printf(”%g“,m); return 0;} 9.Problem A: 奇數(shù)還是偶數(shù)? Description 輸入一個整數(shù),判讀它是奇數(shù)還是偶數(shù)。 Input 輸入只有一行,為一個100以內(nèi)的正整數(shù)。 Output 輸出為一行。 若輸入為偶數(shù)則輸出“even”,奇數(shù)輸出“odd”。Sample Input 30 Sample Output even HINT 用整數(shù)運算可以解決,練習(xí)“?:”表達式。 Append Code #include int n; scanf(”%d“,&n); if(n>=0&&n<=100){ if(n%2==0)printf(”evenn“); else printf(”oddn“); } return 0;} 10.Problem B: 簡單的打折計算 Description 商店規(guī)定:消費滿n元,可以打八八折。設(shè)某件商品標價m元,輸入購買的件數(shù)x,計算出需要支付的金額(單位:元),精確到分。 Input 輸入只有一行,三個整數(shù)m、n和x,且0 Sample Input 95 300 4 Sample Output 334.40 HINT 了解浮點型的輸出控制,注意整型和浮點型混合運算過程中的數(shù)據(jù)類型轉(zhuǎn)換。 Append Code #include int m,x,n,a; float b; scanf(”%d%d%d“,&m,&n,&x); 0 x m a=m*x; if(a>n) b=0.88*a; else b=a; printf(”%.2fn“,b); } 11.Problem C: 判斷閏年 Description 輸入一個正整數(shù)的年份,判斷是否為閏年。 Input 輸入只有一行,為一個10000以內(nèi)的正整數(shù)。 Output 輸出為一行。 若輸入為閏年偶數(shù)則輸出“Yes”,否則輸出“No”。 Sample Input 2010 Sample Output No HINT 了解邏輯運算符和關(guān)系運算符。 Append Code #include int x; scanf(”%d“,&x); if(x>0&&x<10000) { if(x%4==0&&x%100!=0) printf(”Yesn“); else if(x%400==0) printf(”Yesn“); else printf(”Non“); } else printf(”error“);} 12.Problem D: 水仙花數(shù) Description 如果一個三位十進制數(shù)等于其各位數(shù)字的立方和,則稱這個數(shù)為水仙花數(shù)。如:13+53+33=153。 Input 一個整數(shù)x,100<=x<=999。 Output x是水仙花數(shù),則輸出“YES”,否則為“NO”。 Sample Input 153 Sample Output YES HINT Append Code #include int a,b,c,x; scanf(”%d“,&x); a=x/100; b=x/10%10; c=x%10; if(x==a*a*a+b*b*b+c*c*c) printf(”Yes“); else printf(”No“);} 13.Problem E: 三個數(shù)比較大小 Description 從鍵盤上輸入0~100之間的三個數(shù),按從小到大的順序輸出。 Input 輸入只有一行,為三個整數(shù)。 Output 按從小到大輸出這三個數(shù)。 Sample Input 15 10 20 Sample Output 10 15 20 HINT 用if語句判斷各種情況可以解決這個問題。 Append Code #include int a,b,c; scanf(”%d%d%d“,&a,&b,&c); if(a>=b) { if(b>=c) printf(”%d %d %dn“,c,b,a); else if(c>=a) printf(”%d %d %dn“,b,a,c); else printf(”%d %d %dn“,b,c,a); } else { if(a>=c) printf(”%d %d %dn“,c,a,b); else if(b>=c) printf(”%d %d %dn“,a,c,b); else printf(”%d %d %dn“,a,b,c); } } 14.Problem F: 奇怪的求和之一 Description 給定3個正整數(shù)a、b和c,按照如下規(guī)則求和: 如果這個數(shù)字是偶數(shù),則累加到和中; 如果這個數(shù)字是奇數(shù),則將大于該數(shù)的最小偶數(shù)累加到和中。 Input 三個正整數(shù),均在100以內(nèi)。 Output 一個和。 Sample Input 2 3 5 Sample Output 12 HINT 如果不會使用分支語句,可使用條件運算符判斷到底將哪個數(shù)累積到和中。 Append Code #include int a,b,c; scanf(”%d%d%d“,&a,&b,&c); if(a%2!=0)a++; if(b%2!=0)b++; if(c%2!=0)c++; printf(”%dn“,a+b+c); } 15.Problem G: 你過線了嗎? Description 經(jīng)過四年的學(xué)習(xí),你決定報考我國著名的“285”高校之一的北青大學(xué),經(jīng)過認真的復(fù)習(xí),殘酷的考試,終于知曉了自己的考試成績,也知道了北青大學(xué)的錄取分數(shù)線,請你編程判斷,自己過線了嗎? Input 輸入有2行,第一行有4個正整數(shù),分別表示三門課程的分數(shù)線以及總分分數(shù)線。第二行有3個非負整數(shù),分別表示你考的三門課程的成績。 Output 如果你的三門課程成績都不低于相應(yīng)課程的分數(shù)線,且你的考試總分也不低于北青大學(xué)的總分分數(shù)線要求,則輸出“congratulations”,否則輸出“sorry”。 Sample Input 70 80 70 240 80 80 82 Sample Output congratulations HINT 如果你不會使用分支語句,同樣可以使用條件運算符實現(xiàn)該程序。 Append Code #include int a,b,c,d,e,f,g,h; scanf(”%d %d %d %dn%d %d %d“,&a,&b,&c,&d,&e,&f,&g); h=e+f+g; if(e>=a&&f>=b&&g>=c&&h>=d) printf(”congratulations“); else printf(”sorry“);} 16.Problem I: A+B Problem(II): Input/Output Practice Description 計算a+b,0<=a,b<1000。 Input 輸入的第一行是一個整數(shù)N,后面有N對整數(shù)a和b,每對a和b占一行,a,b用空格分開。 Output 每行輸出一個a+b的和,順序與輸入對應(yīng)。 Sample Input 2 1 2 10 20 Sample Output 3 30 HINT N給出了測試樣例數(shù),用for循環(huán)處理方便。 Append Code #include int n,a,b,i;Scanf(“%d”,&n);For(i=0;i 17.Problem H: A+B Problem Description 計算a+b,0<=a,b<1000。 Input 輸入有多對整數(shù)a和b組成,每對a和b占一行,a,b用空格分開。 Output 每行輸出一個a+b的值,順序與輸入對應(yīng)。 Sample Input 1 2 10 20 Sample Output 3 30 HINT OJ系統(tǒng)上測試輸入結(jié)束符為EOF(End Of File),其值為-1。用scanf()把文件所有內(nèi)容讀完后,會讀到EOF,所以可以用來判斷輸入是否完成,測試時可以用Ctrl+Z產(chǎn)生EOF。本題解法參看FAQ。Append Code #include int a,b; while(scanf(”%d%d“,&a,&b)!=EOF){ printf(”%dn“,a+b); } return 0;} 18.Problem A: 判斷是否是元音字母 Description 輸入一個英文字母,判斷是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U Input 輸入一個英文字母 Output 是元音字母,輸出“yes”,否則輸出“no”,行尾沒有回車。 Sample Input A Sample Output yes HINT Append Code #include char ch; scanf(”%c“,&ch); if(ch>='A'&&ch<='Z') ch=ch+32; if(ch=='a') printf(”yes“); else if(ch=='e') printf(”yes“); else if(ch=='i') printf(”yes“); else if(ch=='o') printf(”yes“); else if(ch=='u') printf(”yes“); else printf(”no“); } 19.Problem B: 按順序輸出三個數(shù) Description 對于輸入的3個整數(shù),按照從小到大的順序輸出。 Input 輸入3個int類型內(nèi)的整數(shù),兩兩之間用一個空格隔開。 Output 按照從小到大的順序輸出上述三個數(shù),兩兩之間用一個空格隔開。 Sample Input 2 1 3 Sample Output 1 2 3 HINT Append Code #include int a,b,c,temp; scanf(”%d%d%d“,&a,&b,&c); if(a { temp=a; a=b; b=temp; } if(a { temp=a; a=c; c=temp; } if(b { temp=b; b=c; c=temp; } printf(”%d %d %dn“,c,b,a);} 20.Problem E: Description 判斷輸入整數(shù)的奇偶性。 判斷奇偶數(shù) Input 輸入為一個整數(shù)。 Output 輸出只有一行,代表判斷結(jié)果。如果輸入的整數(shù)n是一個偶數(shù),輸出: n is an even number.否則輸出: n is an odd number.見樣例。 Sample Input 12 Sample Output 12 is an even number.HINT Append Code #include int a; scanf(”%d“,&a); if(a%2==0) printf(”%d is an even number.“,a); else printf(”%d is an odd number.“,a);} 21.Problem A: 判斷兩個整數(shù)的大小關(guān)系 Description 輸入2個整數(shù)a和b,如果a>b,則輸出1,否則輸出0。 Input 兩個整數(shù)a和b,均不超過int類型的表示范圍。 Output 表示a>b的結(jié)果:如果a>b,則輸出1,否則輸出0。 Sample Input 3 4 Sample Output 0 HINT Append Code #include printf(”1“); else printf(”0“);return 0;} 22.Problem D: 成績的等級 Description 把百分制的考試成績轉(zhuǎn)換成五級制的成績: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing 不在0~100之間的輸入是非法數(shù)據(jù),輸出“Error”。 Input 輸入多行,每行一個整數(shù)。 Output 輸入所對應(yīng)的成績等級。 Sample Input-1 81 92 35 68 72 100 Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch語句解決這個問題比較方便。 Append Code #include int score; while(scanf(”%d“,&score)!=EOF) { if(score<0||score>100) printf(”Errorn“); else { switch(score/10) { case 0: case 1: case 2: case 3: case 4: case 5:printf(”Failingn“);break; case 6:printf(”Passn“);break; case 7:printf(”Averagen“);break; case 8:printf(”Goodn“);break; case 9: case 10:printf(”Excellentn“);break; } } } return 0;} 23.Problem E: 輸出是m的倍數(shù)或n的倍數(shù)、但不是 m和n的公倍數(shù)的數(shù) Description 輸出1~k之間是m的倍數(shù)或n的倍數(shù)、但不是m和n的公倍數(shù)的數(shù),其中1<=m,n Input 輸入三個整數(shù),依次為k、m、n。 Output 從小到大輸出符合題意的所有整數(shù),兩數(shù)之間用一個空格分開。 Sample Input 15 2 3 Sample Output 2 3 4 8 9 10 14 15 HINT 難點在于輸出格式的控制:空格在數(shù)的中間,學(xué)會用循環(huán)時邊界情況的特殊處理。 Append Code #include a=m;else a=n;printf(”%d“,a);for(i=a+1;i<=k;i++){ } if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0)) printf(” %d“,i);} return 0; 24.Problem B: 兩整數(shù)相加減 Description 計算a+b和a-b。 Input 輸入為一對整數(shù)a和b。a,b用空格分開。 Output 輸出a+b和a-b的計算結(jié)果,各占一行。 Sample Input 1 2 Sample Output 3-1 HINT Append Code #include printf(”%dn“,a+b); printf(”%dn“,a-b);} 25 Problem C: 它滿足條件嗎? Description 需要判斷給定的一個整數(shù)是否同時滿足如下三個條件: 1.它是一個完全平方數(shù)。2.它是一個偶數(shù)。3.它是一個正數(shù)。 注:若一個數(shù)能表示成某個自然數(shù)的平方的形式,則稱這個數(shù)為完全平方數(shù)。例如: 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一個int范圍內(nèi)的整數(shù)。 Output 如果輸入的數(shù)字滿足條件,則輸出yes,否則輸出no。 Sample Input 100 Sample Output yes HINT 注意邏輯表達式判斷三個條件的順序。如果你不會使用分支語句,同樣可以使用條件運算符實現(xiàn)該程序。 庫函數(shù)sqrt()可以用于求一個數(shù)的平方根。 Append Code #include if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0) printf(”yes“); else printf(”no“);} 26.Problem F: 多路分支 Description 編寫一個完整的程序,運行時向用戶提問”你考試考了多少分?(0-100)“接受輸入后判斷其等級并顯示出來等級: 優(yōu):90<=分數(shù)<=100 良:80<=分數(shù)<90 中:60<=分數(shù)<80 差:0<=分數(shù)<60 Input 輸入任意一個整數(shù)分數(shù)值,顯示等級;再輸入任意一個整數(shù)分數(shù)值,顯示等級;....直到測試數(shù)據(jù)較充分,可輸入-1止。 Output 對任意輸入的分數(shù)值,輸出對應(yīng)的等級,直到輸入的數(shù)為-1時才退出運行.Sample Input 102 100 90 80 70 60 50 0-80-1 Sample Output grad must between 0 and 100 優(yōu) 優(yōu) 良 中 中 差 差 grad must between 0 and 100 grad must between 0 and 100 HINT Append Code #include int x; while(scanf(”%d“,&x)!=EOF) { if(x<0||x>100) printf(”grad must between 0 and 100n“); else if(x>=90) printf(”優(yōu)n“); else if(x>=80) printf(”良n“); else if(x>=60) printf(”中n“); else if(x>=0) printf(”差n“); } return 0;} Problem D: 有多少人? Description 學(xué)校舉行運動會,如果全體學(xué)生按照3人一隊列隊,則多了1個人;如果按照4人一隊列隊,則多了2個人;如果按照5人一隊排隊,則多了3個人。請問這個學(xué)校有多少學(xué)生? Input 一個int類型的正整數(shù)N,是學(xué)生人數(shù)的上界,即:該校學(xué)生數(shù)不超過N。 Output 所有可能的學(xué)生數(shù),每個數(shù)占一行。 Sample Input 200 Sample Output 58 118 178 HINT Append Code #include int n,i; scanf(”%d“,&n); for(i==1;i<=n;i++){ if(i%3==1&&i%4==2&&i%5==3) printf(”%dn“,i);} return 0;} Problem C: 正負數(shù)各有幾個? Description 輸入若干個整數(shù),求其中正數(shù)、負數(shù)的個數(shù)。 Input 輸入分為2行:第一行是一個數(shù)字N>0,表示下面有N個整數(shù)。第2行是N個整數(shù),都是int類型的。 Output 輸出所輸入的N個整數(shù)的正數(shù)個數(shù)和負數(shù)個數(shù),并用空格分開2個輸出。Sample Input 10 2 3 4 5-1-2-3-4-5 Sample Output 5 5 HINT 貌似還有一種叫做0的數(shù)。 Append Code #include int n,a,i,num1=0,num2=0; scanf(”%d“,&n);for(i=0;i { scanf(”%d“,&a); if(a>0) num1++; else if(a<0) num2++; } printf(”%d %dn“,num1,num2); return 0;} Problem A: A+B Problem(III): Input/Output Practice Description 計算a+b,0<=a,b<1000。 Input 輸入有多對整數(shù)a和b組成,每對a和b占一行,a,b用空格分開。當測試樣為0 0時表示輸入結(jié)束,0 0不參與運算。 Output 每行輸出一個a+b的值,順序與輸入對應(yīng)。 Sample Input 1 2 10 20 0 0 Sample Output 3 30 HINT 練習(xí)break的使用。 Append Code #include { if(a!=0||b!=0) } printf(”%dn“,a+b); else break; return 0;} 30 Problem B: A+B Problem(IV): Input/Output Practice Description 計算a+b,0<=a,b<1000。 Input 輸入有多對整數(shù)a和b組成,每對a和b占一行,a,b用空格分開。 Output 每行輸出一個a+b的值,順序與輸入對應(yīng)。每個格式樣例之間用一個空行分隔開。 Sample Input 1 2 10 20 15 35 Sample Output 3 30 50 HINT 由于輸出的和比空行多一個,所以全部計算放在一個循環(huán)里是不行的,必須要特殊處理開頭或者結(jié)尾。 Append Code #include n++; if(n==1) printf(”%dn“,a+b); else printf(”n%dn“,a+b); } return 0;} Problem C: n個數(shù)的最大值和最小值 Description 找出n個數(shù)中最大的數(shù)和最小的數(shù),并將它們的值輸出出來。 Input 輸入為n+1個整數(shù),都在int類型范圍內(nèi)。這些數(shù)可能用若干空格或者換行符分隔開。輸入的第1個數(shù)為n,表示后續(xù)有n個數(shù)輸入。從輸入的第2個數(shù)開始,求出直到第n+1個數(shù)中最大的數(shù)和最小的數(shù)。 Output 輸出為兩行,格式見sample。 Sample Input 3 0 1-1 Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格還是回車都是空白符,對scanf(”%d“)來說沒有區(qū)別;先讀入n,然后用for循環(huán)就很容易控制讀入n個數(shù)的過程。 Append Code #include int n,i,max,min; scanf(”%d“,&n); int a[n]; for(i=0;i scanf(”%d“,&a[i]); max=a[0]; min=a[0]; for(i=0;i { if(max max=a[i]; if(min>a[i]) min=a[i]; } printf(”The maximum number is %d.n“,max); printf(”The minimum number is %d.“,min); return 0;} 32.Problem D: 求100以內(nèi)的素數(shù) Description 素數(shù)是只能被1和自身整除的正整數(shù),根據(jù)數(shù)學(xué)定義1不是素數(shù)。素數(shù)也叫質(zhì)數(shù)。 Input 輸入為兩個整數(shù)m和n,滿足0<=m<=n<=100。 Output 從大到小輸出m~n之間的所有素數(shù),一個素數(shù)一行。如果m~n之間沒有素數(shù),則不輸出任何數(shù)。 輸出的所有數(shù)在兩行“=====”之間。 Sample Input 2 12 Sample Output ===== 11 7 5 3 2 ===== HINT 利用素數(shù)的數(shù)學(xué)規(guī)律可以很容易的解出此題,題目給出的數(shù)據(jù)范圍是關(guān)鍵。 Append Code #include t=0; for(j=2;j<=sqrt(i);j++) if(i%j==0) t=1; if(t==0&&i>1) printf(”%dn“,i);} printf(”=====“);return 0;} 33.Problem E: 是否構(gòu)成三角形? Description 給出三個整數(shù),代表三條邊的長度,判斷這三條邊的長度是否能構(gòu)成一個三角形? Input 第一行是n(1<=n<=100),表示有n組測試數(shù)據(jù) 接下來有n行,每一行包含三個整數(shù),表示三個邊長(1<=邊長<=100) Output 如果三條邊能構(gòu)成三角形,輸出YES,否則輸出NO Sample Input 3 1 2 3 2 8 7 20 20 1 Sample Output NO YES YES HINT Append Code #include {scanf(”%d%d%d“,&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) printf(”YESn“);else printf(”NOn“);} return 0;} 34.Problem C: 簡單的整數(shù)排序 Description 對給出的若干整數(shù)按從小到大排序。 Input 輸入的第一個數(shù)為n(n<=1000),后接n個整數(shù)。 Output 按從小到大的順序輸出這些整數(shù),每兩個整數(shù)之間用一個空格分隔開,最后一個整數(shù)后面沒有空格。 Sample Input 10 3 9 1 5 2 8 5 6 7 3 Sample Output 1 2 3 3 5 5 6 7 8 9 HINT 排序前必須把所有的整數(shù)都存儲下來。因為只有最多1000個數(shù),1秒的時間足夠任何排序算法運行處結(jié)果來。 Append Code #include int c,i,n,j; int a[1000]; scanf(”%d“,&n); for(i=0;i scanf(”%d“,&a[i]); for(i=1;i<=n-1;i++) { for(j=0;j { if(a[j]>a[j+1]) { c=a[j]; a[j]=a[j+1]; a[j+1]=c; } } } printf(”%d“,a[0]); for(i=1;i printf(” %d“,a[i]); return 0;} 35.Problem A: Description 購物的路程 Saya和Kudo一起去購物。假定她們逛的街是一條直線,而商鋪是這條直線上的一些點。她們將車停在該直線最左端的店鋪處,然后從左向右開始逛每一個店鋪,然后從最右邊的店鋪再返回到停車處。你的任務(wù)是計算她們走了多少路。 Input 輸入有多組。每一組的第一行是N(0 Output 對每組輸入,輸出她們走的路長。 Sample Input 4 13 89 37 6 7 30 41 14 39 42 0 Sample Output 152 70 HINT Append Code #include int n,i,max,min,a[100001]; while(scanf(”%d“,&n)&&n!=0) { scanf(”%d“,&a[0]); min=max=a[0]; for(i=1;i { scanf(”%d“,&a[i]); if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf(”%dn“,(max-min)*2); } return 0;} 36.Problem B: 求累加和 Description 編程求min~max的累加和(含min和max),其中max>=min>0。部分程序已經(jīng)給出,請?zhí)畛淦渲械目瞻渍Z句,并提交填充后的完整程序。 Input 輸入為多行。第一行是一個整數(shù)N>0,表示后面有N個測試用例。后面有N行,每行包含2個整數(shù),分別是min和max。 Output 輸出為N行,每個測試用例的計算結(jié)果占據(jù)一行。每行的格式為: case i:sum=s.其中i表示測試用例的編號(從1開始),s是該測試用例對應(yīng)的累加和(設(shè)不超過int的表示范圍)。 Sample Input 3 1 10 1 100 1 1 Sample Output case 1:sum=55.case 2:sum=5050.case 3:sum=1.HINT Append Code #include int n,i,j,max,min,sum; scanf(”%d“,&n); for(i=0;i { sum=0; scanf(”%d%d“,&min,&max); if(max==min) printf(”case %d:sum=%d.n“,i+1,min); else { for(j=min;j<=max;j++) sum=sum+j; printf(”case %d:sum=%d.n“,i+1,sum); } } return 0;} 37.Problem G: 順序輸出字母 Description 按字母順序輸出兩個字母st和ed之間的所有字母,但不包括st和ed。不輸出逆序。 Input 兩個字母st和ed,都是大寫字母,用一個空格分開。 Output 在一行內(nèi)按順序輸出st和ed之間的所有字母,但不包括st和ed。例如: 輸入為A和E,則輸出為BCD; 輸入為A和B,則什么字母也不輸出,只有一個空行; 輸入為E和A,也是什么字母也不輸出,只有一個空行。最后要輸出一行(行尾不回車): ***END*** Sample Input A C Sample Output B ***END*** HINT Append Code #include char st,ed,a; int i; scanf(”%c%c%c“,&st,&a,&ed); { for(i=st+1;i printf(”%c“,i); printf(”n***END***“); } return 0;} 38.Problem F: 單字母變換 Description Tom和Jack是密碼學(xué)愛好者,他們在聊天時經(jīng)常使用一些暗語。他們使用的一種最簡單的暗語是:將要說的每句話里面的英文字母變成這個字母之后的某個字母?,F(xiàn)在要求你寫一個程序,將一個字母變成它之后的某個字母。 Input 輸入有2個:一個大寫字母c和一個正整數(shù)d(0 Output 輸出字母c之后的第d個字母。大小寫與c一致。如果c之后的某個字母已經(jīng)超出'Z',則再從字母'A'開始計數(shù)。 如:c='A',d=3,則輸出應(yīng)為:D。若:c='Y',d=3,則輸出應(yīng)為:B。 Sample Input A 3 Sample Output D HINT Append Code #include char c; int d; scanf(”%c%d“,&c,&d); if(c+d<='Z') printf(”%c“,c+d); else printf(”%c“,c+d-26); return 0;} 39.Problem B: 登錄密碼驗證 Description 編寫一個程序,模擬用戶登錄系統(tǒng)的密碼驗證過程。系統(tǒng)提供給用戶的密碼長度最長為20個字符,若密碼輸入錯誤可以再次輸入。但為了保證用戶密碼安全,若連續(xù)輸入密碼錯誤超過5次就會鎖定賬號一段時間。 Input 輸入為若干個串,至EOF結(jié)束。輸入的第一個串是用戶的正確密碼,后面的串為模擬用戶登錄時的輸入的密碼。 Output 每次輸入錯誤的密碼,輸出一個“Wrong!”,若輸入的密碼為正確的,輸出一個“Welcome!”,并結(jié)束密碼測試。若前5次輸入的密碼都是錯誤的,則后面的輸入中不管是否有正確的密碼都輸出“Out of limited!”。 Sample Input abcdefg 123456 kkkkkkkk abcdefg Sample Output Wrong!Wrong!Welcome! HINT 輸入可以用scanf(”%s“)處理,密碼比較用字符串的比較可以完成。 Append Code #include char a[20],b[20]; int i,j=1; scanf(”%s“,a); while(scanf(”%s“,b)!=EOF) { if(j<=5) { if((strcmp(a,b)==0)) { printf(”Welcome!n“); break; } else printf(”Wrong!n“); j++; } else printf(”O(jiān)ut of limited!n"); } } 40.Problem C: 兔子的繁殖問題 Description 假設(shè)一對兔子每月能生一對小兔(一雌一雄),每對小兔出生后的下一個月是沒有繁殖能力的,至出生后的第三個月開始又可以每月生一隊小兔,問從一對剛出生的小兔開始,經(jīng)過若干個月后一共有多少兔子(假設(shè)在此過程中兔子沒有死亡)? 這個問題是意大利數(shù)學(xué)家菲波那契(Fibonacci)在他1202年出版的《算盤全書》中提出來的,從第一對剛出生的小兔開始每月的兔子數(shù)被乘坐菲波那契序列。 Input 輸入的第一個數(shù)為n,接下來有n個數(shù)字。每個數(shù)字為一個月份m(m<=45)。 Output 輸出為n行,每行為第m個月后的兔子總數(shù)。 《C 語言程序設(shè)計》主要在計算機軟件、計算機網(wǎng)絡(luò)、計算機應(yīng)用、通信技術(shù)、智能電子、電子信息工程、多媒體以及核工程與核技術(shù)等專業(yè)中開設(shè),是電子信息類、機械類等工科專業(yè)的重要專業(yè)基礎(chǔ)課。 本校從2001至今,每年都開設(shè)《C語言程序設(shè)計》課程,由于,我校最開始時的特殊情況,主要把重點放在C語言中的各類重點、難點的語法、語義上,使得學(xué)生經(jīng)過比較復(fù)雜和痛苦的過程后,對C語言在使用上很難做到自己編寫程序。而且很多學(xué)生產(chǎn)生了畏懼心理。 2004年,學(xué)院成立計算機科學(xué)與技術(shù)系,為了更好學(xué)習(xí)和掌握C語言,計算機科學(xué)與技術(shù)專業(yè)和計算機維護專業(yè)(計算機應(yīng)用技術(shù)前身)除了開設(shè)《C語言程序設(shè)計》課程外,在后續(xù)一學(xué)期還開設(shè)了《C語言程序設(shè)計課程設(shè)計》,使得計算機專業(yè)學(xué)生編程思想和能力得到了極大提高。 2005年,為了讓我院工科學(xué)生更好的掌握C語言編程以及通過四川省計算機二級考試,在《C語言程序設(shè)計》課程后設(shè)置《C語言程序設(shè)計課程設(shè)計》,極大地提高了學(xué)生的動手機會和能力,過級率顯著提高! 2007年,依托我校建設(shè)精品課程的契機,我們將C語言中的各個知識點進行重新規(guī)整,提出適用于三本院校學(xué)生的語言設(shè)計學(xué)習(xí)的方法。我們提出,先了解C語言,再學(xué)習(xí)C語言,再用C語言的思想。即在開始時讓學(xué)生初步知道C語言,然后引入比較簡單的運算符以及基本輸入、輸出和簡單的順序結(jié)構(gòu)程序設(shè)計。通過這樣的方式,我們發(fā)現(xiàn),學(xué)生在C語言的學(xué)習(xí)就不會從開始的時候陷入大量難懂的語法、語義和數(shù)據(jù)結(jié)構(gòu)中。有了以上鋪墊再層層進入,最終進入復(fù)雜的各類數(shù)據(jù)結(jié)構(gòu)以及指針等學(xué)習(xí)。通過以上的內(nèi)容規(guī)整后,教學(xué)效果有明顯提高。 《C語言程序設(shè)計》教學(xué)的幾點體會 江西司法警官職業(yè)學(xué)院歐陽群 摘要:隨著科學(xué)技術(shù)的發(fā)展,計算機已普及到各行各業(yè),深入到各級層次,越來越多高校把《C 語言程序設(shè)計》作為使用學(xué)習(xí)編程的入門語言,《C語言程序設(shè)計》課程已成為當近計算機教育的一門必修基礎(chǔ)課。因而,搞好該門課程的教學(xué)具有非常重要而深遠的意義。 關(guān)鍵字:C 語言程序設(shè)計 教學(xué) 算法引言 學(xué)習(xí)計算機程序設(shè)計語言是提高人們計算機知識水平的關(guān)鍵步驟。C語言作為當今最流行的程序設(shè)計語言之一,不但成為計算機專業(yè)的必修課。而且也越來越多的成為非計算機專業(yè)的學(xué)習(xí)課程。C語言簡潔,緊湊使用起來方便,靈活,運算符和數(shù)據(jù)結(jié)構(gòu)豐富,可移植性好,硬件控制能力高,表達和運算能力強。其運算速度也優(yōu)于C++。但同時,C語言又是一門學(xué)習(xí)起來難度較大的語言,同學(xué)們反映,學(xué)習(xí)過程中經(jīng)常會出現(xiàn)一些問題,對語句沒有直觀的理解,而是死記硬背,缺乏對一些算法的清楚認識以及缺少對運算符等語法方面的理解,造成編寫程序時無法理清楚解題思路,無從入手,在程序調(diào)試的過程中不認真分析出錯原因,面對枯燥的程序題,便失去了積極性。鑒于上面一些問題,下面筆者從激發(fā)學(xué)生的學(xué)習(xí)興趣、培養(yǎng)學(xué)生對方法的理解、如何讓學(xué)生 處理好語法與算法的關(guān)系、加強實踐操作等幾方面談?wù)勎业慕虒W(xué)體會: 2、在教學(xué)過程中要激發(fā)學(xué)生的學(xué)習(xí)興趣 有句話說的好“興趣與愛好是最好的老師”。為了使學(xué)生能盡快地掌握計算機知識,進入計算機的應(yīng)用領(lǐng)域,在課程講授過程中,要特別注意培養(yǎng)學(xué)生的學(xué)習(xí)興趣。很多學(xué)生和我說過,他們學(xué)習(xí)計算機就是從玩游戲開始的。學(xué)生們剛接觸計算機時都會感到新奇、好玩。這還不能說是興趣,只是一種好奇。隨著課程的不斷深入,概念、語法規(guī)則、算法等知識的學(xué)習(xí)加大學(xué)習(xí)難度,使一部分(甚至是大部分)學(xué)生對課程學(xué)習(xí)產(chǎn)生厭倦情趣。為了把學(xué)生對計算機程序設(shè)計初期產(chǎn)生的好奇心轉(zhuǎn)變?yōu)閷W(xué)習(xí)興趣,授課時我們可以把對定義和規(guī)則的講解與具體問題結(jié)合起來,努力把枯燥無味的“語言”講的生動、活潑。在第一節(jié)課上,我們可以給同學(xué)展示一些已經(jīng)做好的程序,讓同學(xué)們對C能做出些什么程序有一定的了解,并把C和學(xué)生曾經(jīng)學(xué)過的其他課程聯(lián)系起來。例如數(shù)學(xué)中的很多問題,是C語言初期學(xué)習(xí)算法時比較好的引例。在課程的進行中,引導(dǎo)學(xué)生學(xué)一種算法,就嘗試在同行課程中應(yīng)用。我們還可以經(jīng)常介紹一些趣味性算例,如: “菲波納契兔子問題”、“水仙花數(shù)”、“競賽記分”等,培養(yǎng)學(xué)生的學(xué)習(xí)興趣,讓大家積極主動、自覺獨立地獲取知識,打好學(xué)習(xí)程序設(shè)計語言的基礎(chǔ)。整個教學(xué)過程中應(yīng)該把解題思路、方法和步驟(即“算法”)當作授課的重點,從而讓學(xué)生明白如何分析并解決實際問題,逐漸培養(yǎng)學(xué)生進行程序設(shè)計的正確思維模式。 2、在教學(xué)過程中要加強學(xué)生對程序的理解 對于一門藝術(shù)性的語言,它的價值便是它的實用性和美感。眾所周知,英語的美感在于它的發(fā)音、而漢語則在于它的象形,它們給人的一種直觀感覺就是美。C語言作為一門計算機語言,它的美又在哪里呢?那便是它的可持續(xù)性,正確性與實用性,也就是說一個程序我們一眼看上去就能理解它想表達的是什么,所以在教學(xué)過程,如何讓學(xué)生理解好程序,成了入門最重要的一步,例如:我們在學(xué)習(xí)兩個數(shù)交換時: main() {int a=1,b=2.c; c=a; a=b; b=c;} 如果只是看c=a,a=b,b=c是相當難理解的,但是,若是加以聯(lián)想,我有兩杯水,要將杯中的水相互交換,便要引入一個空杯了,而這個空杯子正是C,這樣問題被輕而易舉地理解了,又如,我們在學(xué)習(xí)排序方法時,由于算法理解起來比較復(fù)雜,此時我們要聯(lián)系生活中的例子,以上體育課中排 隊為例按個子高低從小到大排列,并結(jié)合程序考慮該如何移動位臵。通過與生活實際相結(jié)合,理解相對枯燥難懂的程序算法,放棄傳統(tǒng)的死記硬背的方法,無疑可以使原本吃力的學(xué)習(xí)得到一定的緩解。 3、在教學(xué)過程中要讓學(xué)生正確處理語法與算法的關(guān)系。教學(xué)中對程序課程教學(xué)的一項基本目的是要讓學(xué)生掌握設(shè)計程序的思路并對待處理實現(xiàn)的任務(wù)能用計算機語言編寫出程序。要讓學(xué)生完成程序,如何處理算法與語法之間的關(guān)系顯得猶為重要。算法是程序的核心與靈魂,是程序精華的體現(xiàn),語法僅僅是一種程序工具,我們在教學(xué)過程中不應(yīng)把重點放在語法規(guī)則的教學(xué)上,語法是重要,不掌握語法規(guī)則就無法編寫出正確的程序,但是只學(xué)會語法,甚至能把語法背得滾瓜爛熟,也不可能編寫好程序。我們應(yīng)該把重點放在解題思路上,即算法的講解及算法優(yōu)化上,對于一個經(jīng)典的算法,需要通過大量的例題進行學(xué)習(xí)。在學(xué)習(xí)開始時沒必要在語法細節(jié)上死背死摳,畢竟讓學(xué)生能編出程序才是最重要。一些語法細節(jié)是需要通過長期實踐才能掌握的。在學(xué)生對算法能夠較好理解后,再層層深入,讓學(xué)生去加強對語法的理解。 4、在教學(xué)過程中要突出實踐操作的重要性 程序設(shè)計課程實踐性很強,同學(xué)在學(xué)習(xí)過程中只聽不練根本達不到預(yù)期的學(xué)習(xí)效課,每次上機前,都要根據(jù)教學(xué)計 劃布臵與理論教學(xué)配套的實踐作業(yè),讓學(xué)生明確上機任務(wù),編寫好上機調(diào)試的程序,使學(xué)生在每次上機實習(xí)中有收獲,加強對理論的理解。我們可以在機房中設(shè)立教師機,讓學(xué)生在教師機上建立以學(xué)號和姓名為文件名的文件夾,以后每節(jié)課作業(yè)都存入其中,課程結(jié)束后按作業(yè)的多少、優(yōu)劣來評定實習(xí)成績。針對程序設(shè)計中的一些操作難點,可以讓學(xué)生分組討論并集中演示,這可以起到事半功倍的效果。課程結(jié)束前我們把教師機中學(xué)生作業(yè)完成情況及所學(xué)的內(nèi)容作一個分析,并進行有針對性的講解,前后聯(lián)系起來,使學(xué)生對課程內(nèi)容能夠融匯貫通。我們要讓學(xué)生用積極的思維解決出現(xiàn)問題,程序報錯不能運行時,認真檢查核對語法錯誤;程序能運行卻得不到正確的結(jié)果時,認真檢查核對算法的疏漏,使學(xué)生知道可能往往程序中一個小小標點或者字母的失誤,都可能導(dǎo)致整個程序出現(xiàn)問題。 5、結(jié)束語 在對學(xué)生進行C語言教學(xué)時,除了采取以上措施外,筆者認為由于該課程涉及內(nèi)容太多,在學(xué)時較少的情況下,可以對一些應(yīng)用性教差及教難的問題適當帶過,如果,過分強調(diào)那些難點問題,必然影響學(xué)生對基本知識的理解,并且也會加大學(xué)生學(xué)習(xí)負擔。學(xué)生掌握好程序設(shè)計中最基本、最常用的部分后已經(jīng)可以解決大多數(shù)的問題。在學(xué)生熟練地掌握了基本知識后再去學(xué)習(xí)較難的部分也會使難點問題簡單很 多?!笆谥~、不如授之以漁”,在教學(xué)中除了要加強學(xué)生對知識的理論學(xué)習(xí)外,最重要的是培養(yǎng)學(xué)生從計算機的角度去考慮如何解決問題、培養(yǎng)學(xué)生良好的思維習(xí)慣。 參考文獻 [1]譚浩強.C語言程序設(shè)計.清華大學(xué)出版社, 2002 [2] 石愛容, C語言程序設(shè)計課程教學(xué)探析.警官教育論壇,2006年第2期 [3] 吳麗麗.論職業(yè)技術(shù)教育中《C語言程序設(shè)計》的教學(xué).科技信息(學(xué)術(shù)版).2006第9期 [4] 張海玉.C語言程序設(shè)計教學(xué)方法探析.山西財政稅務(wù)??茖W(xué)校學(xué)報.2006年 第8卷 第1期 [5] 孫鋒.C 語言程序設(shè)計教學(xué)的幾點體會.教育與培訓(xùn).2006 第7期 作者簡介: 歐陽群, 女, 江西司法警官職業(yè)學(xué)院司法信息系,助理講師第四篇:C 語言程序設(shè)計
第五篇:《C語言程序設(shè)計》教學(xué)的幾點體會