第一篇:C語(yǔ)言程序設(shè)計(jì)教學(xué)中的問(wèn)題及改革建議
C語(yǔ)言程序設(shè)計(jì)教學(xué)中的問(wèn)題及改革建議
摘 要:對(duì)于計(jì)算機(jī)專業(yè)學(xué)科而言,C語(yǔ)言程序設(shè)計(jì)作為該專業(yè)中的一門(mén)基礎(chǔ)課程,在實(shí)際教學(xué)的過(guò)程中,需要強(qiáng)化對(duì)實(shí)踐教學(xué)內(nèi)容的重視程度,以確保將理論與實(shí)踐教學(xué)進(jìn)行有機(jī)融合,在提高教學(xué)質(zhì)量的同時(shí),實(shí)現(xiàn)對(duì)學(xué)生專業(yè)實(shí)踐能夠的培養(yǎng)。而在實(shí)際開(kāi)展教學(xué)活動(dòng)的過(guò)程中,如何結(jié)合現(xiàn)有教學(xué)中所存在的問(wèn)題進(jìn)行完善解決,以達(dá)成教學(xué)目標(biāo),亟待解決。本文在分析當(dāng)前C語(yǔ)言程序設(shè)計(jì)教學(xué)中所存在問(wèn)題的基礎(chǔ)上,為如何實(shí)現(xiàn)該課程教學(xué)的高效開(kāi)展提出了對(duì)策。
關(guān)鍵詞:C語(yǔ)言程序設(shè)計(jì);教學(xué);問(wèn)題;改革;對(duì)策
前言
基于當(dāng)前社會(huì)對(duì)人才所提出的高要求下,對(duì)于計(jì)算機(jī)教育專業(yè)而言,在實(shí)際踐行教學(xué)活動(dòng)的過(guò)程中,要想確保實(shí)現(xiàn)復(fù)合型技術(shù)IT人才的有效培養(yǎng),則就需要積極的更新教學(xué)理念,創(chuàng)新教學(xué)方法并提高對(duì)實(shí)踐課程的重視程度。針對(duì)C語(yǔ)言程序設(shè)計(jì)專業(yè)學(xué)科教學(xué)活動(dòng)的開(kāi)展而言,基于當(dāng)前在實(shí)際教學(xué)中所呈現(xiàn)出的一系列問(wèn)題,就需要在明確教學(xué)目標(biāo)的基礎(chǔ)上,通過(guò)理論與實(shí)踐教學(xué)的有機(jī)融合來(lái)實(shí)現(xiàn)對(duì)學(xué)生綜合能力素質(zhì)的有效培養(yǎng)。
一、當(dāng)前C語(yǔ)言程序設(shè)計(jì)教學(xué)中所呈現(xiàn)出的問(wèn)題
(一)教學(xué)理念滯后,教學(xué)模式陳舊
當(dāng)前,在實(shí)際開(kāi)展該學(xué)科教學(xué)活動(dòng)的過(guò)程中,教師的教學(xué)理念滯后,依舊以傳統(tǒng)灌輸填鴨式教學(xué)模式來(lái)實(shí)現(xiàn)理論教學(xué)內(nèi)容的傳授,在此過(guò)程中,以教師為教學(xué)主體的教學(xué)形式下,學(xué)生長(zhǎng)期處于被動(dòng)地位,學(xué)習(xí)的興趣與積極性不高。同時(shí),師生間的溝通交流頻率低,教師在進(jìn)行教學(xué)的過(guò)程中強(qiáng)調(diào)計(jì)算機(jī)等級(jí)考試的重要性,忽略了對(duì)學(xué)生計(jì)算機(jī)素養(yǎng)的培養(yǎng)。基于此,整體上該專業(yè)學(xué)科教學(xué)的效率與質(zhì)量明顯偏低,難以有效達(dá)成相應(yīng)的教學(xué)目標(biāo)。
(二)學(xué)生現(xiàn)有基礎(chǔ)參差不齊,教學(xué)缺乏針對(duì)性
隨著國(guó)內(nèi)教育事業(yè)的不斷發(fā)展,各級(jí)院校都在逐漸擴(kuò)招,因此,這就在某種程度上導(dǎo)致學(xué)生本身的能力素質(zhì)水平層次不齊,加上對(duì)于該專業(yè)的學(xué)生而言,在初高中階段對(duì)計(jì)算機(jī)專業(yè)知識(shí)內(nèi)容接觸的較淺,所以本身能力素質(zhì)水平有限。而C語(yǔ)言程序設(shè)計(jì)的專業(yè)性較強(qiáng),且又是該專業(yè)的入門(mén)基礎(chǔ)學(xué)科,在實(shí)際教學(xué)的過(guò)程中,由于尚未實(shí)現(xiàn)因材施教,缺乏針對(duì)性教學(xué),致使教學(xué)進(jìn)度緩慢,教學(xué)質(zhì)量嚴(yán)重偏低。
(三)尚未實(shí)現(xiàn)理論與實(shí)踐教學(xué)的有機(jī)融合
在實(shí)際教學(xué)的過(guò)程中,計(jì)算機(jī)學(xué)科本身就具備了較強(qiáng)的實(shí)踐性,要求要確保學(xué)生具備扎實(shí)理論知識(shí)基礎(chǔ)的同時(shí),具備相應(yīng)的實(shí)踐應(yīng)用能力,而在實(shí)際教學(xué)的過(guò)程中,理論與實(shí)踐教學(xué)尚未實(shí)現(xiàn)有機(jī)結(jié)合,相分離的教學(xué)形式下,學(xué)生難以在實(shí)踐中鞏固理論知識(shí),同時(shí)缺乏實(shí)踐的支撐,無(wú)法實(shí)現(xiàn)對(duì)學(xué)生相應(yīng)應(yīng)用能力的有效培養(yǎng)。缺乏相應(yīng)實(shí)踐環(huán)節(jié)的有效支撐,致使在有限的實(shí)踐課時(shí)內(nèi),學(xué)生卻顯得慌忙無(wú)措,進(jìn)而難以具備相應(yīng)的編程能力。
二、提高C語(yǔ)言程序設(shè)計(jì)教學(xué)質(zhì)量與效率的對(duì)策
(一)強(qiáng)化對(duì)該課程的重視程度并創(chuàng)新教學(xué)方法
在實(shí)際教學(xué)的過(guò)程中,教師需要在進(jìn)入課程教學(xué)之前,向?qū)W生闡明學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)這一課程內(nèi)容的重要性,同時(shí)明確在該課程教學(xué)內(nèi)容下所需實(shí)現(xiàn)的教學(xué)目標(biāo),讓學(xué)生明確重點(diǎn)學(xué)習(xí)內(nèi)容,并縷清教學(xué)思路以實(shí)現(xiàn)程度設(shè)計(jì)教學(xué)內(nèi)容的高效開(kāi)展,確保學(xué)生具備良好的專業(yè)基礎(chǔ)能力。同時(shí),要在進(jìn)一步更新教學(xué)理念的基礎(chǔ)上,創(chuàng)新教學(xué)方法,以搭建全新的教學(xué)模式,確保充分體現(xiàn)出學(xué)生在教學(xué)中的主體地位,以在激發(fā)學(xué)生學(xué)習(xí)興趣與積極性的同時(shí),能夠以主動(dòng)積極的投入到學(xué)習(xí)中。在實(shí)際踐行的過(guò)程中,教師可通過(guò)問(wèn)題情境的設(shè)置為基礎(chǔ),將理論知識(shí)與實(shí)際生活中的問(wèn)題相聯(lián)系,以搭建相應(yīng)的教學(xué)情境,促使學(xué)生從直觀具體的事物中卻感知理論,為促使學(xué)生更好的掌握理論知識(shí)內(nèi)容奠定基礎(chǔ)。同時(shí),還可以借助多媒體這一教學(xué)手段來(lái)吸引學(xué)生的興趣,提高教學(xué)的效率。比如:針對(duì)數(shù)組與指針間關(guān)系這一理論進(jìn)行講解的過(guò)程中,教師可以采用結(jié)合教學(xué)課件來(lái)展開(kāi)小組探討的方式,在此過(guò)程中,充分發(fā)揮出自身的引導(dǎo)作用,促使學(xué)生能夠在良好的課堂教學(xué)氛圍中,以興趣為老師來(lái)探索出答案,實(shí)現(xiàn)對(duì)知識(shí)的內(nèi)化吸收。
(二)結(jié)合學(xué)生的實(shí)際需求特點(diǎn)落實(shí)因材施教
基于該專業(yè)本身的特殊性,在實(shí)際教學(xué)的過(guò)程中,教師需要基于教學(xué)目標(biāo)的基礎(chǔ)上,結(jié)合學(xué)生的實(shí)際能力素質(zhì)特點(diǎn),并按照不同專業(yè)所具備的需求特點(diǎn),實(shí)現(xiàn)實(shí)驗(yàn)題目的有針對(duì)性設(shè)計(jì)。要注重要專業(yè)理論知識(shí)與實(shí)驗(yàn)設(shè)計(jì)進(jìn)行融合,并要確保相應(yīng)設(shè)計(jì)題目能夠迎合學(xué)生的興趣,同時(shí),可通過(guò)實(shí)驗(yàn)題目的豐富化設(shè)計(jì)來(lái)促使學(xué)生結(jié)合自身的興趣來(lái)進(jìn)行題目的選擇,以保證學(xué)生能夠在編寫(xiě)程序模塊的過(guò)程中能夠具備這一能力。
(三)實(shí)現(xiàn)理論與實(shí)踐教學(xué)的有機(jī)融合
基于C語(yǔ)言程序設(shè)計(jì)這一課程本身就具備了較高的實(shí)踐性,因此,要想確保學(xué)生能夠在具備扎實(shí)理論基礎(chǔ)的同時(shí),能夠掌握相應(yīng)的技能,就需要將理論與實(shí)踐教學(xué)進(jìn)行有機(jī)融合,促使學(xué)生能夠通過(guò)實(shí)踐來(lái)鞏固理論知識(shí),并以理論知識(shí)來(lái)指導(dǎo)編程設(shè)計(jì)實(shí)驗(yàn)程序的高效開(kāi)展,進(jìn)而為提高該學(xué)科教學(xué)的有效性并實(shí)現(xiàn)對(duì)學(xué)生綜合能力素質(zhì)的培養(yǎng)奠定扎實(shí)基礎(chǔ)。同時(shí),在實(shí)驗(yàn)教學(xué)部分,教師還可以通過(guò)小組合作法來(lái)進(jìn)行開(kāi)展,促使學(xué)生能夠在互相溝通交流中取他人之長(zhǎng)補(bǔ)己之短,并實(shí)現(xiàn)對(duì)學(xué)生合作溝通等綜合能力的培養(yǎng)。
總結(jié)
綜上,在C語(yǔ)言程序設(shè)計(jì)專業(yè)學(xué)科教學(xué)中,要想提高該課程教學(xué)的質(zhì)量與效率,并實(shí)現(xiàn)對(duì)學(xué)生相應(yīng)實(shí)踐操作能力的培養(yǎng),就需要在強(qiáng)化對(duì)這一基礎(chǔ)課程重視程度的基礎(chǔ)上,更新教學(xué)理念,創(chuàng)新教學(xué)方法,并將理論與實(shí)踐進(jìn)行有機(jī)融合,且注重實(shí)現(xiàn)實(shí)驗(yàn)項(xiàng)目課題的有針對(duì)性設(shè)計(jì),為實(shí)現(xiàn)該課程的教學(xué)目標(biāo)奠定基礎(chǔ)。
參考文獻(xiàn)
[1] 高春穎,張?jiān)品?,馬慧敏.《C語(yǔ)言程序設(shè)計(jì)》教學(xué)中存在問(wèn)題及改革探索[J].電腦知識(shí)與技術(shù),2011,17:4113-4114+4116.[2] 王軍英,馬紅梅.C語(yǔ)言程序設(shè)計(jì)教學(xué)存在的問(wèn)題與對(duì)策[J].教育理論與實(shí)踐,2015,03:63-64.[3] 張樂(lè).C語(yǔ)言程序設(shè)計(jì)教學(xué)中存在的問(wèn)題及改革措施[J].運(yùn)城學(xué)院學(xué)報(bào),2015,03:10-12.
第二篇:C語(yǔ)言程序設(shè)計(jì)教學(xué)安排
C語(yǔ)言程序設(shè)計(jì)教學(xué)安排
本課程的任務(wù)是結(jié)合一般數(shù)值計(jì)算向?qū)W生介紹計(jì)算機(jī)程序設(shè)計(jì)的基本知識(shí),使學(xué)生掌握C語(yǔ)言的基本內(nèi)容及程序設(shè)計(jì)的基本方法與編程技巧,了解進(jìn)行科學(xué)計(jì)算的一般思路,培養(yǎng)學(xué)生應(yīng)用計(jì)算機(jī)解決和處理實(shí)際問(wèn)題的思維方法與基本能力,為進(jìn)一步學(xué)習(xí)和應(yīng)用計(jì)算機(jī)打下基礎(chǔ)。本課程學(xué)時(shí)總計(jì)32學(xué)時(shí)。
二、課程內(nèi)容、基本要求與學(xué)時(shí)分配
㈠ C語(yǔ)言的基本概念
3學(xué)時(shí)
1.了解C語(yǔ)言的特點(diǎn)及發(fā)展
2.掌握程序的基本結(jié)構(gòu)與書(shū)寫(xiě)格式
3.掌握頭文件、數(shù)據(jù)說(shuō)明、函數(shù)的開(kāi)始和結(jié)束標(biāo)志。
㈡ 數(shù)據(jù)類型及其運(yùn)算
2學(xué)時(shí)
1.掌握數(shù)據(jù)類型(基本類型、構(gòu)造類型、指針類型、空類型)及其定義方法。
2.掌握運(yùn)算符的種類、運(yùn)算優(yōu)先級(jí)、結(jié)合性。
3.掌握不同類型數(shù)據(jù)間的轉(zhuǎn)換與運(yùn)算。
4.掌握表達(dá)式類型(賦值表達(dá)式、算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、條件表達(dá)式、逗號(hào)表達(dá)式)和求值規(guī)則。
㈢ 基本語(yǔ)句
2學(xué)時(shí)
1.掌握表達(dá)式語(yǔ)句、空語(yǔ)句、復(fù)合語(yǔ)句。
2.掌握數(shù)據(jù)的輸入/輸出和輸入/輸出函數(shù)。
3.掌握go to 語(yǔ)句和語(yǔ)句標(biāo)號(hào)的使用。
㈣ 選擇結(jié)構(gòu)
2學(xué)時(shí)
1.掌握用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)。
2.掌握用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。
㈤ 循環(huán)結(jié)構(gòu)
4學(xué)時(shí)
1.掌握f(shuō)or循環(huán)結(jié)構(gòu)。
2.掌握while和do while循環(huán)結(jié)構(gòu)。
3.掌握continue、break、return語(yǔ)句。
4.掌握循環(huán)的嵌套。
㈥ 數(shù)組的定義和引用
4學(xué)時(shí)
1.掌握一維數(shù)組和多維數(shù)組的定義、初始化和引用。
2.掌握字符串與字符數(shù)組。
㈦函數(shù)
6學(xué)時(shí)
1.掌握庫(kù)函數(shù)的正確調(diào)用。
2.掌握函數(shù)的定義方法。
3.掌握函數(shù)的類型和返回值。
4.掌握形式參數(shù)與實(shí)在參數(shù)的區(qū)別,參數(shù)值的傳遞。
5.掌握函數(shù)的一般調(diào)用和嵌套調(diào)用,學(xué)會(huì)遞歸調(diào)用。
6.掌握局部變量和全局變量。
7.掌握變量的存儲(chǔ)類型(自動(dòng)、靜態(tài)、寄存器、外部),變量的作用域和生存期。
8.了解內(nèi)部函數(shù)和外部函數(shù)。
㈧編譯預(yù)處理
1學(xué)時(shí)
1.掌握編譯預(yù)處理的概念和特點(diǎn)
2.了解帶參數(shù)的宏定義及其使用,掌握不帶參數(shù)的宏定義及其使用。
3.掌握“文件包含”的概念和使用。
㈨指針
8學(xué)時(shí)
1.掌握指針的概念及指針的定義。
2.掌握指針運(yùn)算。
3.掌握指向變量、數(shù)組、字符串、函數(shù)的指針變量。
4.掌握用指針作函數(shù)參數(shù)。
5.掌握指針數(shù)組和指向指針的指針的概念及其定義方法,了解main函數(shù)的命令行參數(shù)。
㈩結(jié)構(gòu)與聯(lián)合 2學(xué)時(shí)
1.掌握結(jié)構(gòu)和聯(lián)合類型數(shù)據(jù)的定義方法。
2.掌握結(jié)構(gòu)和聯(lián)合類型數(shù)據(jù)的引用方法。3.掌握指向結(jié)構(gòu)體的指針變量。3.了解用typedef 定義類型的方法。
(十一)文件操作
2學(xué)時(shí)
1.掌握文件類型指針(file類型指針)。
2.掌握文件的打開(kāi)與關(guān)閉(fopen和fclose函數(shù))。
3.掌握文件的讀與寫(xiě)(fprintf和fscanf函數(shù))。
三、說(shuō)明
本課程的先修課程為《計(jì)算機(jī)文化基礎(chǔ)》和《高等數(shù)學(xué)》
四、課程使用的教材和主要參考書(shū)
使用的教材:《C程序設(shè)計(jì)》
潭浩強(qiáng) 著
清華大學(xué)出版社
主要參考書(shū):《C語(yǔ)言程序設(shè)計(jì)》 王樹(shù)義 錢(qián)達(dá)源 編著 大連理工大學(xué)出版社
第三篇:C語(yǔ)言程序設(shè)計(jì)
1.Problem A: Hello world!Description Xiao_ming有兩個(gè)哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放學(xué)回家,父母分別跟他們打招呼。
Input 無(wú)
Output 請(qǐng)輸出: Hello Da_min, Hello Er_min, Hello Xiao_ming!
Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!
HINT 請(qǐng)注意換行符
Append Code #include
printf(“Hello Da_min,n”);
printf(“Hello Er_min,n”);
printf(“Hello Xiao_ming!n”);} 2.Problem B: 求圓的面積和周長(zhǎng) Description 從鍵盤(pán)輸入圓的半徑,求圓的面積和周長(zhǎng),圓周率取3.14。
Input 輸入一個(gè)浮點(diǎn)型數(shù)據(jù),有效數(shù)字不會(huì)超過(guò)十進(jìn)制的6位。
Output 輸出為兩行。
第一行為圓的面積,第二行為圓的周長(zhǎng),格式見(jiàn)sample。
Sample Input 3
Sample Output Area: 28.260000 Perimeter: 18.840000
HINT 了解浮點(diǎn)類型的輸入、輸出和算術(shù)運(yùn)算符
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個(gè)數(shù)的平均值。
Input 輸入只有一行,為3個(gè)較小的整數(shù)。
Output 輸出為這3個(gè)整數(shù)的平均值,保留3位小數(shù)。
Sample Input 1 2 3 Sample Output 2.000
HINT 注意除法運(yùn)算對(duì)整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)是不一樣的。
Append Code #include
4.Problem D: 求字符的值 Description 從鍵盤(pán)輸入3個(gè)字符(不含雙字節(jié)字符),分別輸出每個(gè)字符的十進(jìn)制值(ASCII碼)、八進(jìn)制值和十六進(jìn)制值。
Input 輸入為3個(gè)字符。
Output 輸出為3行。
每一行為每個(gè)字符(對(duì)應(yīng)輸入順序)的十進(jìn)制、八進(jìn)制和十六進(jìn)制值,用空格分隔開(kāi)。每個(gè)輸出的值占3個(gè)字符,不足3個(gè)字符前面補(bǔ)0。
Sample Input 0 A
Sample Output 048 060 030 032 040 020 065 101 041
HINT 了解字符值的存儲(chǔ)和整型的關(guān)系。
Append Code #include
5.Problem A: 最簡(jiǎn)單的程序 Description 輸出一行“Hello world!”。
Input 無(wú)
Output Hello world!
Sample Input Sample Output Hello world!
HINT Append Code #include
printf(“Hello world!”);}
6.Problem B: 算術(shù)基本運(yùn)算 Description 計(jì)算兩整數(shù)x和y(0 Input 輸入只有一行,格式見(jiàn)sample。 Output 輸出為多行,按順序每行輸出x,y的和、差、積、商、余數(shù)、x的平方和y的三次方,格式見(jiàn)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: 自增自減運(yùn)算 Description C語(yǔ)言中有自增運(yùn)算++、自減運(yùn)算--,并且可以前置和后置。 編寫(xiě)一個(gè)程序:對(duì)輸入的一個(gè)整數(shù)a,輸出a++、a--、++a、--a的值。 Input 一個(gè)整數(shù)a,a是很小的整數(shù)。 Output 輸出為5行,第一行為a的值,后面依次為--a、a--、a++、++a的值。 5行輸出縱向a要對(duì)齊,“:”對(duì)齊,“:”前后各一個(gè)空格,后面的數(shù)值不用對(duì)齊。每行行尾都有回車(chē)。 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: 絕對(duì)值 Description 求整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)的絕對(duì)值。 Input 輸入兩個(gè)數(shù),第一個(gè)是整數(shù),第二個(gè)是浮點(diǎn)數(shù)。 Output 輸出為兩行,第一行為整數(shù)的絕對(duì)值,第二行為浮點(diǎn)數(shù)的絕對(duì)值,注意浮點(diǎn)數(shù)的絕對(duì)值不輸出無(wú)意義的0。 Sample Input-1 1 Sample Output 1 1 HINT 求絕對(duì)值可以用標(biāo)準(zhǔn)庫(kù)函數(shù)來(lái)完成,也可以自己判斷。注意浮點(diǎn)數(shù)的輸出格式。求絕對(duì)值的函數(shù)在哪個(gè)頭文件?貌似很多人會(huì)搞錯(cuò),包括很多編書(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 輸入一個(gè)整數(shù),判讀它是奇數(shù)還是偶數(shù)。 Input 輸入只有一行,為一個(gè)100以內(nèi)的正整數(shù)。 Output 輸出為一行。 若輸入為偶數(shù)則輸出“even”,奇數(shù)輸出“odd”。Sample Input 30 Sample Output even HINT 用整數(shù)運(yùn)算可以解決,練習(xí)“?:”表達(dá)式。 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: 簡(jiǎn)單的打折計(jì)算 Description 商店規(guī)定:消費(fèi)滿n元,可以打八八折。設(shè)某件商品標(biāo)價(jià)m元,輸入購(gòu)買(mǎi)的件數(shù)x,計(jì)算出需要支付的金額(單位:元),精確到分。 Input 輸入只有一行,三個(gè)整數(shù)m、n和x,且0 Sample Input 95 300 4 Sample Output 334.40 HINT 了解浮點(diǎn)型的輸出控制,注意整型和浮點(diǎn)型混合運(yùn)算過(guò)程中的數(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 輸入一個(gè)正整數(shù)的年份,判斷是否為閏年。 Input 輸入只有一行,為一個(gè)10000以內(nèi)的正整數(shù)。 Output 輸出為一行。 若輸入為閏年偶數(shù)則輸出“Yes”,否則輸出“No”。 Sample Input 2010 Sample Output No HINT 了解邏輯運(yùn)算符和關(guān)系運(yù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 如果一個(gè)三位十進(jìn)制數(shù)等于其各位數(shù)字的立方和,則稱這個(gè)數(shù)為水仙花數(shù)。如:13+53+33=153。 Input 一個(gè)整數(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: 三個(gè)數(shù)比較大小 Description 從鍵盤(pán)上輸入0~100之間的三個(gè)數(shù),按從小到大的順序輸出。 Input 輸入只有一行,為三個(gè)整數(shù)。 Output 按從小到大輸出這三個(gè)數(shù)。 Sample Input 15 10 20 Sample Output 10 15 20 HINT 用if語(yǔ)句判斷各種情況可以解決這個(gè)問(wèn)題。 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個(gè)正整數(shù)a、b和c,按照如下規(guī)則求和: 如果這個(gè)數(shù)字是偶數(shù),則累加到和中; 如果這個(gè)數(shù)字是奇數(shù),則將大于該數(shù)的最小偶數(shù)累加到和中。 Input 三個(gè)正整數(shù),均在100以內(nèi)。 Output 一個(gè)和。 Sample Input 2 3 5 Sample Output 12 HINT 如果不會(huì)使用分支語(yǔ)句,可使用條件運(yùn)算符判斷到底將哪個(gè)數(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: 你過(guò)線了嗎? Description 經(jīng)過(guò)四年的學(xué)習(xí),你決定報(bào)考我國(guó)著名的“285”高校之一的北青大學(xué),經(jīng)過(guò)認(rèn)真的復(fù)習(xí),殘酷的考試,終于知曉了自己的考試成績(jī),也知道了北青大學(xué)的錄取分?jǐn)?shù)線,請(qǐng)你編程判斷,自己過(guò)線了嗎? Input 輸入有2行,第一行有4個(gè)正整數(shù),分別表示三門(mén)課程的分?jǐn)?shù)線以及總分分?jǐn)?shù)線。第二行有3個(gè)非負(fù)整數(shù),分別表示你考的三門(mén)課程的成績(jī)。 Output 如果你的三門(mén)課程成績(jī)都不低于相應(yīng)課程的分?jǐn)?shù)線,且你的考試總分也不低于北青大學(xué)的總分分?jǐn)?shù)線要求,則輸出“congratulations”,否則輸出“sorry”。 Sample Input 70 80 70 240 80 80 82 Sample Output congratulations HINT 如果你不會(huì)使用分支語(yǔ)句,同樣可以使用條件運(yùn)算符實(shí)現(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 計(jì)算a+b,0<=a,b<1000。 Input 輸入的第一行是一個(gè)整數(shù)N,后面有N對(duì)整數(shù)a和b,每對(duì)a和b占一行,a,b用空格分開(kāi)。 Output 每行輸出一個(gè)a+b的和,順序與輸入對(duì)應(yīng)。 Sample Input 2 1 2 10 20 Sample Output 3 30 HINT N給出了測(cè)試樣例數(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 計(jì)算a+b,0<=a,b<1000。 Input 輸入有多對(duì)整數(shù)a和b組成,每對(duì)a和b占一行,a,b用空格分開(kāi)。 Output 每行輸出一個(gè)a+b的值,順序與輸入對(duì)應(yīng)。 Sample Input 1 2 10 20 Sample Output 3 30 HINT OJ系統(tǒng)上測(cè)試輸入結(jié)束符為EOF(End Of File),其值為-1。用scanf()把文件所有內(nèi)容讀完后,會(huì)讀到EOF,所以可以用來(lái)判斷輸入是否完成,測(cè)試時(shí)可以用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 輸入一個(gè)英文字母,判斷是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U Input 輸入一個(gè)英文字母 Output 是元音字母,輸出“yes”,否則輸出“no”,行尾沒(méi)有回車(chē)。 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: 按順序輸出三個(gè)數(shù) Description 對(duì)于輸入的3個(gè)整數(shù),按照從小到大的順序輸出。 Input 輸入3個(gè)int類型內(nèi)的整數(shù),兩兩之間用一個(gè)空格隔開(kāi)。 Output 按照從小到大的順序輸出上述三個(gè)數(shù),兩兩之間用一個(gè)空格隔開(kāi)。 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 輸入為一個(gè)整數(shù)。 Output 輸出只有一行,代表判斷結(jié)果。如果輸入的整數(shù)n是一個(gè)偶數(shù),輸出: n is an even number.否則輸出: n is an odd number.見(jiàn)樣例。 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: 判斷兩個(gè)整數(shù)的大小關(guān)系 Description 輸入2個(gè)整數(shù)a和b,如果a>b,則輸出1,否則輸出0。 Input 兩個(gè)整數(shù)a和b,均不超過(guò)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: 成績(jī)的等級(jí) Description 把百分制的考試成績(jī)轉(zhuǎn)換成五級(jí)制的成績(jī): 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing 不在0~100之間的輸入是非法數(shù)據(jù),輸出“Error”。 Input 輸入多行,每行一個(gè)整數(shù)。 Output 輸入所對(duì)應(yīng)的成績(jī)等級(jí)。 Sample Input-1 81 92 35 68 72 100 Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch語(yǔ)句解決這個(gè)問(wèn)題比較方便。 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(”P(pán)assn“);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 輸入三個(gè)整數(shù),依次為k、m、n。 Output 從小到大輸出符合題意的所有整數(shù),兩數(shù)之間用一個(gè)空格分開(kāi)。 Sample Input 15 2 3 Sample Output 2 3 4 8 9 10 14 15 HINT 難點(diǎn)在于輸出格式的控制:空格在數(shù)的中間,學(xué)會(huì)用循環(huán)時(shí)邊界情況的特殊處理。 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 計(jì)算a+b和a-b。 Input 輸入為一對(duì)整數(shù)a和b。a,b用空格分開(kāi)。 Output 輸出a+b和a-b的計(jì)算結(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 需要判斷給定的一個(gè)整數(shù)是否同時(shí)滿足如下三個(gè)條件: 1.它是一個(gè)完全平方數(shù)。2.它是一個(gè)偶數(shù)。3.它是一個(gè)正數(shù)。 注:若一個(gè)數(shù)能表示成某個(gè)自然數(shù)的平方的形式,則稱這個(gè)數(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 一個(gè)int范圍內(nèi)的整數(shù)。 Output 如果輸入的數(shù)字滿足條件,則輸出yes,否則輸出no。 Sample Input 100 Sample Output yes HINT 注意邏輯表達(dá)式判斷三個(gè)條件的順序。如果你不會(huì)使用分支語(yǔ)句,同樣可以使用條件運(yùn)算符實(shí)現(xiàn)該程序。 庫(kù)函數(shù)sqrt()可以用于求一個(gè)數(shù)的平方根。 Append Code #include if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0) printf(”yes“); else printf(”no“);} 26.Problem F: 多路分支 Description 編寫(xiě)一個(gè)完整的程序,運(yùn)行時(shí)向用戶提問(wèn)”你考試考了多少分?(0-100)“接受輸入后判斷其等級(jí)并顯示出來(lái)等級(jí): 優(yōu):90<=分?jǐn)?shù)<=100 良:80<=分?jǐn)?shù)<90 中:60<=分?jǐn)?shù)<80 差:0<=分?jǐn)?shù)<60 Input 輸入任意一個(gè)整數(shù)分?jǐn)?shù)值,顯示等級(jí);再輸入任意一個(gè)整數(shù)分?jǐn)?shù)值,顯示等級(jí);....直到測(cè)試數(shù)據(jù)較充分,可輸入-1止。 Output 對(duì)任意輸入的分?jǐn)?shù)值,輸出對(duì)應(yīng)的等級(jí),直到輸入的數(shù)為-1時(shí)才退出運(yùn)行.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é)校舉行運(yùn)動(dòng)會(huì),如果全體學(xué)生按照3人一隊(duì)列隊(duì),則多了1個(gè)人;如果按照4人一隊(duì)列隊(duì),則多了2個(gè)人;如果按照5人一隊(duì)排隊(duì),則多了3個(gè)人。請(qǐng)問(wèn)這個(gè)學(xué)校有多少學(xué)生? Input 一個(gè)int類型的正整數(shù)N,是學(xué)生人數(shù)的上界,即:該校學(xué)生數(shù)不超過(guò)N。 Output 所有可能的學(xué)生數(shù),每個(gè)數(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: 正負(fù)數(shù)各有幾個(gè)? Description 輸入若干個(gè)整數(shù),求其中正數(shù)、負(fù)數(shù)的個(gè)數(shù)。 Input 輸入分為2行:第一行是一個(gè)數(shù)字N>0,表示下面有N個(gè)整數(shù)。第2行是N個(gè)整數(shù),都是int類型的。 Output 輸出所輸入的N個(gè)整數(shù)的正數(shù)個(gè)數(shù)和負(fù)數(shù)個(gè)數(shù),并用空格分開(kāi)2個(gè)輸出。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 計(jì)算a+b,0<=a,b<1000。 Input 輸入有多對(duì)整數(shù)a和b組成,每對(duì)a和b占一行,a,b用空格分開(kāi)。當(dāng)測(cè)試樣為0 0時(shí)表示輸入結(jié)束,0 0不參與運(yùn)算。 Output 每行輸出一個(gè)a+b的值,順序與輸入對(duì)應(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 計(jì)算a+b,0<=a,b<1000。 Input 輸入有多對(duì)整數(shù)a和b組成,每對(duì)a和b占一行,a,b用空格分開(kāi)。 Output 每行輸出一個(gè)a+b的值,順序與輸入對(duì)應(yīng)。每個(gè)格式樣例之間用一個(gè)空行分隔開(kāi)。 Sample Input 1 2 10 20 15 35 Sample Output 3 30 50 HINT 由于輸出的和比空行多一個(gè),所以全部計(jì)算放在一個(gè)循環(huán)里是不行的,必須要特殊處理開(kāi)頭或者結(jié)尾。 Append Code #include n++; if(n==1) printf(”%dn“,a+b); else printf(”n%dn“,a+b); } return 0;} Problem C: n個(gè)數(shù)的最大值和最小值 Description 找出n個(gè)數(shù)中最大的數(shù)和最小的數(shù),并將它們的值輸出出來(lái)。 Input 輸入為n+1個(gè)整數(shù),都在int類型范圍內(nèi)。這些數(shù)可能用若干空格或者換行符分隔開(kāi)。輸入的第1個(gè)數(shù)為n,表示后續(xù)有n個(gè)數(shù)輸入。從輸入的第2個(gè)數(shù)開(kāi)始,求出直到第n+1個(gè)數(shù)中最大的數(shù)和最小的數(shù)。 Output 輸出為兩行,格式見(jiàn)sample。 Sample Input 3 0 1-1 Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格還是回車(chē)都是空白符,對(duì)scanf(”%d“)來(lái)說(shuō)沒(méi)有區(qū)別;先讀入n,然后用for循環(huán)就很容易控制讀入n個(gè)數(shù)的過(guò)程。 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)的素?cái)?shù) Description 素?cái)?shù)是只能被1和自身整除的正整數(shù),根據(jù)數(shù)學(xué)定義1不是素?cái)?shù)。素?cái)?shù)也叫質(zhì)數(shù)。 Input 輸入為兩個(gè)整數(shù)m和n,滿足0<=m<=n<=100。 Output 從大到小輸出m~n之間的所有素?cái)?shù),一個(gè)素?cái)?shù)一行。如果m~n之間沒(méi)有素?cái)?shù),則不輸出任何數(shù)。 輸出的所有數(shù)在兩行“=====”之間。 Sample Input 2 12 Sample Output ===== 11 7 5 3 2 ===== HINT 利用素?cái)?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 給出三個(gè)整數(shù),代表三條邊的長(zhǎng)度,判斷這三條邊的長(zhǎng)度是否能構(gòu)成一個(gè)三角形? Input 第一行是n(1<=n<=100),表示有n組測(cè)試數(shù)據(jù) 接下來(lái)有n行,每一行包含三個(gè)整數(shù),表示三個(gè)邊長(zhǎng)(1<=邊長(zhǎng)<=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: 簡(jiǎn)單的整數(shù)排序 Description 對(duì)給出的若干整數(shù)按從小到大排序。 Input 輸入的第一個(gè)數(shù)為n(n<=1000),后接n個(gè)整數(shù)。 Output 按從小到大的順序輸出這些整數(shù),每?jī)蓚€(gè)整數(shù)之間用一個(gè)空格分隔開(kāi),最后一個(gè)整數(shù)后面沒(méi)有空格。 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ù)都存儲(chǔ)下來(lái)。因?yàn)橹挥凶疃?000個(gè)數(shù),1秒的時(shí)間足夠任何排序算法運(yùn)行處結(jié)果來(lái)。 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 購(gòu)物的路程 Saya和Kudo一起去購(gòu)物。假定她們逛的街是一條直線,而商鋪是這條直線上的一些點(diǎn)。她們將車(chē)停在該直線最左端的店鋪處,然后從左向右開(kāi)始逛每一個(gè)店鋪,然后從最右邊的店鋪再返回到停車(chē)處。你的任務(wù)是計(jì)算她們走了多少路。 Input 輸入有多組。每一組的第一行是N(0 Output 對(duì)每組輸入,輸出她們走的路長(zhǎng)。 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)給出,請(qǐng)?zhí)畛淦渲械目瞻渍Z(yǔ)句,并提交填充后的完整程序。 Input 輸入為多行。第一行是一個(gè)整數(shù)N>0,表示后面有N個(gè)測(cè)試用例。后面有N行,每行包含2個(gè)整數(shù),分別是min和max。 Output 輸出為N行,每個(gè)測(cè)試用例的計(jì)算結(jié)果占據(jù)一行。每行的格式為: case i:sum=s.其中i表示測(cè)試用例的編號(hào)(從1開(kāi)始),s是該測(cè)試用例對(duì)應(yīng)的累加和(設(shè)不超過(guò)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 按字母順序輸出兩個(gè)字母st和ed之間的所有字母,但不包括st和ed。不輸出逆序。 Input 兩個(gè)字母st和ed,都是大寫(xiě)字母,用一個(gè)空格分開(kāi)。 Output 在一行內(nèi)按順序輸出st和ed之間的所有字母,但不包括st和ed。例如: 輸入為A和E,則輸出為BCD; 輸入為A和B,則什么字母也不輸出,只有一個(gè)空行; 輸入為E和A,也是什么字母也不輸出,只有一個(gè)空行。最后要輸出一行(行尾不回車(chē)): ***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é)愛(ài)好者,他們?cè)诹奶鞎r(shí)經(jīng)常使用一些暗語(yǔ)。他們使用的一種最簡(jiǎn)單的暗語(yǔ)是:將要說(shuō)的每句話里面的英文字母變成這個(gè)字母之后的某個(gè)字母。現(xiàn)在要求你寫(xiě)一個(gè)程序,將一個(gè)字母變成它之后的某個(gè)字母。 Input 輸入有2個(gè):一個(gè)大寫(xiě)字母c和一個(gè)正整數(shù)d(0 Output 輸出字母c之后的第d個(gè)字母。大小寫(xiě)與c一致。如果c之后的某個(gè)字母已經(jīng)超出'Z',則再?gòu)淖帜?A'開(kāi)始計(jì)數(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: 登錄密碼驗(yàn)證 Description 編寫(xiě)一個(gè)程序,模擬用戶登錄系統(tǒng)的密碼驗(yàn)證過(guò)程。系統(tǒng)提供給用戶的密碼長(zhǎng)度最長(zhǎng)為20個(gè)字符,若密碼輸入錯(cuò)誤可以再次輸入。但為了保證用戶密碼安全,若連續(xù)輸入密碼錯(cuò)誤超過(guò)5次就會(huì)鎖定賬號(hào)一段時(shí)間。 Input 輸入為若干個(gè)串,至EOF結(jié)束。輸入的第一個(gè)串是用戶的正確密碼,后面的串為模擬用戶登錄時(shí)的輸入的密碼。 Output 每次輸入錯(cuò)誤的密碼,輸出一個(gè)“Wrong!”,若輸入的密碼為正確的,輸出一個(gè)“Welcome!”,并結(jié)束密碼測(cè)試。若前5次輸入的密碼都是錯(cuò)誤的,則后面的輸入中不管是否有正確的密碼都輸出“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: 兔子的繁殖問(wèn)題 Description 假設(shè)一對(duì)兔子每月能生一對(duì)小兔(一雌一雄),每對(duì)小兔出生后的下一個(gè)月是沒(méi)有繁殖能力的,至出生后的第三個(gè)月開(kāi)始又可以每月生一隊(duì)小兔,問(wèn)從一對(duì)剛出生的小兔開(kāi)始,經(jīng)過(guò)若干個(gè)月后一共有多少兔子(假設(shè)在此過(guò)程中兔子沒(méi)有死亡)? 這個(gè)問(wèn)題是意大利數(shù)學(xué)家菲波那契(Fibonacci)在他1202年出版的《算盤(pán)全書(shū)》中提出來(lái)的,從第一對(duì)剛出生的小兔開(kāi)始每月的兔子數(shù)被乘坐菲波那契序列。 Input 輸入的第一個(gè)數(shù)為n,接下來(lái)有n個(gè)數(shù)字。每個(gè)數(shù)字為一個(gè)月份m(m<=45)。 Output 輸出為n行,每行為第m個(gè)月后的兔子總數(shù)。 《C 語(yǔ)言程序設(shè)計(jì)》主要在計(jì)算機(jī)軟件、計(jì)算機(jī)網(wǎng)絡(luò)、計(jì)算機(jī)應(yīng)用、通信技術(shù)、智能電子、電子信息工程、多媒體以及核工程與核技術(shù)等專業(yè)中開(kāi)設(shè),是電子信息類、機(jī)械類等工科專業(yè)的重要專業(yè)基礎(chǔ)課。 本校從2001至今,每年都開(kāi)設(shè)《C語(yǔ)言程序設(shè)計(jì)》課程,由于,我校最開(kāi)始時(shí)的特殊情況,主要把重點(diǎn)放在C語(yǔ)言中的各類重點(diǎn)、難點(diǎn)的語(yǔ)法、語(yǔ)義上,使得學(xué)生經(jīng)過(guò)比較復(fù)雜和痛苦的過(guò)程后,對(duì)C語(yǔ)言在使用上很難做到自己編寫(xiě)程序。而且很多學(xué)生產(chǎn)生了畏懼心理。 2004年,學(xué)院成立計(jì)算機(jī)科學(xué)與技術(shù)系,為了更好學(xué)習(xí)和掌握C語(yǔ)言,計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)和計(jì)算機(jī)維護(hù)專業(yè)(計(jì)算機(jī)應(yīng)用技術(shù)前身)除了開(kāi)設(shè)《C語(yǔ)言程序設(shè)計(jì)》課程外,在后續(xù)一學(xué)期還開(kāi)設(shè)了《C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)》,使得計(jì)算機(jī)專業(yè)學(xué)生編程思想和能力得到了極大提高。 2005年,為了讓我院工科學(xué)生更好的掌握C語(yǔ)言編程以及通過(guò)四川省計(jì)算機(jī)二級(jí)考試,在《C語(yǔ)言程序設(shè)計(jì)》課程后設(shè)置《C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)》,極大地提高了學(xué)生的動(dòng)手機(jī)會(huì)和能力,過(guò)級(jí)率顯著提高! 2007年,依托我校建設(shè)精品課程的契機(jī),我們將C語(yǔ)言中的各個(gè)知識(shí)點(diǎn)進(jìn)行重新規(guī)整,提出適用于三本院校學(xué)生的語(yǔ)言設(shè)計(jì)學(xué)習(xí)的方法。我們提出,先了解C語(yǔ)言,再學(xué)習(xí)C語(yǔ)言,再用C語(yǔ)言的思想。即在開(kāi)始時(shí)讓學(xué)生初步知道C語(yǔ)言,然后引入比較簡(jiǎn)單的運(yùn)算符以及基本輸入、輸出和簡(jiǎn)單的順序結(jié)構(gòu)程序設(shè)計(jì)。通過(guò)這樣的方式,我們發(fā)現(xiàn),學(xué)生在C語(yǔ)言的學(xué)習(xí)就不會(huì)從開(kāi)始的時(shí)候陷入大量難懂的語(yǔ)法、語(yǔ)義和數(shù)據(jù)結(jié)構(gòu)中。有了以上鋪墊再層層進(jìn)入,最終進(jìn)入復(fù)雜的各類數(shù)據(jù)結(jié)構(gòu)以及指針等學(xué)習(xí)。通過(guò)以上的內(nèi)容規(guī)整后,教學(xué)效果有明顯提高。 C語(yǔ)言程序設(shè)計(jì)(漢諾塔設(shè)計(jì)) #include /*函數(shù)聲明*/ int m;printf(“please enter the number of diskes:n”);scanf(“%d”,&m);printf(“the step of move %d diskes :”,m);tian(m,'A','B','C'); } void tian(int n,int x,int y,int z) /*當(dāng)我選定這一行的時(shí)候 然后單擊組間選擇調(diào)試 run to_ 發(fā)現(xiàn)不管輸入的x值是多少 ABC的值都是65 66 67 后來(lái)才發(fā)現(xiàn)原來(lái)是他們所代表的十進(jìn)制的值*/ {void move(int x,int y); if(n==1)move(x,z); /*這里是遞歸函數(shù)的結(jié)束條件*/ else {tian(n-1,x,z,y);move(x,y); tian(n-1,y,x,z);} } void move(int x, int y) /* 定義move函數(shù)用來(lái)顯示移動(dòng)的路線*/ {printf(“%c——>%cn”,x,y); } /*漢洛塔問(wèn)題:如果有N個(gè)盤(pán)子 那么可以簡(jiǎn)化為n-1個(gè)盤(pán)子和一個(gè)盤(pán)子來(lái)處理,只要先把上面的n-1個(gè)盤(pán)子從A——>B 把第n個(gè)盤(pán)子由A——>C 再把n-1個(gè)盤(pán)子由B——>C 即可; n-1盤(pán)子 那么可以簡(jiǎn)化為n-2個(gè)盤(pán)子和一個(gè)盤(pán)子來(lái)處理 只要 把上面的n-2個(gè)盤(pán)子從A——>B 把第n個(gè)盤(pán)子由A——>C 再把n-1個(gè)盤(pán)子由B——>C 即可; n-3盤(pán)子 那么可以簡(jiǎn)化為n-3個(gè)盤(pán)子和一個(gè)盤(pán)子來(lái)處理 只要 把上面的n-4個(gè)盤(pán)子從A——>B 把第n個(gè)盤(pán)子由A——>C 再把n-1個(gè)盤(pán)子由B——>C 即可; N-4 .....4個(gè)盤(pán)子 那么可以簡(jiǎn)化為3個(gè)盤(pán)子和一個(gè)盤(pán)子來(lái)處理 只要 把上面的3個(gè)盤(pán)子有a 到b 把第4個(gè)盤(pán)子由a到c 再把上面的三個(gè)盤(pán)子由b到c; 3個(gè)盤(pán)子 可以簡(jiǎn)化為。。*/第四篇:C 語(yǔ)言程序設(shè)計(jì)
第五篇:C語(yǔ)言程序設(shè)計(jì)(漢諾塔問(wèn)題)