




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
程序設(shè)計與實踐
2海第二I殳大學(xué)
2015年2月使用
目錄
實習(xí)要求及時間安排3
成績評定3
實驗內(nèi)容4
文檔格式12
2012年二級考C大綱16
2004年全真考題21
2005年全真考題28
2006年全真考題34
2007年全真考題40
2008年全真考題46
2009年全真考題51
2010年全真考題(B)58
2010年全真考題(C)65
2010年全真考題(E)72
2011年全真考題(A)80
2011年全真考題(B)93
2012年全真考題105
補充知識112
實習(xí)要求及時間安排
《程序設(shè)計與實踐》課程實習(xí)為分散進行,共16周。
前8周為課程實習(xí);課程實習(xí)要求完成六個程序。要求所有程序按模塊化設(shè)計,
結(jié)構(gòu)清晰,能夠獲得最終結(jié)果,并提交實驗報告(格式見后)。
后8周為參加上海市高等學(xué)校計算機等級考試(二級)《C程序設(shè)計》考前輔導(dǎo)。
通過輔導(dǎo)和5?6月份的考試報名(請關(guān)注校園網(wǎng)通知),參加每年10月最后一個
星期六或11月第一個星期六考試院組織的統(tǒng)一考試,獲取優(yōu)秀或合格證書。
成績評定
本課程的總評成績評定標(biāo)準(zhǔn)為:
總評成績=60%實習(xí)課程成績+40%上海市二級考成績
一般上海市二級考成績不低于45分才能總評合格,該最低成績視當(dāng)年上海市二
級考合格率做調(diào)整(上海市二級考合格率在50?60%波動)。
實驗內(nèi)容
實驗一:個人資金賬戶管理
編程實現(xiàn)資金賬戶的管理,具體要求如下。
1,資金賬戶的信息統(tǒng)一放在隨機文件中,該隨機文件包括的數(shù)據(jù)項有記錄ID、
發(fā)生日期、發(fā)生事件、發(fā)生金額(正的表示收入,負(fù)的表示支出)和金額。每發(fā)
生一筆收支,文件要增加一條記錄,并計算一次余額。,
2,程序?qū)崿F(xiàn)3個功能,包括:(1),能創(chuàng)建資金賬戶文件并添加收入或支出信息
記錄;(2),能顯示所有記錄,得知資金賬戶的收支流水賬;(3),能查詢最后一
條記錄,獲知賬戶最后的余額。賬戶文件名命名為cashbox.dat,文件部分內(nèi)容如
下;
3,增加修改資金賬戶的功能。輸入一個記錄ID,如果文件中已存在該記錄,則輸
入新的記錄信息并更新資金賬戶文件中相應(yīng)記錄的信息。要求定義和調(diào)用函數(shù)
UpdateLog()淇功能是修改資金賬戶記錄。
LongIDCreateDateNoteChargeBalance
12006-06-01alimony500.00500.00
22006-06-08shopping-300.00200.00
32006-06-15shopping-60.00140.00
42006-06-20workingpay200.00340.00
52006-08-01scholarship1000.001340.00
部分參考源代碼:
/*crashbox.dat是隨機文件,記錄資金帳戶消費流水帳記錄信息*/
/*程序的功能:添加新流水帳記錄,查詢資金帳戶最后記錄*/
#include"stdio.h"
#include"stdlib.h"
longsize;/*當(dāng)前最近一次的流水號*/
structLogData{/*記錄的結(jié)構(gòu)*/
longlogid;/*記錄ID*/
charlogdate[ll];/*記錄發(fā)生日期*/
charlognote[15];/*記錄事件說明*/
doublecharge;/*發(fā)生費用:負(fù)表示支出,正表示收入*/
doublebalance;/*余額*/
);
intinputchoice()/*選擇操作參數(shù)*/
{
intmychoice;
printf("\nEnteryourchoice:\n");
printf(n1-AddanewcashL0G.\n2-ListAllCashLOG.\nn);
printf("3-QueryLastCashLOG.\nO-Endprogram.\nn);
M
scanf("%d?&mychoice);
returnmychoice;
}.
longgetLogcount(FILE*cfptr)/*獲取文件記錄總數(shù)*/
(
longbegin,endjogcount;
fseek(cfptr,OL,SEEK_SET);
begin=ftell(cfptr);
fseek(cfptr,size,SEEK_END);
end=ftell(cfptr);
logcount=(end-begin)/size-1;
returnlogcount;
}
voidListAllLog(FILE*cfptr)/*列出所有收支流水帳*/
(-
structLogDatalog;
fseek(cfptr,OL,SEEK_SET);/*定位指針到文件開始位置*/
fread(&log,size,1,cfptr);
printf("logidlogdatalognotechargebalance\nn);
while(!feof(cfptr)){
printf(n%61d%-lls%-15s%1021f%10.21f\nn,
log.logid,log.logdata?log.lognotejog.chargge,log.balance);
fread(&log.size9l,cfptr);
};
)
voidQueryLastLog(FILE*clptr)/*查詢顯示最后一條記錄*/
{.
structLogDatalog;
longlogcount;
logcount=getLogcount(cfptr);
if(logcount>0)/*表示有記錄存在*/
(一
fseek(cfptr?size*(logcount-1),SEEK_SET);/*定位最后記錄*/
fread(&log,size,1,cfptr);/*讀取最后記錄*/
printf(nThelastlogis:\nn);
printf(nlogid:%-61d\nlogdata:%-11s\nlognote:%-15s\nn,
log.logidjog.logdatajog.lognote);
printf("charge:%-10.21f\nbalance:%-10.21f\n"?
log.chargejog.balance);/*顯示最后記錄內(nèi)容*/
elseprintf(nnologsinfile!\nn);
voidAddNewLog(FILE*c^)tr)/*添加新紀(jì)錄*/
(
structLogDatalogjastlog;
longlogcount;
printf(nInputlogdate(format:2006-01-01):");
scanf("%sn,log.logdate);
printf(nInputlognote:");
nn
scanf(%s?log.lognote);
printf("InputCharge:Income+andexpend-:");
scanf("%lf\&log.charge);
logcount=getLogcount(cfptr);/*獲取記錄數(shù)*/
if(logcount>0){
fseek(cfptr,size*(logcount-l),SEEK_SET);
fread(&lastlog,size,1,cfptr);/*讀入最后記錄*/
log.logid=lastlog.logid+l;/*記錄號按順序是上次的+1*/
log.balance=log.charge+lastlog.balance;
)
else{/*如果文件是初始狀態(tài),記錄數(shù)為0*/
log.logid=l;
log.balance=log.charge;
)一
rewind(cfptr);
printf(,,logid=%ld\n,,Jog.logid);
fwrite(&log.sizeof(structLogData),l,cfptr);/*寫入記錄*/
}
FILE*openfile(char*openmode)/*打開文件*/
(
FILE*中;
nn
if((fp=fopen(cashbox.dat?openmode))==NULL){
printf(ncannotopenfilecashbox.dat!\nn);
exit(0);
)
return(fp);
)
intmain(void)
FILE*巾;
intchoice;
size=sizeof(structLogData);
while((choice=inputchoice())!=0){
switch(choice){
easel:
幣=openfile(“ab+”);
AddNewLog(fp);
break;
case2:/*列出所有的收入支出情況*/
fp=openfile("rbn);
ListAllLog(fp);
break;
case3:/*查詢最后記錄及余額*/
^)=openfile(nrbn);
QueryLastLog(^));
break;
default:
printf("InputError.");
break;
)
)
if(fclose(fp)){
printf(nCannotclosethefile!\nn);
exit(0);
)
return0;
)
實驗二自動售貨機
下圖所示為簡易自動售貨機,物品架1、2上共有10樣商品,按順序進行編
號分別為1?10,標(biāo)有價格與名稱,一個編號對應(yīng)一個可操作按鈕,供選擇商品使
用。如果物品架上的商品被用戶買走,儲物柜中會自動取出商品送到物品架上,
保證物品架上一定會有商品。用戶可以一次投入較多錢幣,并可以選擇多樣商品,
售貨機可以一次性將商品輸出并找零錢。
用戶購買商品的操作方法如下。
(1)從“錢幣入口”放入錢幣,依次放入多個硬幣或紙幣。錢幣可支持1元(紙
幣、硬幣)、2元(紙幣)、5元(紙幣)、10元(紙幣),放入錢幣時,控制器會先對錢
幣進行檢驗以識別出幣值,并統(tǒng)計幣值總額,顯示在控制器顯示屏中,提示用戶
確認(rèn)錢幣放入完畢。
(2)用戶確認(rèn)錢幣放入完畢,便可選擇商品,只要用手指按對應(yīng)商品外面的
編號按鈕即可。每選中一樣商品,售貨機控制器會判斷錢幣是否足夠購買,如果
錢幣足夠,自動根據(jù)編號將物品進行計數(shù)和計算所需錢幣值;如果錢幣不足,則
結(jié)束購物。
請為自動售貨機編程,輸入錢幣值序列,以-1作為結(jié)束,依次輸入多個購買
商品編號,若編號超出范圍或余額不足則輸入結(jié)束,輸出錢幣總額與找回零錢,
以及所購買商品名稱及數(shù)量。
輸入輸出示例:
輸入:
1122551010-1/*錢幣序列*/
123516910-1/*物品編號*/
輸出:
Total:36yuan,change:19yuan
Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;
實驗三:自動寄存柜
某超市門口的自動寄存柜有n個寄存箱,并且有一個投幣控制器,顧客想要
寄存小件物品時,只要在投幣控制器中投入一個1元硬幣,如果此時有空閑的箱
子,寄存柜就會自動打開一個空的箱子,并且打印輸出一張小小的密碼紙條;如
果沒有空閑的箱子,則提示“本柜已滿”。當(dāng)顧客離開超市時,用密碼紙條上指
定的數(shù)字密碼依次輸入到開箱控制器,則顧客所存包的箱子門就會自動打開,顧
客取走物品后,關(guān)上門。
輸入數(shù)據(jù)時,可先輸入寄存箱總數(shù)n,再由用戶選擇是“投硬幣”還是“輸
密碼”。
如果選擇“投硬幣”,則只有硬幣值是1時才開箱。如果有空閑的箱子,則
輸出箱子編號及密碼(4位數(shù)字);如果無空閑的箱子,則提示“本柜已滿”。
如果選擇“輸密碼”,若輸入的密碼與某一箱子密碼相符,則顯示打開的箱
子編號,否則輸出提示“密碼錯誤”。
請編寫開箱控制程序?qū)崿F(xiàn)上述過程。
輸入輸出示例:
寄存箱總數(shù):10
1.投硬幣2.輸密碼0.退出請選擇:1
投幣值:1
寄存箱編號:1密碼:9342
L投硬幣2.輸密碼0.退出請選擇:2
輸入密碼:9342
1號寄存箱已打開
L投硬幣2.輸密碼0.退出請選擇:0
結(jié)束
實驗四:停車場管理
設(shè)有一個可以停放n輛汽車的狹長停車場,它只有一個大門供車輛進出。車
輛按到達(dá)停車場時間的先后次序依次從停車場最里面向大門口處停放(即最先到
達(dá)的一輛車停放在停車場的最里面)。如果停車場已放滿n輛車,則以后到達(dá)的
車輛只能在停車場大門外的便道上等待,一旦停車場內(nèi)有車開走,則排在便道上
的第一輛車可以進入停車場。停車場內(nèi)如有某輛車要開走,則在它之后進入停車
場的車都必須先退出停車場為它讓路,待其開出停車場后,這些車輛再依原來次
序進場。每輛車在離開停車場時,都應(yīng)根據(jù)它在停車場內(nèi)停留的時間長短交費,
停留在便道上的車不收停車費。編寫程序?qū)υ撏\噲鲞M行管理。
輸入數(shù)據(jù)時,先輸入一個整數(shù)n(n<=10),再輸入若干組數(shù)據(jù),每組數(shù)據(jù)包括3
個數(shù)據(jù)項:汽車到達(dá)或離開的信息(A表示到達(dá)、D表示離開、E表示結(jié)束)、汽車
號碼、汽車到達(dá)或離開的時刻。當(dāng)輸入“E00”時程序結(jié)束。
若有車輛到達(dá),則輸出該汽車的停車位置;若有車輛離開,則輸出該汽車在
停車場內(nèi)停留的時間。
輸入輸出示例
3
Al1
1號車停入1號位
A22
2號車停入2號位
A33
3號車停入3號位
D14
1號車出停車場,停留時間3
A45
4號車停入3號位
A56
5號車在便道上等待
D47
4號車出停車場,停留時間2
5號車停入3號位
D58
5號車出停車場,停留時間1
E00
實驗五;學(xué)生成績管理
設(shè)計一個菜單驅(qū)動的學(xué)生成績管理程序,管理n個學(xué)生的m門考試科目成
績,實現(xiàn)以下基本功能。
(1)能夠新增學(xué)生信息,并計算總分和平均分。
(2)能夠根據(jù)學(xué)號修改和刪除某學(xué)生信息。
(3)能夠顯示所有學(xué)生的成績信息。
(4)能夠分別按總分和學(xué)號進行排序。
(5)能夠根據(jù)學(xué)號查詢該學(xué)生的基本信息。
(6)學(xué)生成績數(shù)據(jù)最終保存在文件中,能夠?qū)ξ募x、寫學(xué)生數(shù)據(jù)。
程序運行時,菜單形式如下。
ManagementforStudents'sscores
1.Appendrecord
2.Listrecord
3.Deleterecord
4.Modifyrecord
5.Searchrecord
6.Sortindescendingorderbysum
7.Sortinascendingorderbysum
8.Sortindescendingorderbynum
9.Sortinascendingorderbynum
W.WritetoaFile
R.ReadfromaFile
O.Exit
Pleaseinputyourchoice:
要求用模塊化方式組織程序結(jié)構(gòu),合理設(shè)計各個自定義函數(shù)。同時,程序能
夠進行異常處理,檢查用戶輸入數(shù)據(jù)的有效性,在用戶輸入數(shù)據(jù)有錯誤(如類型
錯誤)或無效時,不會中斷程序的執(zhí)行,程序具有一定的健壯性。
實驗六:完美的代價
回文串是一種特殊的字符串,它從左往右讀和從右往左讀是一樣的,有人認(rèn)
為回文串是一種完美的字符串。現(xiàn)在給出一個字符串,它不一定是回文的,請計
算使得該字符串變成一個回文串的最少交換次數(shù)。這里的交換指將字符串中兩個
相鄰的字符互換位置。
例如所給的字符串為mamad,第一次交換a和d,得到mamda;第二次交換m
和d,得至Umadma;第三次交換最后面的m和a,得至Umadam□
編寫程序,從鍵盤讀入數(shù)據(jù)。第一行是一個整數(shù)N(N<=80),表示所給字符串
的長度,第二行是所給的字符串,長度為N且只包含小寫英文字母。如果所給
字符串能經(jīng)過若干次交換變成回文串,則輸出所需的最少交換次數(shù);否則,輸出
Impossibleo
輸入輸出示例1
5
mamad
3
輸入輸出示例2
6
aabbcd
Impossible
實驗思考題:值班安排
醫(yī)院有A、B、C、D、E、F、G共7位大夫,在一星期內(nèi)(星期一至星期天)
每人要輪流值班一天,如果已知如下信息。
(1)A大夫比C大夫晚1天值班。
(2)D大夫比E大夫晚1天值班。
(3)E大夫比B大夫早2天值班。
(4)B大夫比G大夫早4天值班。
(5)F大夫比B大夫晚1天值班。
(6)F大夫比C大夫早1天值班。
(7)F大夫星期四值班。
就可以確定周一直至周日的值班人員分別為:E,D,B,F,C,A,G。
編寫程序,根據(jù)輸入的條件,輸出星期一到星期天的值班人員。
輸入數(shù)據(jù)時,先輸入一個整數(shù)n,再輸入n組條件,要求能夠根據(jù)輸入的條
件確認(rèn)唯一的值班表,且輸入的n組條件中能夠直接或間接得到任意兩位大夫的
關(guān)聯(lián)聯(lián)系,例如上面的條件(2)直接顯示了D與E間的關(guān)系,而通過條件(1)(6)(5)
可以間接得到A與B的關(guān)系。
條件的輸入格式有以下兩種。
格式1:編號比較運算符編號天數(shù)
其中比較運算符有兩種:〉或<,分別表示“早”和“晚工
例如,A<C1表示A大夫比C大夫晚1天值班。
格式2:編號=數(shù)值
例如,F(xiàn)=4表示:F大夫在星期四值班。
輸入輸出示例
7
A<C1
D<E1
E>B2
B>G4
F<B1
F>C1
F=4
EDBFCAG
文檔格式
每個程序均需獨立完成相應(yīng)的實驗文檔,打包提交。包括:
實驗報告,程序源代碼,EXE可執(zhí)行程序
打包文檔名稱:班級—學(xué)號—姓名—實驗號
其中:班級前二位為中文后跟大寫字母A和一位數(shù)字,如:計算A1
學(xué)號和姓名需寫完整
實驗號按實驗順序如下:實驗一、實驗二、……
注意各部分連接用下劃線,不得有空格
各程序名稱按Pl、P2、……、P6順序命名
實驗報告模板如下:
程序設(shè)計與實踐
實驗報告
實驗一:個人資金賬戶管理
姓名:XXX
學(xué)號:XXX
班級:XXX
實驗時間:2015/xx/xx-2015/xx/xx
一:實驗名稱:個人資金賬戶管理
注:每個實驗名稱需對應(yīng)
二:實驗環(huán)境:一臺安裝有VC6.0程序的電腦。
三:實驗?zāi)康?/p>
(1)培養(yǎng)和鍛煉對具有一定復(fù)雜度和規(guī)模的問題的分析與求解能力。
(2)掌握程序設(shè)計的綜合方法,能綜合應(yīng)用各種數(shù)據(jù)類型實現(xiàn)較復(fù)雜數(shù)據(jù)的存儲。
(3)培養(yǎng)良好的C程序設(shè)計風(fēng)格與代碼規(guī)范意識。
四:實驗內(nèi)容:
注:此處請按實驗要求改寫,語句精煉。說明實驗題的內(nèi)容及基本要求。
五:實驗步驟:(實驗設(shè)計,關(guān)鍵代碼。實驗結(jié)果需截圖)
注:此處請注意寫出程序設(shè)計思路,各功能模塊的實現(xiàn)算法描述,對
所附關(guān)鍵代碼要注釋,寫明使用的實驗數(shù)據(jù)及測試結(jié)果,并對運行結(jié)
果給出截圖。截圖方法:使用Alt+PrtSc鍵獲得窗口的截圖,粘貼即
可。
六:實驗<1、結(jié):(主要介紹程序的完成情況,重點、難點以及解決方法,有
待改進之處,以及有何收獲,體會等)
注:辛辛苦苦做好,總會有些體會想說,除非不是你親手完成。不要
空白哦!
2012年二級考C大綱
上海市高等學(xué)校計算機等級考試(二級)《c程序設(shè)計》考試大綱
(2012年修訂)
一、考試性質(zhì)
上海市高等學(xué)校計算機等級考試是上海市教育委員會組織的全市高校統(tǒng)一的教學(xué)考試,
是檢測和評價高校計算機應(yīng)用基礎(chǔ)知識教學(xué)水平和教學(xué)質(zhì)量的重要依據(jù)之一。該項考試旨在
規(guī)范和加強上海高校非計算機專業(yè)的計算機教學(xué)工作,提高非計算機專業(yè)學(xué)生的計算機應(yīng)用
能力??荚噷ο笾饕巧虾8叩葘W(xué)校非計算機專業(yè)學(xué)生,考試每年舉行一次,當(dāng)年的十月下
旬、十一月上旬的星期六或星期日。凡考試成績達(dá)到合格者或優(yōu)秀者,由上海市教育委員會
頒發(fā)相應(yīng)的證書。
本考試由上海市教育委員會統(tǒng)一領(lǐng)導(dǎo),聘請有關(guān)專家組成考試委員會,委托上海市教育
考試院組織實施。
二、考試目標(biāo)
C語言是當(dāng)前常用的一種簡潔、高效、功能豐富的程序設(shè)計語言,是理工科大學(xué)生學(xué)習(xí)
計算機編程能力、理解計算機解決問題的方法的重要工具。學(xué)生通過該課程的學(xué)習(xí),應(yīng)能了
解、掌握c語言的語法和使用它進行編程的方法,并能上機調(diào)試運行解決簡單實際問題。
《C程序設(shè)計》的考試目標(biāo)是測試考生掌握C語言知識的程度和綜合運用語言知識進行
程序設(shè)計的能力。
三、考試細(xì)則
考試采用基于網(wǎng)絡(luò)環(huán)境的無紙化上機考試系統(tǒng)??荚嚂r間為120分鐘。試卷總分為100
分。
試題由四部分組成:單選題、程序調(diào)試題、程序填空題和綜合編程題。試卷從局域網(wǎng)的
服務(wù)器下載、考試結(jié)果上傳到服務(wù)器,若不按照要求上傳到服務(wù)器,則考試無效??荚囬喚?/p>
采用機器和人工相結(jié)合的網(wǎng)上閱卷方式。
四、試卷參考樣式
序號題型題量計分考核目標(biāo)
基本概念
一單選題10題15分
語義知識
常用算法
二程序填空題2題20分程序理解
程序設(shè)計
基本語句
三程序調(diào)試題3題30分程序調(diào)試
程序設(shè)計
常用算法
四編程題2題35分
綜合應(yīng)用
合計17題100分
五、考試內(nèi)容和要求
序
內(nèi)容要點和考點要求
號
C程序的組成、結(jié)構(gòu)
1
及書寫規(guī)則
.預(yù)處理命令理解
C語言源程序結(jié)構(gòu).外部數(shù)據(jù)定義知道
?函數(shù)main和其它函數(shù)定義
理解
.基本詞法單位、標(biāo)識符/常量/運算符等構(gòu)成規(guī)則理解
程序的書寫格式
?程序的書寫格式與風(fēng)格知道
.VC編程環(huán)境的操作使用掌握
C語言程序設(shè)計步驟
.程序的編輯/編譯/連接/調(diào)試/運行掌握
2基本數(shù)據(jù)類型
C語言數(shù)據(jù)類型
.基本類型、數(shù)組、結(jié)構(gòu)、指針類型、空類型掌握
.常量和變量掌握
C語言常量.整型、實型(單/雙精度)、字符型和字符串常量的表示
理解
方法
C語言變量和C語言?各種類型變量的定義和說明掌握
基本數(shù)據(jù)類型.變量的初始化掌握
3基本運算和表達(dá)式
運算符?運算符種類、功能、目數(shù)、優(yōu)先級、結(jié)合性和副作用理解
算術(shù)運算?自動類型轉(zhuǎn)換規(guī)則掌握
?關(guān)系和邏輯運算規(guī)則掌握
關(guān)系和邏輯運算
?邏輯運算的優(yōu)化規(guī)則理解
位運算?位運算規(guī)則和簡單位運算知道
.賦值運算中自動類型轉(zhuǎn)換規(guī)則(以左值類型為準(zhǔn)轉(zhuǎn)換)掌握
賦值運算
?復(fù)合賦值理解
其他運算?條件、逗號、求存儲空間大小運算知道
.表達(dá)式組成規(guī)則、各類表達(dá)式理解
.描述計算過程/條件判斷的表達(dá)式理解
表達(dá)式.各類型數(shù)據(jù)混合運算中求值順序掌握
.表達(dá)式運算中的隱式類型轉(zhuǎn)換和強制類型轉(zhuǎn)換
理解
.基本運算執(zhí)行順序、表達(dá)式結(jié)果類型
掌握
4語句
基本語句及順序結(jié)?定義/說明語句,表達(dá)式語句,空語句,復(fù)合語句、函數(shù)
構(gòu)語句調(diào)用語句掌握
?描述條件和情況的if,switch語句、
選擇結(jié)構(gòu)語句
?選擇語句嵌套掌握
?描述循環(huán)執(zhí)行的while,do-while,for語句
循環(huán)結(jié)構(gòu)語句
?循環(huán)語句嵌套掌握
?改變程序流程執(zhí)行次序的break,continue,return語
轉(zhuǎn)移語句
句掌握
5數(shù)組
一維數(shù)組?一維數(shù)組定義、引用和初始化掌握
二維數(shù)組.二維數(shù)組定義、引用和初始化掌握
?字符數(shù)組定義、引用和初始化掌握
字符數(shù)組和字符串
?字符串結(jié)束標(biāo)志、初始化、字符串處理函數(shù)
理解
6函數(shù)定義和調(diào)用
.函數(shù)原型、函數(shù)名、形式參數(shù)、函數(shù)返回值、函數(shù)體一一
函數(shù)的定義方法
函數(shù)執(zhí)行過程的描述掌握
函數(shù)類型和返回值.不同類型函數(shù)定義、缺省類型、空類型理解
函數(shù)傳值調(diào)用?形參、實參及其參數(shù)單向傳遞掌握
.函數(shù)原型及作用理解
函數(shù)說明?用戶定義函數(shù)說明理解
?系統(tǒng)庫函數(shù)說明--用頭文件包含
理解
函數(shù)參數(shù)類型和函?傳值調(diào)用和傳址調(diào)用掌握
數(shù)的傳址調(diào)用.數(shù)組名作為函數(shù)參數(shù)理解
函數(shù)嵌套調(diào)用和遞?遞歸函數(shù)的定義和調(diào)用知道
歸調(diào)用.遞歸函數(shù)的執(zhí)行過程理解
變量的存儲類別和
7
編譯預(yù)處理
變量存儲類別的概
?自動、寄存器、外部及內(nèi)部靜態(tài)/外部靜態(tài)各種變量類型
念理解
變量的作用域.在函數(shù)外部、函數(shù)內(nèi)部、復(fù)合語句內(nèi)定義變量的作用域理解
變量的生存期和有
?自動、外部及內(nèi)部靜態(tài)/外部靜態(tài)變量的生存期和有效期
效期知道
編譯預(yù)處理.文件包含和宏定義知道
8指針
指針概念.地址、指針和指針變量的含義和表示掌握
指針與地址運算符.取地址運算符&和取內(nèi)容運算符*理解
用指針處理數(shù)組、字?數(shù)組、字符串的指針以及指向數(shù)組、字符串的指針變量理解
符串?通過指針引用以上各類型數(shù)據(jù)理解
用指針作函數(shù)參數(shù)?通過指針類型參數(shù)傳遞計算結(jié)果,改變主調(diào)函數(shù)實參值理解
-函數(shù)指針--返回指針值的的指針函數(shù)知道
指針的高級功能?指針數(shù)組、指向指針的指針知道
,main函數(shù)的命令行參數(shù)簡介知道
9結(jié)構(gòu)體與共用體
?結(jié)構(gòu)定義方法和引用方法理解
結(jié)構(gòu)體類型數(shù)據(jù)
?結(jié)構(gòu)體變量初始化理解
結(jié)構(gòu)體數(shù)組?結(jié)構(gòu)體數(shù)組定義、初始化理解
?指向結(jié)構(gòu)體類型變量的指針變量理解
結(jié)構(gòu)體指針變量
?指向結(jié)構(gòu)體類型數(shù)組的指針變量知道
?用指針和結(jié)構(gòu)體構(gòu)成鏈表、單向鏈表的建立、輸出、刪
鏈表
除與插入(包括動態(tài)空間申請與釋放)理解
10文件
基本概念.文件類型一文本文件/二進制文件、文件指針理解
?文件的打開和關(guān)閉
文件操作?定位掌握
?文件的讀/寫
?常用的庫函數(shù):
打開和關(guān)閉:fopen>fclose
文件結(jié)束判斷:feofO
常用庫函數(shù)
定位:fseek>rewind理解
讀/寫:fputc>fgetc>fputs>fgets>
fprintf>fscanf>fwrite、fread等
算法和數(shù)據(jù)結(jié)構(gòu)的
11
簡單知識
算法和結(jié)構(gòu)化程序.算法概念、表示
設(shè)計.結(jié)構(gòu)化程序設(shè)計知道
單鏈表、棧和隊列的.單鏈表建立、查找、插入、刪除和合并
操作.棧和隊列的建立和基本操作知道
排序和查找?簡單的排序算法和查找算法知道
六、幾點說明
(一)適用對象
理、工、農(nóng)、醫(yī)等專業(yè)類非計算機專業(yè)本科生
(二)建議學(xué)時數(shù)
48-64學(xué)時,其中16-32學(xué)時為實驗課
(三)建議計算機配置
1、硬件
中央處理器PentiumIII550MGHz以上
內(nèi)存128MB以上
硬盤20GB以上
2、軟件
操作系統(tǒng)Windows2000及以上
編程環(huán)境中文MicrosoftVisualC++6.0或其它C語言編程環(huán)境
(四)考試環(huán)境
安裝并使用“上海市高校計算機等級考試通用平臺”進行考試。
客戶端安裝中文VisualC++6.0或其它C語言編程環(huán)境。
(五)參考教材
?《C程序設(shè)計》.譚浩強.清華大學(xué)出版社.
?《C/C++程序設(shè)計》.夏寶嵐等.華東理工大學(xué)出版社.
全真考題
2004年全真考題
2004年上海市高等學(xué)校計算機等級考試試卷
二級(C程序設(shè)計)
(本試卷答卷時間為120分鐘)
試題一(28分,每小題4分)
解答下列各小題,把正確的解答寫在答卷紙的對應(yīng)欄內(nèi)。
(1)假設(shè)對n(n>0)個學(xué)生按下列方法進行分班:每班k(k>0)個學(xué)生,最后一個班若不足k人
也單獨編成一個班。試用C語言中的條件表達(dá)式表示所編班級個數(shù)。
(2)設(shè)有變量定義:
structrec{
intx;
血y;
}s[]={{4528},{9,36}}5*p=s;
計算表達(dá)式(p?>y/p->x*s[l].x+s[l].y)的值。
(3)寫出下列程序的輸出結(jié)果。
#include<stdio.h>
voidmain(){
chars[]=n2473H,c,i;
fdr(i=O;c=s[i];i++){
switch(cJ01){
case2:
case3:putchar(c+4);continue;
case4:putchar(c+4);break;
case5:putchar(c+3);
default:putchar(c+2);
)
putchar('\n');
)
(4)分別寫出下歹必個指針變量pl,p2,p3,p4的含義。
int*pl,*p2[5],(*p3)(),(*p4)[5];
(5)寫出程序的輸出結(jié)果(假定類型unsignedint的字長為16位)。
#include<stdio.h>
voidmainQ{
unsignedintul=0x958,u2,u3;
u2=(ul&OxFF)?4;
u3=(ul&OxFFOO)?4;
printf("%x%x%x\n”,u2,u3,u2|u3);
)
(6)閱讀如下程序段,把其中的switch語句改寫成等價的條件語句。
血x,y;
scanf("%d”,&x);
switch(x!=0){
case0:y=0;break;
case1:switch(x>0){
case1:y=l;break;
case0:y=-l;
)
}
(7)描述函數(shù)conv()的功能,并寫出下列程序的輸出結(jié)果。
voidconv(intm){
if(m>=2)
conv(m/2);
printf(n%dH,m%2);
}
voidmain(){
conv(13);
)
試題二(12分,每小題6分)
閱讀下列程序并回答問題,把答案寫在答卷紙的對應(yīng)欄內(nèi)。
(1)【程序2.1]
#include<stdio.h>
voidsort(inta[],intn){
int
fbr(i=O;i<n-l;i++)
for(j=i+l;j<n;j++)
if(a[i]>a[j])t=a[i],a[i]=a[j],a[j]=t;
voiddelsame(intx[],intn){
inti,j,m=n;
fbr(i=O;i<m;i++){
while(x[i]==x[i+l]){
for(j=i;j<m;j++)
x[j]=x[j+l];
m—;
}
)
returnm;
}
voidmain(){
intx[]={74,4,35,4,65,65,72,74,35},i,m,n;
n=sizeofifx)/sizeof(x[0]);
sort(x,n);
m=delsame(x,n);
for(i=0;i<m;i++)printf(H%3dH,x[i]);
printf(H\nn);
}
(a)函數(shù)sort()的功能是什么?(b)函數(shù)delsame()的功能是什么?(c)程序的輸出是什么?
(2)【程序2.2]
#include<stdio.h>
#defineM4
voidmain(){
inti,j,k,m,a[4];
printf(nEnter4numbers:");
for(i=0;i<M;i++)scanf(H%dH,&a[i]);
fbr(i=M;i>0;i-){
k=a[M-l];
for(j=M-l;j>O;j-)
a[j]=a[j-l];
a[0]=k;
fbr(m=0;m<M;m++)
printf(H%dn,a[m]);
printf(n\nn);
)
}
設(shè)一維數(shù)組a的4個輸入整數(shù)是1,2,3,4,則程序的輸出是什么?
試題三(12分,每小題6分)
改錯。下列程序中都有三個錯誤,按原來程序的要求,糾正錯誤,并以“將#XX行改為YYYY"
的形式進行解答,代碼左邊的“#01“、“#02"、…是附加的行號。
(1)程序3.1輸入10個正整數(shù),計算其中的素數(shù)之和并輸出結(jié)果(不考慮溢出情況)。
【程序3.1】
#01#include<stdio.h>
#02intsum(int*b,intm){
#03ints=0,is_prime(long);
#04while(m—)
#05if(is_prime(*b++))s+=*b;
#06returns;
#07}
#08intisjprime(longm){
#09intk;
#10if(m<=1)return0;
#11ififm==2||m==3)return1;
#12fdr(k=2;k*k<=m;k++)
#13if(m%k==0)return0;
#14elsereturn1;
#15}
#16voidmain(){
#17intx[10],i;
#18for(i=0;i<10;i++)scanf(H%dH,x++);
#19printf(Hsum=%d\nn,sum(x,10));
#20}
(2)程序3.2計算字符串s中最后一次出現(xiàn)子串t的地址,通過函數(shù)值返回,在主函數(shù)中輸
出此地址開始的字符串;若未找到,函數(shù)返回NULL(例如字符串s為"456712345678abcd",
當(dāng)子串t為"567"時,輸出為“5678abcd";當(dāng)t為"789"時,輸出"未找到")。
【程序3.2】
#01#include<stdio.h>
#02char*fun(char*s,t){
#03char*p,*r,*a;
#04a=null;
#05while(*s){
#06p=s;r=t;
#07while(*r)
#08if(r==p){r++;p++;}
#09elsebreak;
#10if(*r=='\(T)a=s;
#11s++;
#12}
#13returna;
#14)
#15voidmain(){
#16chars[100],t[100],*p;
#17printf(,,\nPleaseenterstrings:H);scanf(n%sH,s);
#18printf(H\nPleaseentersubstringt:H);scanf(H%sH,t);
#19p=fun(s,t);
#20if(p)printf(H\nTheresultis:%s\nH,p);
#21elseprintf(H\nNotfound!\nH);
#22)
試題四(18分,每小題9分)
按指定的要求編寫C程序段,把解答寫在答卷紙的對應(yīng)欄內(nèi)。不要求寫完整的程序,也不
必定義語句中出現(xiàn)的變量。
(1)兀的值可以使用下公式計算
請編寫函數(shù)compute_pi(doubleeps)計算兀的近似值,當(dāng)公式中某一項的值小于eps(例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力設(shè)備行業(yè)發(fā)展趨勢與未來市場展望分析
- 2025至2030年中國耐熱硅橡膠絕緣電纜市場現(xiàn)狀分析及前景預(yù)測報告
- 2025至2030年中國翻角機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國羊絨休閑服市場分析及競爭策略研究報告001
- 2025至2030年中國網(wǎng)格桌套市場現(xiàn)狀分析及前景預(yù)測報告
- 2025至2030年中國綿羊服裝革數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國純棉汗布市場分析及競爭策略研究報告
- 新發(fā)展理念下西北地區(qū)經(jīng)濟高質(zhì)量發(fā)展測度及影響因素研究
- 基于“證據(jù)推理與模型認(rèn)知”素養(yǎng)發(fā)展的高中化學(xué)教學(xué)實踐研究
- 2025至2030年中國箱包類牛津布行業(yè)投資前景及策略咨詢報告
- 大學(xué)森林環(huán)境學(xué)教案
- 高層住宅柱下獨立承臺樁基礎(chǔ)設(shè)計實例
- 《湖南省醫(yī)療保險“雙通道”管理藥品使用申請表》
- 雅思詞匯(亂序版)Word list 6
- 應(yīng)急管理培訓(xùn)大綱
- 北師大版小學(xué)數(shù)學(xué)五年級下冊《整理與復(fù)習(xí)(一)》教學(xué)課件(共11張PPT)
- 化學(xué)入門-給小學(xué)生講化學(xué)
- 廈門衛(wèi)生系統(tǒng)招聘2022年考試真題及答案解析【可復(fù)制版】
- GB/T 9166-2009四柱液壓機精度
- 分子模擬與藥物設(shè)計
- GB/T 34685-2017丙烯腈-丁二烯橡膠(NBR)評價方法
評論
0/150
提交評論