第一篇:991“數(shù)據(jù)結(jié)構(gòu)與C語(yǔ)言程序設(shè)計(jì)”考試大綱(2018版)
991“數(shù)據(jù)結(jié)構(gòu)與C語(yǔ)言程序設(shè)計(jì)”考試大綱(2018版)
2018年“數(shù)據(jù)結(jié)構(gòu)與C語(yǔ)言程序設(shè)計(jì)”考試內(nèi)容包括“數(shù)據(jù)結(jié)構(gòu)”與“C語(yǔ)言程序設(shè)計(jì)”兩門(mén)課程的內(nèi)容,各占比例50%。試卷滿分為150分。
“數(shù)據(jù)結(jié)構(gòu)”部分
一、概述
1.?dāng)?shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)的基本概念;
2.算法的定義、基本性質(zhì)以及算法分析的基本概念,包括采用大?形式表示時(shí)間復(fù)雜度和空間復(fù)雜度。
二、線性表
1.線性關(guān)系、線性表的定義,線性表的基本操作;
2.線性表的順序存儲(chǔ)結(jié)構(gòu)與鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)(包括單(向)鏈表、循環(huán)鏈表和雙向鏈表)的構(gòu)造原理;
3.在以上兩種存儲(chǔ)結(jié)構(gòu)的基礎(chǔ)上對(duì)線性表實(shí)施的基本操作,包括順序表的插入與刪除、鏈表的建立、插入與刪除、查找等操作對(duì)應(yīng)的算法設(shè)計(jì)(含遞歸算法的設(shè)計(jì))。
三、堆棧與隊(duì)列
1.堆棧與隊(duì)列的基本概念與基本操作; 2.堆棧與隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)與鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的構(gòu)造原理;
3.在不同存儲(chǔ)結(jié)構(gòu)的基礎(chǔ)上對(duì)堆棧與隊(duì)列實(shí)施插入與刪除等基本操作的算法設(shè)計(jì);
4.堆棧和隊(duì)列在解決實(shí)際問(wèn)題中應(yīng)用。
四、樹(shù)與二叉樹(shù)
1.樹(shù)與二叉樹(shù)的基本概念,基本特征、名詞術(shù)語(yǔ);
2.完全二叉樹(shù)與滿二叉樹(shù)的基本概念,二叉樹(shù)的基本性質(zhì)及其應(yīng)用; 3.二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu)與二叉鏈表存儲(chǔ)結(jié)的基本原理;
4.二叉樹(shù)的前序遍歷、中序遍歷、后序遍歷和按層次遍歷,重點(diǎn)是二叉樹(shù)在以二叉鏈表作為存儲(chǔ)結(jié)構(gòu)基礎(chǔ)上各種遍歷算法(包括非遞歸算法)的設(shè)計(jì)與應(yīng)用; 5.二叉排序樹(shù)的基本概念、建立(插入)、查找以及平均查找長(zhǎng)度ASL的計(jì)算。
五、圖
1.圖的基本概念、名詞術(shù)語(yǔ);
2.圖的鄰接矩陣存儲(chǔ)方法和鄰接表(含逆鄰接表)存儲(chǔ)方法的構(gòu)造原理及特點(diǎn); 3.圖的深度優(yōu)先搜索與廣度優(yōu)先搜索;
4.最小(代價(jià))生成樹(shù)、最短路徑、AOV網(wǎng)與拓?fù)渑判虻幕靖拍睢?/p>
六、文件及查找
1.順序查找法以及平均查找長(zhǎng)度(ASL)的計(jì)算; 2.折半查找法以及平均查找長(zhǎng)度(ASL)的計(jì)算,包括查找過(guò)程對(duì)應(yīng)的“判定樹(shù)”的構(gòu)造;
3.B-樹(shù)和B+樹(shù)的基本概念;
4.散列(Hash)表的構(gòu)造、散列函數(shù)的構(gòu)造,散列沖突的基本概念、處理散列沖突的基本方法以及散列表的查找和平均查找長(zhǎng)度的計(jì)算。
七、內(nèi)排序
1.排序的基本概念,各種內(nèi)排序方法的基本原理和特點(diǎn),包括排序過(guò)程中進(jìn)行的元素之間的比較次數(shù),排序總趟數(shù)、排序穩(wěn)定性以及時(shí)間復(fù)雜度與空間復(fù)雜度計(jì)算;
2.插入排序法(含折半插入排序法); 3.選擇排序法; 4.(起)泡排序法; 5.謝爾(Shell)排序法; 6.快速排序法;
7.堆積(Heap)排序法,包括堆積的定義與構(gòu)造;
“C語(yǔ)言程序設(shè)計(jì)”部分
一、C語(yǔ)言基本知識(shí)
1.C語(yǔ)言的特點(diǎn)以及C語(yǔ)言程序的組成;
2.?dāng)?shù)據(jù)類(lèi)型,包括整型、實(shí)型、字符型等常量與變量和變量的賦值;用typedef定義類(lèi)型;
3.各種類(lèi)型數(shù)據(jù)之間的混合運(yùn)算;
4.算術(shù)表達(dá)式、關(guān)系表達(dá)式和邏輯表達(dá)式,表達(dá)式sizeof的含義。
二、基本語(yǔ)句
1.賦值語(yǔ)句(含條件賦值語(yǔ)句)、條件語(yǔ)句(含if、if-else、switch)、循環(huán)語(yǔ)句(含while、do-while、for語(yǔ)句,包括循環(huán)嵌套和break語(yǔ)句與continue語(yǔ)句);
2.輸入/輸出語(yǔ)句,包括整型、實(shí)型、字符型(含字符串)等類(lèi)型數(shù)據(jù)的格式輸入函數(shù)scanf和格式輸出函數(shù)printf。
三、數(shù)組
1.一維數(shù)組和二維數(shù)組的定義、引用與初始化;
2.字符數(shù)組的定義、引用與初始化,字符數(shù)組的輸入與輸出,字符串和字符串處理函數(shù)的應(yīng)用。
四、函數(shù)
1.函數(shù)的定義,函數(shù)參數(shù)(形參和實(shí)參)與函數(shù)的返回值; 2.函數(shù)的調(diào)用,包括函數(shù)的嵌套調(diào)用和函數(shù)的遞歸調(diào)用; 3.命令行參數(shù)的基本概念,帶參數(shù)的主函數(shù)的概念和應(yīng)用。
五、指針
1.指針的基本概念,包括定義、使用、指針變量作為函數(shù)參數(shù)和函數(shù)返回值以及函數(shù)指針;
2.?dāng)?shù)組與指針,包括指向數(shù)組的指針變量的定義與賦值、通過(guò)指針引用數(shù)組元素、數(shù)組名作為函數(shù)參數(shù);
3.字符串與指針,指向字符串的指針變量。
六、預(yù)處理指令
預(yù)處理指令的基本概念,文件包含和條件包含預(yù)處理指令; 宏替換,帶參數(shù)的宏。
七、結(jié)構(gòu)體與共用體
1.結(jié)構(gòu)體的基本概念和特點(diǎn),結(jié)構(gòu)體變量的初始化與引用,結(jié)構(gòu)體指針的使用; 2.結(jié)構(gòu)體數(shù)組,包括結(jié)構(gòu)體數(shù)組的定義、初始化及應(yīng)用; 3.共用體的基本概念,共用體變量的引用。
八、位運(yùn)算
1.位運(yùn)算和位運(yùn)算符; 2.位運(yùn)算的應(yīng)用。
九、文件
1.文件的基本概念,包括文件類(lèi)型指針FILE與文件的使用方式; 2.文件的打開(kāi)函數(shù)fopen與關(guān)閉函數(shù)fclose; 3.文件的狀態(tài),包括feof函數(shù)和ferror函數(shù);
4.文件的讀/寫(xiě),包括fread和fwrite函數(shù)、fputc和fgetc函數(shù)、fgets與fputs函數(shù)的應(yīng)用;
5.文件的輸入函數(shù)fscanf和輸出函數(shù)fprintf的應(yīng)用;
6.文件的定位,包括rewind函數(shù)和fseek函數(shù)以及ftell函數(shù)的應(yīng)用。
參考用書(shū):
1.《數(shù)據(jù)結(jié)構(gòu)教程第3版》唐發(fā)根 編著 北京航空航天大學(xué)出版社 2017 2.《C程序設(shè)計(jì)》 譚浩強(qiáng)編著 清華大學(xué)出版社(版次不限)
第二篇:C語(yǔ)言程序設(shè)計(jì)考試大綱
《C語(yǔ)言程序設(shè)計(jì)》考試大綱
Ⅰ考試性質(zhì)
普通高等學(xué)校本科插班生招生考試是由??飘厴I(yè)生參加的選拔性考試。高等學(xué)校根據(jù)考生的成績(jī),按已確定的招生計(jì)劃,德、智、體全面衡量,擇優(yōu)錄取。因此,本科插班生考試應(yīng)有較高的信度、效度、必要的區(qū)分度和適當(dāng)?shù)碾y度。
本大綱適用于所有需要參加《C語(yǔ)言程序設(shè)計(jì)》考試的各專業(yè)考生。Ⅱ考試內(nèi)容
總體要求:考生應(yīng)按本大綱的要求了解或理解“C語(yǔ)言程序設(shè)計(jì)”中的數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)控制、數(shù)組、函數(shù)、指針、預(yù)處理命令、結(jié)構(gòu)體與共用體、文件的基本概念。熟練掌握程序設(shè)計(jì)的基本方法和C語(yǔ)言本身的語(yǔ)法、語(yǔ)句和使用方法。掌握一般問(wèn)題的分析思路、數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)表達(dá)及建立在存儲(chǔ)結(jié)構(gòu)之上的程序設(shè)計(jì)方法,具備初步運(yùn)用C語(yǔ)言解決問(wèn)題的程序設(shè)計(jì)能力;能熟練地閱讀、理解和編制簡(jiǎn)單的C程序;具備進(jìn)一步學(xué)習(xí)計(jì)算機(jī)各專業(yè)后續(xù)課程的能力和基礎(chǔ)。
一、數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式
⒈ 考試內(nèi)容
⑴關(guān)鍵字與標(biāo)識(shí)符的概念:關(guān)鍵字的含義,標(biāo)識(shí)符的定義,常量和變量的分類(lèi)。
⑵數(shù)據(jù)類(lèi)型:數(shù)據(jù)類(lèi)型的含義、特點(diǎn),不同類(lèi)型常量的表達(dá),不同類(lèi)型變量的定義、賦初值方法。
⑶運(yùn)算符:各類(lèi)運(yùn)算符的含義、優(yōu)先級(jí),各類(lèi)表達(dá)式的表示方法、運(yùn)算特點(diǎn)、值的類(lèi)型和計(jì)算方法,各類(lèi)公式的表達(dá)式描述和各類(lèi)表達(dá)式的混合運(yùn)算。
⒉ 考試要求
⑴理解關(guān)鍵字與標(biāo)識(shí)符的概念、應(yīng)用特點(diǎn),理解數(shù)據(jù)類(lèi)型的含義和常量、變量的分類(lèi)。⑵掌握各數(shù)據(jù)類(lèi)型的含義、特點(diǎn),不同類(lèi)型常量的表達(dá),不同類(lèi)型變量的定義和賦初值方法。
⑶熟練掌握各類(lèi)運(yùn)算符的含義、優(yōu)先級(jí),各類(lèi)表達(dá)式的表示方法、運(yùn)算特點(diǎn)、值的類(lèi)型和計(jì)算方法。能夠進(jìn)行各類(lèi)公式的表達(dá)式描述和各類(lèi)表達(dá)式的混合運(yùn)算。
二、順序結(jié)構(gòu)程序設(shè)計(jì) ⒈ 考試內(nèi)容
⑴輸入輸出:常用的輸入輸出函數(shù),基本的輸入輸出格式。⑵賦值語(yǔ)句:賦值語(yǔ)句功能和表達(dá)方法。
⑶順序程序設(shè)計(jì):編寫(xiě)順序結(jié)構(gòu)語(yǔ)句及程序。
⒉ 考試要求
⑴了解數(shù)據(jù)輸入輸出的概念以及在C語(yǔ)言中的實(shí)現(xiàn)方法。
⑵掌握賦值語(yǔ)句表達(dá)方法;掌握兩組輸入輸出函數(shù)的格式、表達(dá)方式和使用功能、特點(diǎn)。
⑶熟練掌握順序程序設(shè)計(jì)的思想和編程方法,能夠熟練編寫(xiě)簡(jiǎn)單問(wèn)題的程序并上機(jī)調(diào)試。
三、選擇結(jié)構(gòu)程序設(shè)計(jì) ⒈ 考試內(nèi)容
⑴條件的表達(dá)方式:算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式,各種運(yùn)算結(jié)果的表達(dá)與判別。
⑵條件語(yǔ)句:if語(yǔ)句、if~else語(yǔ)句、else~if結(jié)構(gòu)以及switch和break語(yǔ)句的使用方法。⑶選擇結(jié)構(gòu)程序設(shè)計(jì):編寫(xiě)帶有選擇結(jié)構(gòu)的語(yǔ)句及程序。⒉ 考試要求
⑴掌握問(wèn)題中條件的表達(dá)方式(關(guān)系表達(dá)式、邏輯表達(dá)式)和運(yùn)算結(jié)果。
⑵熟練掌握編程中條件的描述方法(用不同格式的if語(yǔ)句或switch語(yǔ)句)和使用方法,能夠進(jìn)行各種條件下的問(wèn)題的程序設(shè)計(jì)。
四、循環(huán)程序設(shè)計(jì) ⒈ 考試內(nèi)容
⑴循環(huán)語(yǔ)句: while、do~while和for語(yǔ)句的格式、循環(huán)條件的設(shè)置以及在循環(huán)結(jié)構(gòu)中使用break和continue語(yǔ)句。
⑵循環(huán)程序設(shè)計(jì):編寫(xiě)帶有循環(huán)結(jié)構(gòu)語(yǔ)句及程序。
⒉ 考試要求
⑴了解循環(huán)的概念,解決語(yǔ)句重復(fù)執(zhí)行的方法。
⑵理解各種實(shí)現(xiàn)循環(huán)的語(yǔ)句的執(zhí)行過(guò)程、執(zhí)行步驟和相關(guān)參數(shù)量的變化情況,理解break和continue的使用形式和理由。
⑶掌握循環(huán)語(yǔ)句的格式和應(yīng)用特點(diǎn),掌握循環(huán)程序設(shè)計(jì)的方法。
五、數(shù)組 ⒈ 考試內(nèi)容
⑴數(shù)組的概念:數(shù)組的概念、一維數(shù)組和二維數(shù)組。
⑵數(shù)組的使用:數(shù)組的定義、數(shù)組的初始化、數(shù)組元素的引用,數(shù)組的一般編程方法。⒉ 考試要求
⑴了解數(shù)組的基本概念。
⑵掌握不同類(lèi)別數(shù)組的特點(diǎn),掌握數(shù)組的定義、初始化和數(shù)組元素引用方法;掌握數(shù)組的實(shí)際應(yīng)用方式、特點(diǎn)和程序設(shè)計(jì)方法。
六、函數(shù) ⒈ 考試內(nèi)容
⑴函數(shù):函數(shù)定義的格式,包括類(lèi)型、參數(shù)及返回值。⑵存儲(chǔ)類(lèi)別:存儲(chǔ)類(lèi)別的含義、使用方法。
⑶函數(shù)的運(yùn)用:定義函數(shù)、調(diào)用函數(shù)、遞歸函數(shù)。⒉ 考試要求
⑴理解一般問(wèn)題的解決方法和程序的結(jié)構(gòu)化、模塊化設(shè)計(jì)思想,理解函數(shù)的調(diào)用方法,理解變量的數(shù)據(jù)類(lèi)型、存儲(chǔ)類(lèi)別,理解內(nèi)部函數(shù)與外部函數(shù)的含義。
⑵掌握函數(shù)定義的一般格式,掌握形式參數(shù)的表達(dá)方式,函數(shù)返回值類(lèi)型和返回值的表達(dá)方式,掌握函數(shù)調(diào)用的方法、特點(diǎn)和不同調(diào)用形式(嵌套調(diào)用、遞歸調(diào)用),掌握局部變量、全局變量的定義方法和聲明形式。
七、指針 ⒈ 考試內(nèi)容
⑴指針概念:指針的概念,指針的類(lèi)型、指針的分類(lèi)。
⑵指針的運(yùn)用:運(yùn)用指針處理變量、數(shù)組、字符串、函數(shù)等。⒉ 考試要求
⑴理解指針的概念、特點(diǎn),理解指針的分類(lèi)、指針的數(shù)據(jù)類(lèi)型描述。
⑵掌握指針的含義、不同類(lèi)型指針與所指變量、數(shù)組、字符串、函數(shù)等的內(nèi)在聯(lián)系。
八、預(yù)處理命令 ⒈ 考試內(nèi)容
⑴預(yù)處理概念:宏的含義,文件包含的含義。
⑵預(yù)處理的運(yùn)用:無(wú)參宏和有參宏,系統(tǒng)頭文件的加載。⒉ 考試要求
⑴理解預(yù)處理的含義和理由,理解文件包含的含義和宏的含義。⑵區(qū)分宏與函數(shù)的異同點(diǎn);掌握文件包含命令的使用方法。
九、結(jié)構(gòu)體與共用體 ⒈ 考試內(nèi)容
⑴結(jié)構(gòu)體與共用體的概念:結(jié)構(gòu)體的含義,共用體的含義。
⑵結(jié)構(gòu)體與共用體的運(yùn)用:結(jié)構(gòu)體與共用體的類(lèi)型聲明、初始化和引用。⒉ 考試要求
⑴了解C語(yǔ)言基本類(lèi)型與構(gòu)造類(lèi)型的含義,了解類(lèi)型聲明與變量等定義的區(qū)別。
⑵掌握結(jié)構(gòu)體、共用體、枚舉類(lèi)型的聲明方法和相應(yīng)變量等的定義、初始化、引用方法。
十、文件 ⒈ 考試內(nèi)容
⑴文件的概念:文件的定義、分類(lèi)和特點(diǎn)。
⑵文件的基本操作:文件打開(kāi)與關(guān)閉、文件讀/寫(xiě)操作,出錯(cuò)檢測(cè)。⒉ 考試要求
⑴了解文件的含義、分類(lèi)和特點(diǎn)。
⑵理解文件指針的使用方法,掌握文件打開(kāi)與關(guān)閉、文件讀寫(xiě)、文件定位和出錯(cuò)檢測(cè)函數(shù)的使用方法。
⑶掌握不同問(wèn)題使用文件的定義和操作方法。Ⅲ 考試形式及試卷結(jié)構(gòu)
一、考試形式
閉卷、筆試??荚嚂r(shí)間為120分鐘,試卷滿分為100分。
二、試卷內(nèi)容比例
數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式
約占10% 順序結(jié)構(gòu)程序設(shè)計(jì)、選擇結(jié)構(gòu)程序設(shè)計(jì)、循環(huán)程序設(shè)計(jì)、數(shù)組
約占60% 函數(shù)、指針
約占15% 預(yù)處理命令、結(jié)構(gòu)體與共用體、文件
約占15%
三、試卷題型比例 正誤判斷題
占10% 單項(xiàng)選擇題
占40% 綜合題(包括寫(xiě)程序結(jié)果、改正程序錯(cuò)誤和程序填空等)
占30% 編程題
占20%。
四、試卷難易度比例
試題按其難度分為容易、中等題、難題,三種試題分值的比例為4:4:2 Ⅳ.題型示例
一、正誤判斷題(每題1分,共10分)1. 算法就是程序。
二、單項(xiàng)選擇題(每題2分,共40分)1.下列數(shù)據(jù)中,為字符常量的是________。A)'My' B)“B” C)Yours D)'K'
三、綜合題(每題10分,共30分)1.閱讀程序?qū)懡Y(jié)果
#include
#define NULL 0
struct student{
long num;
float score;
struct student *next;
};
void main()
{
struct student a,b,c,*head, *p;
a.num=1;a.score=90.0;
b.num=2;b.score=95.0;
c.num=3;c.score=70.0;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do {
printf(“%d %5.1fn”,p->num,p->score);
p=p->next;
} while(p!=NULL);}
四、編程題(每題10分,共20分)
1.計(jì)算1至10000之間不能被3或5整除的整數(shù)之和。Ⅴ.參考書(shū)目
《C程序設(shè)計(jì)》(第三版),譚浩強(qiáng)編,清華大學(xué)出版社,2005年7 月 第3版。
第三篇:2011年計(jì)算機(jī)二級(jí)考試C語(yǔ)言程序設(shè)計(jì)考試大綱
2011年計(jì)算機(jī)二級(jí)考試C語(yǔ)言程序設(shè)計(jì)考試大綱
◆ 基本要求
1.GoShu8.Com熟悉 Visual C++ 6.0 集成開(kāi)發(fā)環(huán)境。
2.掌握結(jié)構(gòu)化程序設(shè)計(jì)的方法,具有良好的程序設(shè)計(jì)風(fēng)格。
3.掌握程序設(shè)計(jì)中簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)和算法并能閱讀簡(jiǎn)單的程序。
4.在 Visual C++ 6.0 集成環(huán)境下,能夠編寫(xiě)簡(jiǎn)單的C程序,并具有基本的糾錯(cuò)和調(diào)試程序的能力
◆ 考試內(nèi)容
一、C語(yǔ)言程序的結(jié)構(gòu)
1.程序的構(gòu)成,main函數(shù)和其他函數(shù)。
2.頭文件,數(shù)據(jù)說(shuō)明,函數(shù)的開(kāi)始和結(jié)束標(biāo)志以及程序中的注釋。
3.源程序的書(shū)寫(xiě)格式。
4.C語(yǔ)言的風(fēng)格。
二、數(shù)據(jù)類(lèi)型及其運(yùn)算
1.C的數(shù)據(jù)類(lèi)型(基本類(lèi)型,構(gòu)造類(lèi)型,指針類(lèi)型,無(wú)值類(lèi)型)及其定義方法。
2.C運(yùn)算符的種類(lèi)、運(yùn)算優(yōu)先級(jí)和結(jié)合性。
3.不同類(lèi)型數(shù)據(jù)間的轉(zhuǎn)換與運(yùn)算。
4.C表達(dá)式類(lèi)型(賦值表達(dá)式,算術(shù)表達(dá)式,關(guān)系表達(dá)式,邏輯表達(dá)式,條件表達(dá)式,逗號(hào)表達(dá)式)和求值規(guī)則。
三、基本語(yǔ)句
1.表達(dá)式語(yǔ)句,空語(yǔ)句,復(fù)合語(yǔ)句。
2.輸入輸出函數(shù)的調(diào)用,正確輸入數(shù)據(jù)并正確設(shè)計(jì)輸出格式。
四、選擇結(jié)構(gòu)程序設(shè)計(jì)
1.用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)。
2.用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。
3.選擇結(jié)構(gòu)的嵌套。
五、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
1.for循環(huán)結(jié)構(gòu)。
2.while和do-while循環(huán)結(jié)構(gòu)。
3.continue語(yǔ)句和break語(yǔ)句。
4.循環(huán)的嵌套。
第四篇:C語(yǔ)言程序設(shè)計(jì)考試系統(tǒng)
《C語(yǔ)言程序設(shè)計(jì)》考試系統(tǒng)
C language progamme design examination system
馬國(guó)富
劉波
(安陽(yáng)工學(xué)院 計(jì)算機(jī)工程系,河南 安陽(yáng)455000)
Ma GuoFu,liu bo
(Department of Computer Engineering,Anyang Institute of Technology,Anyang 455000)
一:摘要
這一考試系統(tǒng)是一種計(jì)算機(jī)輔助教學(xué)軟件,它包括教學(xué)模式,練習(xí)模式,考試模式。采用調(diào)用數(shù)據(jù)庫(kù)的方式打開(kāi),可以實(shí)現(xiàn)隨機(jī)選題和指定選題,而不是固定的試題。解決了由于教材更新和題庫(kù)更新導(dǎo)致教學(xué)軟件過(guò)時(shí)。大大提高了軟件的利用價(jià)值,打破了教學(xué)軟件內(nèi)容的固化,其次三種工作模式極大地拓寬了軟件的使用范圍,不再是單一的教師教學(xué)軟件或?qū)W生考試軟件??筛鶕?jù)教學(xué)需要靈活地選擇不同模式,同時(shí)少作修改即可用于其它課程。
系統(tǒng)解決了在多媒體教學(xué)中出現(xiàn)的模式僵化,內(nèi)容固化的問(wèn)題。更新教學(xué)內(nèi)容只需建立一個(gè)新的數(shù)據(jù)源實(shí)現(xiàn)連接即可。
Abstract
The test system of the principle is a Computer extended education software, and this course is also the compulsory course in High etc.school.This system include Teaching mode.Practice mode Examination mode.You can use database open the examination database That is to say the content is up to you or at random.It is the revolution of test system This is the main reason we develop it.二:關(guān)鍵詞
考試系統(tǒng)、多媒體技術(shù)、數(shù)據(jù)源、連接數(shù)據(jù)庫(kù)
keyword examination system、multimedia technology、data soure、connection of database 三:課題研究的意義和目的
安陽(yáng)工學(xué)院計(jì)科系畢業(yè)論文 2 3.1研究意義
現(xiàn)在,多媒體技術(shù)日趨成熟,多媒體系統(tǒng)以其能輸出精彩的圖形和圖像、美妙的聲音、動(dòng)感的畫(huà)面贏得了用戶和社會(huì)各界廣泛的關(guān)注和應(yīng)用。如果把按傳統(tǒng)考試方式同現(xiàn)代化的多媒體技術(shù)相結(jié)合,并且用多媒體著作工具及其它多媒體技術(shù),編制一套符合高??荚囆枨蟮南到y(tǒng)及其配套的多媒體教學(xué)軟件,利用多媒體技術(shù)生動(dòng)、直觀、形象展示信息的特點(diǎn),輔助教師授課和學(xué)生進(jìn)行考試,尤其對(duì)部分有限制性的實(shí)驗(yàn)環(huán)節(jié),可利用活動(dòng)視頻技術(shù)進(jìn)行展示,這將會(huì)解決一系列目前存在的問(wèn)題??傊?,該課題是在計(jì)算機(jī)輔助教學(xué)及考試上進(jìn)行的一次積極有意義的嘗試,為其他實(shí)踐性較強(qiáng)的課程進(jìn)行多媒體輔助教學(xué)開(kāi)辟一條新的路子,具有一定的理論和現(xiàn)實(shí)意義。
3.2目 的
傳統(tǒng)的考試手段主要依靠有紙?jiān)嚲?,幾乎沒(méi)有可重用性。本課題將實(shí)現(xiàn):用計(jì)算機(jī)輔助考試系統(tǒng),把多媒體生動(dòng)、直觀的顯示出來(lái),使學(xué)生不再將考試視為一種枯燥無(wú)味的東西,提高了考試效果,使學(xué)生在一種愉悅的心情中進(jìn)行考試,把枯燥的重復(fù)變?yōu)槌錆M樂(lè)趣、具有啟發(fā)性的考試過(guò)程,使學(xué)生能比較全面的學(xué)習(xí)知識(shí),掌握技能,達(dá)到素質(zhì)教育的要求。
四:系統(tǒng)流程圖設(shè)計(jì)
4.1 初始化流程設(shè)計(jì)
在使用Authorware創(chuàng)建任何多媒體項(xiàng)目的時(shí)候,都應(yīng)該先設(shè)置當(dāng)前項(xiàng)目文件的窗口大小,將其設(shè)置為“800×600”,然后選擇“演示居中屏幕”,同時(shí)取消對(duì)“顯示標(biāo)題欄”和“顯示菜單欄”復(fù)選框的選擇。
4.2 主界面的設(shè)計(jì)
本界面采用了Photoshop7.0圖形圖像處理軟件來(lái)繪制。為了避免界面的單調(diào)和呆板,用蒙版和濾鏡技術(shù)加以美化。該界面把Photoshop中的圖層技術(shù)、圖層蒙版技術(shù)、文字效果及濾鏡等功能完美的結(jié)合了起來(lái)。并且在底部設(shè)置了一個(gè)Flash動(dòng)畫(huà),增加視覺(jué)效果。
4.3背景音樂(lè)的交互控制
該多媒體教學(xué)以MIDI作為背景音樂(lè),背景音樂(lè)的交互控制包括背景音樂(lè)的隨機(jī)選曲播放、停止等功能,另外當(dāng)該教學(xué)程序處于活動(dòng)狀態(tài)時(shí),能夠隨時(shí)調(diào)整背景音樂(lè)和講解聲音的大小及比例,讓使用者在一種輕松悅耳的環(huán)境中考試(調(diào)出WINDOWS的音量控制實(shí)現(xiàn)),還能夠暫停背景音樂(lè),當(dāng)再次進(jìn)入活動(dòng)狀態(tài)時(shí)則能重新播放背景音樂(lè)。
為了充分考慮用戶計(jì)算機(jī)的不同配置情況,首先利用BUDAPI.U32的BASOUNDCARD函數(shù)判斷用戶機(jī)器是否已經(jīng)安裝了聲卡,如果已經(jīng)安裝則執(zhí)行背景音樂(lè)播放,否則不允許播放任何背景音樂(lè)操作.安陽(yáng)工學(xué)院計(jì)科系畢業(yè)論文 3 程序如下:
IF BASOUNDCARD()THEN MIDI:=1 TEST(MIDI,MIDILOOP(FILELOCATION^”MUSICMUSIC-”^RANDOM(1,5,1)^”.MID”),STOPMIDI())END IF 軟件中的背景音樂(lè)交互控制是通過(guò)交互響應(yīng)來(lái)實(shí)現(xiàn)的。在程序執(zhí)行過(guò)程中,用戶始終可以通過(guò)按鈕控制背景音樂(lè)的播放與暫停。在計(jì)算圖標(biāo)“播放音樂(lè)”后添加一交互圖標(biāo)并命名為“音樂(lè)控制”,并在交互圖標(biāo)右邊添加三個(gè)計(jì)算分支。設(shè)置“STOP/PLAY”分支為按鈕響應(yīng)交互,其功能是實(shí)現(xiàn)對(duì)背景音樂(lè)的控制。由于在整個(gè)程序執(zhí)行過(guò)程中它都是有效的,因此須設(shè)置其為永久按鈕,即選擇“PERPETUAL”屬性選項(xiàng),同時(shí)設(shè)置“ACTIVE IF”條件為:BASOUNDCARD(),即檢測(cè)到用戶沒(méi)有安裝聲卡的情況下該按鈕及響應(yīng)分支無(wú)效。
4.4內(nèi)容的導(dǎo)航設(shè)計(jì)
該多媒體教學(xué)涉及內(nèi)容繁多,不僅包括文本、圖片、聲音和動(dòng)畫(huà),而且還有其它多媒體工具與Authorware 配合,同時(shí),還把視頻文件導(dǎo)入,以增加實(shí)用性。為使用戶操作簡(jiǎn)單方便,設(shè)計(jì)了合理的教學(xué)內(nèi)容導(dǎo)航。主文件與各章節(jié)之間的導(dǎo)航設(shè)計(jì)根據(jù)結(jié)構(gòu)規(guī)劃中的該章節(jié)內(nèi)容的欄目劃分,在流程設(shè)計(jì)中為這些欄目設(shè)計(jì)了導(dǎo)航,如圖1為主程序內(nèi)容導(dǎo)航的設(shè)計(jì)流程圖。
圖1 主程序內(nèi)容導(dǎo)航
這樣的流程設(shè)計(jì)使整個(gè)主程序結(jié)構(gòu)清晰,可讀性強(qiáng)。由于該文件結(jié)構(gòu)是主-分結(jié)構(gòu),即主文件調(diào)用各章節(jié)模塊文件的方式,因此在主文件的章節(jié)內(nèi)容中實(shí)際存放的是一個(gè)起鏈接橋梁作用的調(diào)用腳
安陽(yáng)工學(xué)院計(jì)科系畢業(yè)論文 4 本,而具體的考試試題題型內(nèi)容則放在各章節(jié)的模塊文件內(nèi)。
4.5各模塊的內(nèi)容流程設(shè)計(jì)
圖中的考試模式、練習(xí)模式、教學(xué)模式及退出系統(tǒng)這四部分主要程序流程圖如下圖
2、圖
3、圖
4、圖5所示。
圖2
安陽(yáng)工學(xué)院計(jì)科系畢業(yè)論文 5
圖3
圖4
圖5
安陽(yáng)工學(xué)院計(jì)科系畢業(yè)論文 6 看每題的回答情況.最后回到選題主界面,并把學(xué)生所做的答案成績(jī)保存到數(shù)據(jù)庫(kù)中。
當(dāng)用戶在主界面中,選擇了“考試模式”后,系統(tǒng)就會(huì)進(jìn)入到登錄界面系統(tǒng)會(huì)提示輸入用戶名和密碼,當(dāng)輸入后,點(diǎn)擊“確定”后,系統(tǒng)將會(huì)進(jìn)入到題型選擇界面。在提示框中輸入用戶名和密碼,我們點(diǎn)擊“確定”后,就會(huì)進(jìn)入到正式的單選題型界面中,選擇“單選題”單擊。
C語(yǔ)言程序設(shè)計(jì)考試系統(tǒng)的選擇題從數(shù)據(jù)庫(kù)中取出選擇題,在一個(gè)界面上顯示。利用三個(gè)熱區(qū)域交互按鈕“上一題”“下一題,”“完成”,按鈕和四個(gè)熱區(qū)域設(shè)置計(jì)算圖標(biāo)用來(lái)記錄學(xué)生所選擇的答案。在學(xué)生選擇“完成”后,彈出學(xué)生做題的情況界面,然后回到選題主界面,并把學(xué)生所做的答案成績(jī)保存到數(shù)據(jù)庫(kù)中。
5.1“未命名”用來(lái)擦除以前的圖像
5.1.1 打開(kāi)“未命名”的屬性,進(jìn)入“未命名”的屬性窗口。
5.1.2在“屬性窗口”中單擊擦除標(biāo)簽在設(shè)置過(guò)渡效果進(jìn)行設(shè)置 5.1.3單擊“確定”按鈕
5.2 設(shè)置“單選界面”插入一個(gè)圖像
5.2.1雙擊“單選界面”圖標(biāo)進(jìn)入顯示圖標(biāo)窗口
5.2.2單擊 繪圖工具箱 圖標(biāo)進(jìn)行繪制一個(gè)和窗口矩形一樣大的矩形
5.2.3設(shè)置矩形的顏色為“綠色”
5.2.4單擊顯示圖標(biāo)窗口的關(guān)閉按鈕,關(guān)閉保存對(duì)“單選界面”的設(shè)置 5.3 設(shè)置交互“進(jìn)入”
5.3.1在交互圖標(biāo)的右邊拖放一個(gè)群組“單選” 5.3.2設(shè)置單選的熱區(qū)為“按鈕“ 5.3.3單擊確定后,雙擊“選擇”。
5.3.3.1“未命名”用來(lái)擦除上次運(yùn)行的圖形 5.3.3.2在“打開(kāi)數(shù)據(jù)庫(kù)”的輸入如下源程序:
安陽(yáng)工學(xué)院計(jì)科系畢業(yè)論文 7 hint0:=“您的數(shù)據(jù)庫(kù)沒(méi)有連接上......”--顯示連接數(shù)據(jù)庫(kù)的信息 title:=“數(shù)據(jù)庫(kù)連接....” ODBChandle:=ODBCOpen(WindowHandle,“",”database“,”“,”“)--得到數(shù)據(jù)源
getrecord:=”select count(sequence)from erigister“--得到記錄的個(gè)數(shù) record:=ODBCExecute(ODBChandle,getrecord)if ODBChandle=0 then--測(cè)試連接數(shù)據(jù)庫(kù)是否連接成功 MessageBox(WindowHandle,hint0,title,17)end if ODBCClose(ODBChandle)ODBChandle:=ODBCOpen(WindowHandle,”“,”database“,”“,”“)if ODBChandle=0 then MessageBox(WindowHandle,hint0,title,17)end if sqlstring1:=”select ssdb from erigister where sequence=“^record^”“-從表中選擇單選庫(kù)表題 ssdatabase:=ODBCExecute(ODBChandle,sqlstring1)getrecord:=”select count(sequence)from “^ssdatabase^”“ record:=ODBCExecute(ODBChandle,getrecord)--ssdb數(shù)據(jù)庫(kù)的記錄個(gè)數(shù),以便產(chǎn)生隨機(jī)數(shù) sssum:=0 number1:=1 sui:=[] sui[1]:=Random(1,record,1)--下面程序用來(lái)產(chǎn)生一個(gè)隨機(jī)數(shù)不能出現(xiàn)相同的題目 i:=2 repeat while i<=record flag:=0 repeat while flag=0 sui[i]:=Random(1,record,1)flag1:=0 repeat with p:=1 to i-1 if sui[i]=sui[p] then flag1:=1 end repeat if flag1=0 then flag:=1 end repeat i:=i+1 end repeat
5.3.3.3 在“做選擇的背景”顯示圖標(biāo)中設(shè)計(jì)單選題的界面如上圖5.4 5.3.3.4 在“數(shù)據(jù)庫(kù)的操作”中輸入如下代碼:在這里,我們就要實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的隨機(jī)讀取和跟蹤答案的長(zhǎng)短來(lái)選擇界面
x:=0 ran:=sui[number1] result:=”“ record1:=Number(record)
安陽(yáng)工學(xué)院計(jì)科系畢業(yè)論文 8 record:=record1--得到記錄的個(gè)數(shù)
sqlstring1:=”select topic from “^ssdatabase^” where sequence=“^ran^”“分別得到選擇題各項(xiàng) sqlstring2:=”select a from “^ssdatabase^” where sequence=“^ran^”“ sqlstring3:=”select b from “^ssdatabase^” where sequence=“^ran^”“ sqlstring4:=”select c from “^ssdatabase^” where sequence=“^ran^”“ sqlstring5:=”select d from “^ssdatabase^” where sequence=“^ran^”“ sqlstring6:=”select result from “^ssdatabase^” where sequence=“^ran^”“ get1:=ODBCExecute(ODBChandle,sqlstring1)--get1得到選擇題目?jī)?nèi)容 get2:=ODBCExecute(ODBChandle,sqlstring2)--get2得到選擇項(xiàng)A內(nèi)容 get3:=ODBCExecute(ODBChandle,sqlstring3)--get3得到選擇項(xiàng)B內(nèi)容 get4:=ODBCExecute(ODBChandle,sqlstring4)--get4得到選擇項(xiàng)C內(nèi)容 get5:=ODBCExecute(ODBChandle,sqlstring5)--get5得到選擇項(xiàng)D內(nèi)容 get6:=ODBCExecute(ODBChandle,sqlstring6)--get6得到選擇題的答案 inputa:=1--用來(lái)設(shè)置熱區(qū)域的激活條件
5.3.3.5 空“操作”用來(lái)設(shè)置跳轉(zhuǎn)標(biāo)志
5.3.3.6
在交互圖標(biāo)右邊拖入四個(gè)熱區(qū)域
在計(jì)算圖標(biāo)中從左到右的四個(gè)計(jì)算圖標(biāo)中輸入: result:=”A“ result:=”b“ result:=”c“ result:=”d"在交互屬性中設(shè)置激活條件為inputa=1: ,鼠標(biāo)指針設(shè)置為標(biāo)準(zhǔn)鼠標(biāo)指針,其它的為默認(rèn)設(shè)置.其中result變量用來(lái)記錄用戶所選的答案.5.3.3.7拖一個(gè)交互圖標(biāo)“未命名”在它的右邊拖兩個(gè)計(jì)算圖標(biāo)為“上一題”和“下一題”,再拖一個(gè)群組“完成”放在“下一題”右邊,設(shè)置熱區(qū)為按鈕。在“上一題”的激活條件中輸入number1>1,鼠標(biāo)指針設(shè)置為:標(biāo)準(zhǔn)的鼠標(biāo)指針。在“下一題”的激活條件中輸入:number1 六 結(jié)束語(yǔ) 根據(jù)對(duì)教師上課時(shí)課堂練習(xí)的分析,開(kāi)發(fā)出該考試系統(tǒng),主要是能夠方便課堂練習(xí),同時(shí)還可用于期中期末測(cè)試,該系統(tǒng)主要是針對(duì)《C語(yǔ)言程序設(shè)計(jì)》課程來(lái)設(shè)計(jì)的。對(duì)該系統(tǒng)做簡(jiǎn)單修改,即可用于其它課程。 參考文獻(xiàn) 專著:王嘉寧 朱雋著 《Photoshop7.0中文版新概念百例》[M] 中國(guó)水利水電出版社 2004年4月 專著:龔祥國(guó)主編 《Photoshop圖像處理實(shí)用教程》[M] 科學(xué)出版社 2002年 2月 專著: 王龍 金海主編 《Flash MX實(shí)戰(zhàn)入門(mén)新概念》[M] 中國(guó)水利水電出版社 2005年5月 專著: 李恒著《Authorware 6.0多媒體實(shí)例大制作》[M] 冶金工業(yè)出版社 2002 年4月 專著: 袁海東著《Authorware 7.0教程 》[M] 電子工業(yè)出版社 2004年9月 專著: 郝蕾蕾著 《Authorware課件制作》[M] 中國(guó)水利水電出版社 2001年7月 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)類(lèi)型的輸入、輸出和算術(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ù)類(lèi)型轉(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類(lèi)型內(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類(lèi)型的表示范圍。 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類(lèi)型的正整數(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類(lèi)型的。 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類(lèi)型范圍內(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];第五篇:C語(yǔ)言程序設(shè)計(jì)