




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
程序設(shè)計(jì)與實(shí)踐
2海第二I殳大學(xué)
2015年2月使用
目錄
實(shí)習(xí)要求及時(shí)間安排3
成績(jī)?cè)u(píng)定3
實(shí)驗(yàn)內(nèi)容4
文檔格式12
2012年二級(jí)考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
補(bǔ)充知識(shí)112
實(shí)習(xí)要求及時(shí)間安排
《程序設(shè)計(jì)與實(shí)踐》課程實(shí)習(xí)為分散進(jìn)行,共16周。
前8周為課程實(shí)習(xí);課程實(shí)習(xí)要求完成六個(gè)程序。要求所有程序按模塊化設(shè)計(jì),
結(jié)構(gòu)清晰,能夠獲得最終結(jié)果,并提交實(shí)驗(yàn)報(bào)告(格式見后)。
后8周為參加上海市高等學(xué)校計(jì)算機(jī)等級(jí)考試(二級(jí))《C程序設(shè)計(jì)》考前輔導(dǎo)。
通過(guò)輔導(dǎo)和5?6月份的考試報(bào)名(請(qǐng)關(guān)注校園網(wǎng)通知),參加每年10月最后一個(gè)
星期六或11月第一個(gè)星期六考試院組織的統(tǒng)一考試,獲取優(yōu)秀或合格證書。
成績(jī)?cè)u(píng)定
本課程的總評(píng)成績(jī)?cè)u(píng)定標(biāo)準(zhǔn)為:
總評(píng)成績(jī)=60%實(shí)習(xí)課程成績(jī)+40%上海市二級(jí)考成績(jī)
一般上海市二級(jí)考成績(jī)不低于45分才能總評(píng)合格,該最低成績(jī)視當(dāng)年上海市二
級(jí)考合格率做調(diào)整(上海市二級(jí)考合格率在50?60%波動(dòng))。
實(shí)驗(yàn)內(nèi)容
實(shí)驗(yàn)一:個(gè)人資金賬戶管理
編程實(shí)現(xiàn)資金賬戶的管理,具體要求如下。
1,資金賬戶的信息統(tǒng)一放在隨機(jī)文件中,該隨機(jī)文件包括的數(shù)據(jù)項(xiàng)有記錄ID、
發(fā)生日期、發(fā)生事件、發(fā)生金額(正的表示收入,負(fù)的表示支出)和金額。每發(fā)
生一筆收支,文件要增加一條記錄,并計(jì)算一次余額。,
2,程序?qū)崿F(xiàn)3個(gè)功能,包括:(1),能創(chuàng)建資金賬戶文件并添加收入或支出信息
記錄;(2),能顯示所有記錄,得知資金賬戶的收支流水賬;(3),能查詢最后一
條記錄,獲知賬戶最后的余額。賬戶文件名命名為cashbox.dat,文件部分內(nèi)容如
下;
3,增加修改資金賬戶的功能。輸入一個(gè)記錄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是隨機(jī)文件,記錄資金帳戶消費(fèi)流水帳記錄信息*/
/*程序的功能:添加新流水帳記錄,查詢資金帳戶最后記錄*/
#include"stdio.h"
#include"stdlib.h"
longsize;/*當(dāng)前最近一次的流水號(hào)*/
structLogData{/*記錄的結(jié)構(gòu)*/
longlogid;/*記錄ID*/
charlogdate[ll];/*記錄發(fā)生日期*/
charlognote[15];/*記錄事件說(shuō)明*/
doublecharge;/*發(fā)生費(fèi)用:負(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;/*記錄號(hào)按順序是上次的+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;
)
實(shí)驗(yàn)二自動(dòng)售貨機(jī)
下圖所示為簡(jiǎn)易自動(dòng)售貨機(jī),物品架1、2上共有10樣商品,按順序進(jìn)行編
號(hào)分別為1?10,標(biāo)有價(jià)格與名稱,一個(gè)編號(hào)對(duì)應(yīng)一個(gè)可操作按鈕,供選擇商品使
用。如果物品架上的商品被用戶買走,儲(chǔ)物柜中會(huì)自動(dòng)取出商品送到物品架上,
保證物品架上一定會(huì)有商品。用戶可以一次投入較多錢幣,并可以選擇多樣商品,
售貨機(jī)可以一次性將商品輸出并找零錢。
用戶購(gòu)買商品的操作方法如下。
(1)從“錢幣入口”放入錢幣,依次放入多個(gè)硬幣或紙幣。錢幣可支持1元(紙
幣、硬幣)、2元(紙幣)、5元(紙幣)、10元(紙幣),放入錢幣時(shí),控制器會(huì)先對(duì)錢
幣進(jìn)行檢驗(yàn)以識(shí)別出幣值,并統(tǒng)計(jì)幣值總額,顯示在控制器顯示屏中,提示用戶
確認(rèn)錢幣放入完畢。
(2)用戶確認(rèn)錢幣放入完畢,便可選擇商品,只要用手指按對(duì)應(yīng)商品外面的
編號(hào)按鈕即可。每選中一樣商品,售貨機(jī)控制器會(huì)判斷錢幣是否足夠購(gòu)買,如果
錢幣足夠,自動(dòng)根據(jù)編號(hào)將物品進(jìn)行計(jì)數(shù)和計(jì)算所需錢幣值;如果錢幣不足,則
結(jié)束購(gòu)物。
請(qǐng)為自動(dòng)售貨機(jī)編程,輸入錢幣值序列,以-1作為結(jié)束,依次輸入多個(gè)購(gòu)買
商品編號(hào),若編號(hào)超出范圍或余額不足則輸入結(jié)束,輸出錢幣總額與找回零錢,
以及所購(gòu)買商品名稱及數(shù)量。
輸入輸出示例:
輸入:
1122551010-1/*錢幣序列*/
123516910-1/*物品編號(hào)*/
輸出:
Total:36yuan,change:19yuan
Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;
實(shí)驗(yàn)三:自動(dòng)寄存柜
某超市門口的自動(dòng)寄存柜有n個(gè)寄存箱,并且有一個(gè)投幣控制器,顧客想要
寄存小件物品時(shí),只要在投幣控制器中投入一個(gè)1元硬幣,如果此時(shí)有空閑的箱
子,寄存柜就會(huì)自動(dòng)打開一個(gè)空的箱子,并且打印輸出一張小小的密碼紙條;如
果沒(méi)有空閑的箱子,則提示“本柜已滿”。當(dāng)顧客離開超市時(shí),用密碼紙條上指
定的數(shù)字密碼依次輸入到開箱控制器,則顧客所存包的箱子門就會(huì)自動(dòng)打開,顧
客取走物品后,關(guān)上門。
輸入數(shù)據(jù)時(shí),可先輸入寄存箱總數(shù)n,再由用戶選擇是“投硬幣”還是“輸
密碼”。
如果選擇“投硬幣”,則只有硬幣值是1時(shí)才開箱。如果有空閑的箱子,則
輸出箱子編號(hào)及密碼(4位數(shù)字);如果無(wú)空閑的箱子,則提示“本柜已滿”。
如果選擇“輸密碼”,若輸入的密碼與某一箱子密碼相符,則顯示打開的箱
子編號(hào),否則輸出提示“密碼錯(cuò)誤”。
請(qǐng)編寫開箱控制程序?qū)崿F(xiàn)上述過(guò)程。
輸入輸出示例:
寄存箱總數(shù):10
1.投硬幣2.輸密碼0.退出請(qǐng)選擇:1
投幣值:1
寄存箱編號(hào):1密碼:9342
L投硬幣2.輸密碼0.退出請(qǐng)選擇:2
輸入密碼:9342
1號(hào)寄存箱已打開
L投硬幣2.輸密碼0.退出請(qǐng)選擇:0
結(jié)束
實(shí)驗(yàn)四:停車場(chǎng)管理
設(shè)有一個(gè)可以停放n輛汽車的狹長(zhǎng)停車場(chǎng),它只有一個(gè)大門供車輛進(jìn)出。車
輛按到達(dá)停車場(chǎng)時(shí)間的先后次序依次從停車場(chǎng)最里面向大門口處停放(即最先到
達(dá)的一輛車停放在停車場(chǎng)的最里面)。如果停車場(chǎng)已放滿n輛車,則以后到達(dá)的
車輛只能在停車場(chǎng)大門外的便道上等待,一旦停車場(chǎng)內(nèi)有車開走,則排在便道上
的第一輛車可以進(jìn)入停車場(chǎng)。停車場(chǎng)內(nèi)如有某輛車要開走,則在它之后進(jìn)入停車
場(chǎng)的車都必須先退出停車場(chǎng)為它讓路,待其開出停車場(chǎng)后,這些車輛再依原來(lái)次
序進(jìn)場(chǎng)。每輛車在離開停車場(chǎng)時(shí),都應(yīng)根據(jù)它在停車場(chǎng)內(nèi)停留的時(shí)間長(zhǎng)短交費(fèi),
停留在便道上的車不收停車費(fèi)。編寫程序?qū)υ撏\噲?chǎng)進(jìn)行管理。
輸入數(shù)據(jù)時(shí),先輸入一個(gè)整數(shù)n(n<=10),再輸入若干組數(shù)據(jù),每組數(shù)據(jù)包括3
個(gè)數(shù)據(jù)項(xiàng):汽車到達(dá)或離開的信息(A表示到達(dá)、D表示離開、E表示結(jié)束)、汽車
號(hào)碼、汽車到達(dá)或離開的時(shí)刻。當(dāng)輸入“E00”時(shí)程序結(jié)束。
若有車輛到達(dá),則輸出該汽車的停車位置;若有車輛離開,則輸出該汽車在
停車場(chǎng)內(nèi)停留的時(shí)間。
輸入輸出示例
3
Al1
1號(hào)車停入1號(hào)位
A22
2號(hào)車停入2號(hào)位
A33
3號(hào)車停入3號(hào)位
D14
1號(hào)車出停車場(chǎng),停留時(shí)間3
A45
4號(hào)車停入3號(hào)位
A56
5號(hào)車在便道上等待
D47
4號(hào)車出停車場(chǎng),停留時(shí)間2
5號(hào)車停入3號(hào)位
D58
5號(hào)車出停車場(chǎng),停留時(shí)間1
E00
實(shí)驗(yàn)五;學(xué)生成績(jī)管理
設(shè)計(jì)一個(gè)菜單驅(qū)動(dòng)的學(xué)生成績(jī)管理程序,管理n個(gè)學(xué)生的m門考試科目成
績(jī),實(shí)現(xiàn)以下基本功能。
(1)能夠新增學(xué)生信息,并計(jì)算總分和平均分。
(2)能夠根據(jù)學(xué)號(hào)修改和刪除某學(xué)生信息。
(3)能夠顯示所有學(xué)生的成績(jī)信息。
(4)能夠分別按總分和學(xué)號(hào)進(jìn)行排序。
(5)能夠根據(jù)學(xué)號(hào)查詢?cè)搶W(xué)生的基本信息。
(6)學(xué)生成績(jī)數(shù)據(jù)最終保存在文件中,能夠?qū)ξ募x、寫學(xué)生數(shù)據(jù)。
程序運(yùn)行時(shí),菜單形式如下。
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è)計(jì)各個(gè)自定義函數(shù)。同時(shí),程序能
夠進(jìn)行異常處理,檢查用戶輸入數(shù)據(jù)的有效性,在用戶輸入數(shù)據(jù)有錯(cuò)誤(如類型
錯(cuò)誤)或無(wú)效時(shí),不會(huì)中斷程序的執(zhí)行,程序具有一定的健壯性。
實(shí)驗(yàn)六:完美的代價(jià)
回文串是一種特殊的字符串,它從左往右讀和從右往左讀是一樣的,有人認(rèn)
為回文串是一種完美的字符串。現(xiàn)在給出一個(gè)字符串,它不一定是回文的,請(qǐng)計(jì)
算使得該字符串變成一個(gè)回文串的最少交換次數(shù)。這里的交換指將字符串中兩個(gè)
相鄰的字符互換位置。
例如所給的字符串為mamad,第一次交換a和d,得到mamda;第二次交換m
和d,得至Umadma;第三次交換最后面的m和a,得至Umadam□
編寫程序,從鍵盤讀入數(shù)據(jù)。第一行是一個(gè)整數(shù)N(N<=80),表示所給字符串
的長(zhǎng)度,第二行是所給的字符串,長(zhǎng)度為N且只包含小寫英文字母。如果所給
字符串能經(jīng)過(guò)若干次交換變成回文串,則輸出所需的最少交換次數(shù);否則,輸出
Impossibleo
輸入輸出示例1
5
mamad
3
輸入輸出示例2
6
aabbcd
Impossible
實(shí)驗(yàn)思考題:值班安排
醫(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í),先輸入一個(gè)整數(shù)n,再輸入n組條件,要求能夠根據(jù)輸入的條
件確認(rèn)唯一的值班表,且輸入的n組條件中能夠直接或間接得到任意兩位大夫的
關(guān)聯(lián)聯(lián)系,例如上面的條件(2)直接顯示了D與E間的關(guān)系,而通過(guò)條件(1)(6)(5)
可以間接得到A與B的關(guān)系。
條件的輸入格式有以下兩種。
格式1:編號(hào)比較運(yùn)算符編號(hào)天數(shù)
其中比較運(yùn)算符有兩種:〉或<,分別表示“早”和“晚工
例如,A<C1表示A大夫比C大夫晚1天值班。
格式2:編號(hào)=數(shù)值
例如,F(xiàn)=4表示:F大夫在星期四值班。
輸入輸出示例
7
A<C1
D<E1
E>B2
B>G4
F<B1
F>C1
F=4
EDBFCAG
文檔格式
每個(gè)程序均需獨(dú)立完成相應(yīng)的實(shí)驗(yàn)文檔,打包提交。包括:
實(shí)驗(yàn)報(bào)告,程序源代碼,EXE可執(zhí)行程序
打包文檔名稱:班級(jí)—學(xué)號(hào)—姓名—實(shí)驗(yàn)號(hào)
其中:班級(jí)前二位為中文后跟大寫字母A和一位數(shù)字,如:計(jì)算A1
學(xué)號(hào)和姓名需寫完整
實(shí)驗(yàn)號(hào)按實(shí)驗(yàn)順序如下:實(shí)驗(yàn)一、實(shí)驗(yàn)二、……
注意各部分連接用下劃線,不得有空格
各程序名稱按Pl、P2、……、P6順序命名
實(shí)驗(yàn)報(bào)告模板如下:
程序設(shè)計(jì)與實(shí)踐
實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)一:個(gè)人資金賬戶管理
姓名:XXX
學(xué)號(hào):XXX
班級(jí):XXX
實(shí)驗(yàn)時(shí)間:2015/xx/xx-2015/xx/xx
一:實(shí)驗(yàn)名稱:個(gè)人資金賬戶管理
注:每個(gè)實(shí)驗(yàn)名稱需對(duì)應(yīng)
二:實(shí)驗(yàn)環(huán)境:一臺(tái)安裝有VC6.0程序的電腦。
三:實(shí)驗(yàn)?zāi)康?/p>
(1)培養(yǎng)和鍛煉對(duì)具有一定復(fù)雜度和規(guī)模的問(wèn)題的分析與求解能力。
(2)掌握程序設(shè)計(jì)的綜合方法,能綜合應(yīng)用各種數(shù)據(jù)類型實(shí)現(xiàn)較復(fù)雜數(shù)據(jù)的存儲(chǔ)。
(3)培養(yǎng)良好的C程序設(shè)計(jì)風(fēng)格與代碼規(guī)范意識(shí)。
四:實(shí)驗(yàn)內(nèi)容:
注:此處請(qǐng)按實(shí)驗(yàn)要求改寫,語(yǔ)句精煉。說(shuō)明實(shí)驗(yàn)題的內(nèi)容及基本要求。
五:實(shí)驗(yàn)步驟:(實(shí)驗(yàn)設(shè)計(jì),關(guān)鍵代碼。實(shí)驗(yàn)結(jié)果需截圖)
注:此處請(qǐng)注意寫出程序設(shè)計(jì)思路,各功能模塊的實(shí)現(xiàn)算法描述,對(duì)
所附關(guān)鍵代碼要注釋,寫明使用的實(shí)驗(yàn)數(shù)據(jù)及測(cè)試結(jié)果,并對(duì)運(yùn)行結(jié)
果給出截圖。截圖方法:使用Alt+PrtSc鍵獲得窗口的截圖,粘貼即
可。
六:實(shí)驗(yàn)<1、結(jié):(主要介紹程序的完成情況,重點(diǎn)、難點(diǎn)以及解決方法,有
待改進(jìn)之處,以及有何收獲,體會(huì)等)
注:辛辛苦苦做好,總會(huì)有些體會(huì)想說(shuō),除非不是你親手完成。不要
空白哦!
2012年二級(jí)考C大綱
上海市高等學(xué)校計(jì)算機(jī)等級(jí)考試(二級(jí))《c程序設(shè)計(jì)》考試大綱
(2012年修訂)
一、考試性質(zhì)
上海市高等學(xué)校計(jì)算機(jī)等級(jí)考試是上海市教育委員會(huì)組織的全市高校統(tǒng)一的教學(xué)考試,
是檢測(cè)和評(píng)價(jià)高校計(jì)算機(jī)應(yīng)用基礎(chǔ)知識(shí)教學(xué)水平和教學(xué)質(zhì)量的重要依據(jù)之一。該項(xiàng)考試旨在
規(guī)范和加強(qiáng)上海高校非計(jì)算機(jī)專業(yè)的計(jì)算機(jī)教學(xué)工作,提高非計(jì)算機(jī)專業(yè)學(xué)生的計(jì)算機(jī)應(yīng)用
能力。考試對(duì)象主要是上海高等學(xué)校非計(jì)算機(jī)專業(yè)學(xué)生,考試每年舉行一次,當(dāng)年的十月下
旬、十一月上旬的星期六或星期日。凡考試成績(jī)達(dá)到合格者或優(yōu)秀者,由上海市教育委員會(huì)
頒發(fā)相應(yīng)的證書。
本考試由上海市教育委員會(huì)統(tǒng)一領(lǐng)導(dǎo),聘請(qǐng)有關(guān)專家組成考試委員會(huì),委托上海市教育
考試院組織實(shí)施。
二、考試目標(biāo)
C語(yǔ)言是當(dāng)前常用的一種簡(jiǎn)潔、高效、功能豐富的程序設(shè)計(jì)語(yǔ)言,是理工科大學(xué)生學(xué)習(xí)
計(jì)算機(jī)編程能力、理解計(jì)算機(jī)解決問(wèn)題的方法的重要工具。學(xué)生通過(guò)該課程的學(xué)習(xí),應(yīng)能了
解、掌握c語(yǔ)言的語(yǔ)法和使用它進(jìn)行編程的方法,并能上機(jī)調(diào)試運(yùn)行解決簡(jiǎn)單實(shí)際問(wèn)題。
《C程序設(shè)計(jì)》的考試目標(biāo)是測(cè)試考生掌握C語(yǔ)言知識(shí)的程度和綜合運(yùn)用語(yǔ)言知識(shí)進(jìn)行
程序設(shè)計(jì)的能力。
三、考試細(xì)則
考試采用基于網(wǎng)絡(luò)環(huán)境的無(wú)紙化上機(jī)考試系統(tǒng)。考試時(shí)間為120分鐘。試卷總分為100
分。
試題由四部分組成:?jiǎn)芜x題、程序調(diào)試題、程序填空題和綜合編程題。試卷從局域網(wǎng)的
服務(wù)器下載、考試結(jié)果上傳到服務(wù)器,若不按照要求上傳到服務(wù)器,則考試無(wú)效。考試閱卷
采用機(jī)器和人工相結(jié)合的網(wǎng)上閱卷方式。
四、試卷參考樣式
序號(hào)題型題量計(jì)分考核目標(biāo)
基本概念
一單選題10題15分
語(yǔ)義知識(shí)
常用算法
二程序填空題2題20分程序理解
程序設(shè)計(jì)
基本語(yǔ)句
三程序調(diào)試題3題30分程序調(diào)試
程序設(shè)計(jì)
常用算法
四編程題2題35分
綜合應(yīng)用
合計(jì)17題100分
五、考試內(nèi)容和要求
序
內(nèi)容要點(diǎn)和考點(diǎn)要求
號(hào)
C程序的組成、結(jié)構(gòu)
1
及書寫規(guī)則
.預(yù)處理命令理解
C語(yǔ)言源程序結(jié)構(gòu).外部數(shù)據(jù)定義知道
?函數(shù)main和其它函數(shù)定義
理解
.基本詞法單位、標(biāo)識(shí)符/常量/運(yùn)算符等構(gòu)成規(guī)則理解
程序的書寫格式
?程序的書寫格式與風(fēng)格知道
.VC編程環(huán)境的操作使用掌握
C語(yǔ)言程序設(shè)計(jì)步驟
.程序的編輯/編譯/連接/調(diào)試/運(yùn)行掌握
2基本數(shù)據(jù)類型
C語(yǔ)言數(shù)據(jù)類型
.基本類型、數(shù)組、結(jié)構(gòu)、指針類型、空類型掌握
.常量和變量掌握
C語(yǔ)言常量.整型、實(shí)型(單/雙精度)、字符型和字符串常量的表示
理解
方法
C語(yǔ)言變量和C語(yǔ)言?各種類型變量的定義和說(shuō)明掌握
基本數(shù)據(jù)類型.變量的初始化掌握
3基本運(yùn)算和表達(dá)式
運(yùn)算符?運(yùn)算符種類、功能、目數(shù)、優(yōu)先級(jí)、結(jié)合性和副作用理解
算術(shù)運(yùn)算?自動(dòng)類型轉(zhuǎn)換規(guī)則掌握
?關(guān)系和邏輯運(yùn)算規(guī)則掌握
關(guān)系和邏輯運(yùn)算
?邏輯運(yùn)算的優(yōu)化規(guī)則理解
位運(yùn)算?位運(yùn)算規(guī)則和簡(jiǎn)單位運(yùn)算知道
.賦值運(yùn)算中自動(dòng)類型轉(zhuǎn)換規(guī)則(以左值類型為準(zhǔn)轉(zhuǎn)換)掌握
賦值運(yùn)算
?復(fù)合賦值理解
其他運(yùn)算?條件、逗號(hào)、求存儲(chǔ)空間大小運(yùn)算知道
.表達(dá)式組成規(guī)則、各類表達(dá)式理解
.描述計(jì)算過(guò)程/條件判斷的表達(dá)式理解
表達(dá)式.各類型數(shù)據(jù)混合運(yùn)算中求值順序掌握
.表達(dá)式運(yùn)算中的隱式類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換
理解
.基本運(yùn)算執(zhí)行順序、表達(dá)式結(jié)果類型
掌握
4語(yǔ)句
基本語(yǔ)句及順序結(jié)?定義/說(shuō)明語(yǔ)句,表達(dá)式語(yǔ)句,空語(yǔ)句,復(fù)合語(yǔ)句、函數(shù)
構(gòu)語(yǔ)句調(diào)用語(yǔ)句掌握
?描述條件和情況的if,switch語(yǔ)句、
選擇結(jié)構(gòu)語(yǔ)句
?選擇語(yǔ)句嵌套掌握
?描述循環(huán)執(zhí)行的while,do-while,for語(yǔ)句
循環(huán)結(jié)構(gòu)語(yǔ)句
?循環(huán)語(yǔ)句嵌套掌握
?改變程序流程執(zhí)行次序的break,continue,return語(yǔ)
轉(zhuǎn)移語(yǔ)句
句掌握
5數(shù)組
一維數(shù)組?一維數(shù)組定義、引用和初始化掌握
二維數(shù)組.二維數(shù)組定義、引用和初始化掌握
?字符數(shù)組定義、引用和初始化掌握
字符數(shù)組和字符串
?字符串結(jié)束標(biāo)志、初始化、字符串處理函數(shù)
理解
6函數(shù)定義和調(diào)用
.函數(shù)原型、函數(shù)名、形式參數(shù)、函數(shù)返回值、函數(shù)體一一
函數(shù)的定義方法
函數(shù)執(zhí)行過(guò)程的描述掌握
函數(shù)類型和返回值.不同類型函數(shù)定義、缺省類型、空類型理解
函數(shù)傳值調(diào)用?形參、實(shí)參及其參數(shù)單向傳遞掌握
.函數(shù)原型及作用理解
函數(shù)說(shuō)明?用戶定義函數(shù)說(shuō)明理解
?系統(tǒng)庫(kù)函數(shù)說(shuō)明--用頭文件包含
理解
函數(shù)參數(shù)類型和函?傳值調(diào)用和傳址調(diào)用掌握
數(shù)的傳址調(diào)用.數(shù)組名作為函數(shù)參數(shù)理解
函數(shù)嵌套調(diào)用和遞?遞歸函數(shù)的定義和調(diào)用知道
歸調(diào)用.遞歸函數(shù)的執(zhí)行過(guò)程理解
變量的存儲(chǔ)類別和
7
編譯預(yù)處理
變量存儲(chǔ)類別的概
?自動(dòng)、寄存器、外部及內(nèi)部靜態(tài)/外部靜態(tài)各種變量類型
念理解
變量的作用域.在函數(shù)外部、函數(shù)內(nèi)部、復(fù)合語(yǔ)句內(nèi)定義變量的作用域理解
變量的生存期和有
?自動(dòng)、外部及內(nèi)部靜態(tài)/外部靜態(tài)變量的生存期和有效期
效期知道
編譯預(yù)處理.文件包含和宏定義知道
8指針
指針概念.地址、指針和指針變量的含義和表示掌握
指針與地址運(yùn)算符.取地址運(yùn)算符&和取內(nèi)容運(yùn)算符*理解
用指針處理數(shù)組、字?數(shù)組、字符串的指針以及指向數(shù)組、字符串的指針變量理解
符串?通過(guò)指針引用以上各類型數(shù)據(jù)理解
用指針作函數(shù)參數(shù)?通過(guò)指針類型參數(shù)傳遞計(jì)算結(jié)果,改變主調(diào)函數(shù)實(shí)參值理解
-函數(shù)指針--返回指針值的的指針函數(shù)知道
指針的高級(jí)功能?指針數(shù)組、指向指針的指針知道
,main函數(shù)的命令行參數(shù)簡(jiǎn)介知道
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)成鏈表、單向鏈表的建立、輸出、刪
鏈表
除與插入(包括動(dòng)態(tài)空間申請(qǐng)與釋放)理解
10文件
基本概念.文件類型一文本文件/二進(jìn)制文件、文件指針理解
?文件的打開和關(guān)閉
文件操作?定位掌握
?文件的讀/寫
?常用的庫(kù)函數(shù):
打開和關(guān)閉:fopen>fclose
文件結(jié)束判斷:feofO
常用庫(kù)函數(shù)
定位:fseek>rewind理解
讀/寫:fputc>fgetc>fputs>fgets>
fprintf>fscanf>fwrite、fread等
算法和數(shù)據(jù)結(jié)構(gòu)的
11
簡(jiǎn)單知識(shí)
算法和結(jié)構(gòu)化程序.算法概念、表示
設(shè)計(jì).結(jié)構(gòu)化程序設(shè)計(jì)知道
單鏈表、棧和隊(duì)列的.單鏈表建立、查找、插入、刪除和合并
操作.棧和隊(duì)列的建立和基本操作知道
排序和查找?簡(jiǎn)單的排序算法和查找算法知道
六、幾點(diǎn)說(shuō)明
(一)適用對(duì)象
理、工、農(nóng)、醫(yī)等專業(yè)類非計(jì)算機(jī)專業(yè)本科生
(二)建議學(xué)時(shí)數(shù)
48-64學(xué)時(shí),其中16-32學(xué)時(shí)為實(shí)驗(yàn)課
(三)建議計(jì)算機(jī)配置
1、硬件
中央處理器PentiumIII550MGHz以上
內(nèi)存128MB以上
硬盤20GB以上
2、軟件
操作系統(tǒng)Windows2000及以上
編程環(huán)境中文MicrosoftVisualC++6.0或其它C語(yǔ)言編程環(huán)境
(四)考試環(huán)境
安裝并使用“上海市高校計(jì)算機(jī)等級(jí)考試通用平臺(tái)”進(jìn)行考試。
客戶端安裝中文VisualC++6.0或其它C語(yǔ)言編程環(huán)境。
(五)參考教材
?《C程序設(shè)計(jì)》.譚浩強(qiáng).清華大學(xué)出版社.
?《C/C++程序設(shè)計(jì)》.夏寶嵐等.華東理工大學(xué)出版社.
全真考題
2004年全真考題
2004年上海市高等學(xué)校計(jì)算機(jī)等級(jí)考試試卷
二級(jí)(C程序設(shè)計(jì))
(本試卷答卷時(shí)間為120分鐘)
試題一(28分,每小題4分)
解答下列各小題,把正確的解答寫在答卷紙的對(duì)應(yīng)欄內(nèi)。
(1)假設(shè)對(duì)n(n>0)個(gè)學(xué)生按下列方法進(jìn)行分班:每班k(k>0)個(gè)學(xué)生,最后一個(gè)班若不足k人
也單獨(dú)編成一個(gè)班。試用C語(yǔ)言中的條件表達(dá)式表示所編班級(jí)個(gè)數(shù)。
(2)設(shè)有變量定義:
structrec{
intx;
血y;
}s[]={{4528},{9,36}}5*p=s;
計(jì)算表達(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)分別寫出下歹必個(gè)指針變量pl,p2,p3,p4的含義。
int*pl,*p2[5],(*p3)(),(*p4)[5];
(5)寫出程序的輸出結(jié)果(假定類型unsignedint的字長(zhǎng)為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語(yǔ)句改寫成等價(jià)的條件語(yǔ)句。
血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分)
閱讀下列程序并回答問(wèn)題,把答案寫在答卷紙的對(duì)應(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個(gè)輸入整數(shù)是1,2,3,4,則程序的輸出是什么?
試題三(12分,每小題6分)
改錯(cuò)。下列程序中都有三個(gè)錯(cuò)誤,按原來(lái)程序的要求,糾正錯(cuò)誤,并以“將#XX行改為YYYY"
的形式進(jìn)行解答,代碼左邊的“#01“、“#02"、…是附加的行號(hào)。
(1)程序3.1輸入10個(gè)正整數(shù),計(jì)算其中的素?cái)?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計(jì)算字符串s中最后一次出現(xiàn)子串t的地址,通過(guò)函數(shù)值返回,在主函數(shù)中輸
出此地址開始的字符串;若未找到,函數(shù)返回NULL(例如字符串s為"456712345678abcd",
當(dāng)子串t為"567"時(shí),輸出為“5678abcd";當(dāng)t為"789"時(shí),輸出"未找到")。
【程序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程序段,把解答寫在答卷紙的對(duì)應(yīng)欄內(nèi)。不要求寫完整的程序,也不
必定義語(yǔ)句中出現(xiàn)的變量。
(1)兀的值可以使用下公式計(jì)算
請(qǐng)編寫函數(shù)compute_pi(doubleeps)計(jì)算兀的近似值,當(dāng)公式中某一項(xiàng)的值小于eps(例
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 表演調(diào)研面試題及答案
- 對(duì)比分析西醫(yī)臨床考試內(nèi)容試題及答案
- 營(yíng)養(yǎng)師的社會(huì)責(zé)任與使命試題及答案
- 激光技術(shù)考試各科目復(fù)習(xí)側(cè)重點(diǎn)試題及答案
- 系統(tǒng)管理師考題及答案的學(xué)習(xí)資源與備考
- 衛(wèi)生管理證書考試精髓試題及答案
- 藥物經(jīng)濟(jì)學(xué)評(píng)價(jià)的臨床應(yīng)用試題及答案
- 寧波中考?xì)v史試題及答案
- 牙科護(hù)理考試題及答案
- 應(yīng)用極限測(cè)試題及答案
- 13a-7建筑物照明全負(fù)荷通電試運(yùn)行記錄
- 空調(diào)維保投標(biāo)方案(技術(shù)方案)
- 允許一切發(fā)生:過(guò)不緊繃松弛的人生
- 《囊螢夜讀》-課件
- 小兒柴桂退熱顆粒的臨床應(yīng)用分析
- 老人智能手環(huán)方案可行性研究報(bào)告
- 《國(guó)家安全法》-詳解
- 野生動(dòng)物識(shí)別與鑒定-南京森林警察學(xué)院中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 解剖生理-牙列與頜位課件
- 《中國(guó)陶瓷鑒賞與器物陳設(shè)》復(fù)習(xí)考試題庫(kù)(帶答案)
- 肺隱球菌病診治
評(píng)論
0/150
提交評(píng)論