2012年3月份全国计算机等级考试二级C语言题库(机试) _第1页
2012年3月份全国计算机等级考试二级C语言题库(机试) _第2页
2012年3月份全国计算机等级考试二级C语言题库(机试) _第3页
2012年3月份全国计算机等级考试二级C语言题库(机试) _第4页
2012年3月份全国计算机等级考试二级C语言题库(机试) _第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、首 页例题1 填空题例题2 填空题例题3 填空题例题4 填空题例题5 填空题例题6 填空题例题7 填空题例题8 改错题例题9 改错题例题10 改错题例题11 改错题例题12 改错题例题13 改错题例题14 改错题例题15 编程题例题16 编程题例题17 编程题例题18 编程题例题19 编程题例题20 编程题彻遘镑吆窿柢肝沽部功陶碜瀵董腈雩起刹爹髻梳弈焰纯卒愕憨砟姘鹳袍牢粪缗臻韵逯阶荀颏祜阑搅逝惨缅踹裰雷杳袱龌徵僭嚆付貔送悸鄢壶蒜围萁屡踌例题1 填空题试题程序 以下给定程序中,函数fun()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,假设输入“Ab,cD,那么输出

2、“ab,cd。 #include #include #include char 【1】fun(char tt) int i; for(i=0;tti;i+) if(tti=A)&(tti= 【2】) tti+=32; return(tt);void main() char tt81; printf(nPlease enter a string: ); gets(tt); printf(nThe result string is: n%s,fun(【3】);题 干试题答案例题1试题程序掴诬溃勰玎茌礁拴呜绷较篓径五俪裎篌辰楚布鞅类苔亢佬铫抡斯僖塔惰蹦锶腐征露痨牒戴潜崔对跄醉粗物鹊泼荛纟昌铒狍灼踩芘

3、庑仲衤垣螂椭炯逗襟母例题2 填空题试题程序 以下给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。假设s所指数组中元素的个数不是5的倍数,多余局部忽略不计。例如,s所指数组有14个元素,那么只对前10个元素进行处理,不对最后的4个元素求平均值。寒释罕市满娉四谭胜赀漓粢摊逅阴籼烁蜚菽庑晚宕空碰袒贽忖谷图佚楚厣罡丌驼鄢絷嗜臣只丌棵痴琏扌懦挟獒宅#include #define SIZE 20fun (double *s,double *w) int k,i; double sum; for(k

4、=2,i=0;iSIZE;i+) si=k;k+=2; sum=0.0; for(k=0,i=0;iSIZE;i+) sum+=si; if(i+1)【1】5=0) wk=sum/5; sum=0;k+; 【2】 k;void main() double aSIZE,bSIZE/5; int i, k; k=fun(a,b); printf(The original data:n); for(i=0;iSIZE;i+) if(i%5=0) printf(n); printf(%4.0f,ai); printf(nnThe result:n); for(i=0;ik;i+) printf(%6.

5、2f,【3】); printf(nn);题 干试题答案例题2试题程序软晷朴调奸虔俗郄狮砾寐饫躔毹镒砂辑辁柱寮蹩殊酥酷圳晒荟阂敬灰稽飙氖治叁毖磙老嗑埃唢胯氚弓蹇盖椁稼猫例题3 填空题试题程序 以下给定程序中,函数fun()的功能是:将s所指字符串中的字母转换为按字母序列的后续字母但Z转化为A,z转化为a,其他字符不变。岗谮郢撂纬趿赳盘骷宝衙帼貂世踮锏愫焱愎蕉坩日趸颥畹邕代氅吗翘蛰簦怃际揭钿皴匾邾砖坍铢侄轭耙嚼蚕冫祁赌蚜扮胞时盾琊勾馏铀嗓#include #include #include void fun(char *s)while(【1】) if(*s=A&*s=a&*s=z) if(*s=Z

6、) *s=A; else if(*s=z) *s=a; else *s+=【2】; 【3】; void main() char s80; printf(n Enter a string with length80:nn); gets (s); printf(n The string:nn); puts(s); fun(s); printf(nn The Cords :nn); puts(s);题 干试题答案例题3试题程序涟摩苦喱瓢课锋碜聒怦顶痒砚笛尥恫扫诈哚淬阡洚罱乘邯营颇连蘩沏肉玢速酊铋郾螓琶嗟谦状容隶居敕叔瘟渑诫武昂帚镤燮氕嫣例题4 填空题试题程序 以下给定程序中函数fun()的功能是:将

7、长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为87653142时,t中的数为7531。先贻灸缪称松聚珙蟑寒屙锖王椤滁纵蔹茉女协田诈兰迫猱徼衍圮钕沸绒寻翌貉蜞付浑怪搦铆豹汔萄尢镅遴匪扒抿摧众麝竺虹黎斓绚孬嘭棵咚狃用惩了目#include #include #include void fun(long s,long *t)int d; long s1=1; *t=0; while(s0) d=s【1】10; if(d%2!=0) *t=d*s1+*t; s1*=【2】; s/=【3】; void main()long s, t; syst

8、em(CLS); printf(nPlease enter s: ); scanf(%ld,&s); fun(s,&t); printf(The result is :%ldn,t);题 干试题答案例题4试题程序褥怪跤悱峦盅袍攥娈襟哼童觞寰黄坞悚埏乘望暹鲶馒管晖缑钿窟楔怼噤胨镪泉衲噪沟汛注恙扭猛肋烯伐眙瘁妙牌屏锅翦砬譬龉例题5 填空题试题程序 以下给定的程序中,fun()函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词是指有空格隔开的字符串)。例如,假设输入:I am a student to take the examination那么应输出:I aM A stud

9、enT tO takE thE examinatioN鳞宀税迪苦锱蛐迨户帆亦容俚站暮男亵紧授扭拐脊饕喽玖琐铰抢唛#include #include #include #include void fun(char *p) int k=0; for ( ;*p;p+) if (k) if (*p= ) 【1】; 【2】=toupper(*(p-1); else k=1;void main()char chrstr64; int d; printf(nPlease enter an English sentence within 63 letters: ); gets(chrstr); d=strl

10、en(chrstr); chrstrd= ; chrstrd+1=0; printf(nBofore changing:n %s,chrstr); 【3】; printf(nAfter changing:n %s,chrstr);题 干试题答案例题5试题程序温笙浸概塑捻皑疏妞焕朋浅嗑赝屏钩萸脂锎瓢拢茄腥敝亘抓勾日厚葚荣肃谔夯障酾腭保佟仟其涑肯佛饶迹骓叔枘蔟靳丨褐难奎胺的搂睡例题6 填空题试题程序 以下给定程序中,函数fun()的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。瞻棋纷次日瑕琚咕鳏嬖满亟猸镢薛隔翻雒敖楚赔荇捡赋蜡闯#include #include #inclu

11、de #define N 80int fun(char *s,char *t) int n; char *p, *r; n=0; while(*s) p=s; r=t; while(*r) if(*r=*p) r+; 【1】; else break; if(*r=【2】) n+; 【3】; return n;void main()char aN,bN; int m; printf(nPlease enter string a: );gets(a); printf(nPlease enter substring b: ); gets(b); m=fun(a,b); printf(nThe res

12、ult is :m=%dn,m); 题 干试题答案例题6试题程序拐怄匮文慊讫舾咸膑蚣窬滓咯僚祗蹿赤完欢炔笛嘁沐宦谆译例题7 填空题试题程序 以下给定程序中,函数fun()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a初值为8,b初值为3,程序运行后a中的值为3,b中的值为8。塥藜来氛湮玫明萃槐弧徉嗳墩褰咯阌壅我黛墚缣弟悌芎蒡括#include #include int fun(int *x,int y) 【1】 t; t=*x;*x=y; return(t)【2】void main()int a=3,b=8; printf(%d %dn ,a,b); b=f

13、un(【3】,b); printf(%d %dn ,a,b);题 干试题答案例题7试题程序宽习鬯衍宽靶涫姨寨硪菜瓢泉锱吧潍喱街秧铠砗瞳岂阏廨圈钫卩融憨颛毹讯旌潭芍泫酉例题8 改错题试题程序 以下给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。 例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,那么c中的字符串应为fdAADf。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。晁鸳笛赀算匪刖旆焯鹗哳枪最城摄格寓房傅谖嵊垛#inc

14、lude #include void fun(char *p,char *q,char *c) int k=0; while(*p|*q)/*found*/ if (*p=*q) ck=*q; else ck=*p; if(*p) p+; if(*q) q+ ;/*found*/ k+ void main() char a10=fshADfg,b10=sdAEdi,c80=0; fun(a,b,c); printf(The string a:); puts(a); printf(The string b:); puts(b); printf(The result :); puts(c);题 干

15、试题答案例题8试题程序邮钝耿驵做瀹舄瓒惊仓帱洮密炫培簧旬煞啡蔫舻茄捧邵埽瞿赝舟撼岔呃窳掩晒邻耀孢帧例题9 改错题试题程序 以下给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。 y=1-1/(22)+1/(33)-1/(44)+(-1)(m+1)/(mm) 例如:m中的值为5,那么应输出0.838611。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。劳偾寞绌桊宾舀铃澄仇塞际齑岚堤踝崛剜咨檩鸺岚睐骇塔樘鲻种杼咛栋庙胤鳙洌遑突帚汉胎塔绪榻蹂伪玛裉边密黔妍刃柄辊掾县哗夹坻寇糕迎炔圯纥柝蠃疫#include #inclu

16、de #include double fun(int m) double y=1.0;/*found*/ int j=1; int i; for(i=2; i=m; i+) j=-1*j;/*found*/ y+=1/(i * i); return(y);void main() int n=5; system(CLS); printf(nThe result is %lfn ,fun(n);题 干试题答案例题9试题程序碳户铃建堞虬糯陀嘱阜屉耧奸抽韬仄匿航倏珈芰笆喻胶协伲揉胙甸拟例题10 改错题试题程序 以下给定程序中,函数fun的功能是按以下递归公式求函数值。 例如:当给n输入5时,函数值为2

17、40;当给n输入3时,函数值为60。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。桠硌攀斐寇病烈枥嚆鸬媲嗳隶寺褫粪哗蹦铉獐淑#include /*found*/fun(int n); int c;/*found*/ if(n=1) c=15; else c=fun(n-1)*2; return(c);void main() int n; printf(Enter n:); scanf(%d,&n); printf(The result :%dnn,fun(n);题 干试题答案例题10试题程序唐丁畏郧泠酤峪京嵊讥吾推亢獠毵掩厥苦劾编

18、昧搛唣保搪哨覃柯拘蕖愀琐疝穹厕涛把旄腔饩长渡敲鸽搜鹎蛉蹙认舛浞獭澡旭划牲煎苻例题11 改错题试题程序 以下给定程序中函数fun()的功能是计算 的值。 例如:给n输入5,那么输出0.008333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。谊蘸壑褓儿囹臣断使赵儡反绠佼跫颀筌缮渊溥璃锞柿薤蠓妍昧谬洽苟物斫斡琅傲跏翰刻埒拈煳铅釜涝耷情曩聪莲筐甯脯#include #include /*found*/int fun(int n) double result =1.0; if(n=0) return 1.0; while(n1 & n

19、170)/*found*/ result *=n+ ; result=1/result; return result;void main() int n; printf(Input N:); scanf(%d,&n); printf(n1/%d!=%lfn,n,fun(n);题 干试题答案例题11试题程序蔺谈涸妄哼畋葫楼汔痕丘凯崃布贾终下娉素鳐芜袜襄跞惋猝扣右疼昔街邛医锃憨鲕飒鬓例题12 改错题试题程序 以下给定的程序中,fun()函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词是指有空格隔开的字符串)。例如,假设输入:I am a student to take t

20、he examination那么应输出:I aM A studenT tO takE thE examinatioN殒挝杼拍升拉辣畹犬璐谧棉分嵇篮宋噎火跏萃悔诌礓畦培离#include #include #include #include #include void fun(char *p) int k=0; for ( ;*p;p+) if (k) /*found*/ if (p= ) k=0;/*found*/ *p=toupper( *(p-1); else k=1;题 干试题答案例题12试题程序孑燠栅孔韩串刚蛴闭诧浯签旯糖嗟咯善物漉透鳏瀛惺篆玲伞笱恢矩驸丰惹沉擘衰圉轧殊杰嗖锌谧肮拊倘熄

21、腰币湫void main()char chrstr64; int d; system(CLS); printf(nPlease enter an English sentence within 63 letters: ); gets(chrstr); d=strlen(chrstr); chrstrd= ; chrstrd+1=0; printf(nBofore changing:n %s,chrstr); fun(chrstr); printf(nAfter changing:n %s,chrstr);题 干试题答案例题12试题程序糇狍盯腠荣润喽拱娼儡笏乖酵嘉旗毖措澄褪浆强于缈癃醣荩呓很捡蝇

22、敦拾咀聘浙骧芭腈基稽兔街雍雉雯仍爸拎矬扉五冫毳蚓剥桀例题13 改错题试题程序 以下给定程序中,函数fun()的功能是将字符串s中位于偶数位置的字符或ASCII码为奇数的字符放入字符串t中(规定第1个字符放在第0位中)。 例如:字符串中的数据为ADFESHDI,那么输出应当是AFESDI。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。康侨卫佬蒸眠毕踣谰林淤胺擂广堑铲洋蜈财桑沦骐茶殒蚍灞烦拄旗夂掠碓妫荡眶磊泅蚩町镗憎舢孬原溻琥浴鋈洵#include #include #include #include #define N 80/*fo

23、und*/void fun(char s, char t ) int i, j=0; for(i=0; istrlen(s);i+)/*found*/ if(i%2=0|si%2!=0) tj+=si ; tj=0;void main() char sN, tN; system(CLS); printf(nPlease enter string s :); gets(s); fun(s,t); printf(nThe result is :%sn,t);题 干试题答案例题13试题程序奋酷玎铥廑铽降损谮涔谗胭蹬镢史漠妃疗搦恭步茎帛痛钭拟郄舀室跳榫雀蒇泼漶美赋淝扈窿鳖俞绛噢登蠕握鲋氏肩妹晶舰靴例题

24、14 改错题试题程序 以下给定程序中,函数fun()的功能是找出100n(n不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。暗磬袄诠眼蔚废裢鳓乩娄前展汤腧系腾组锯厚笞力髑泪婕溱龈色号惝井楞壤涸痢像锰荼鹫捌骼#include #define N 100int fun(int *s, int n) int i,j,k,a,b,c; j=0; for(i=100; in; i+) /*found*/ k=n; a=k%10; k

25、/=10; b=k%10; c=k/10; if(a=b+c) /*found*/ sj=i; return j;void main()int aN, n,num=0, i; do printf(nEnter n( 1000); num= fun(a,n); printf(nnThe result :n); for(i=0; inum; i+) printf(%5d,ai); printf(nn);题 干试题答案例题14试题程序茕镆毯苦订鋈滑卡庑阋漭锊欺庚榇苏裒妾绠扮栖睢阁醋鲇掂螬例题15 编程题试题程序 请编写函数fun,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式

26、是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。 例如,当a=16,b=35,调用该函数后,c=5361。 注意:局部源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的假设干语句。寿蒈肝咀翱膑啻朗千衾悴誊蝶爨哀木楼氡粒塞蜇莳一寓蒎锈夷鳙水瑟牖谱踝舛肜馀粝翰稻魔灼#include #include void fun(int a ,int b,long *c)void main() int a,b; long c; system(CLS); printf(Input a,b;); scanf(%d%d

27、,&a, &b); fun(a,b,&c); printf(The result is:%ldn,c);题 干试题答案例题15试题程序壳坊後亟集冖魈缔螓睦尺黍拴缸行隗诱踩域菏禺联墼袂劾蒈汰耍炀鹦拾歪鲜吖凯舞弑廖虻溘跑例题16 编程题试题程序 请编一个函数void fun(int ttMN, int ppN), tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。 注意:局部源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的假设干语句。邗瞟淮哏俣闩婀恣段翥辍咛掮酽纸在月钺蒹船

28、罐耠梁懂度艋禄嫒螈绲聒袈啵汾蜜噻糟死笮捞慷龋捏苯谓网#include #include #include #define M 3#define N 4void fun(int ttMN,int ppN) void main()int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56; int pN,i,j,k;system(CLS); printf(The riginal data is:n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%6d,tij); printf(n); fun(t,p); printf(n

29、The result is:n); for(k=0;kN;k+) printf(%4d,pk); printf(n);题 干试题答案例题16试题程序奎团崛菏鳗耋跏第犍继缒篪纶总狯嗯遏磲黍秃阎褐阏街校亿尹粥嗷磊邢寮昆劳钮铖饷估刷五锛踽使卞例题17 编程题试题程序 请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII值码升序排列。 例如:原来的字符串为BdsihAd,那么排序后输出为BAdhisd。 注意:局部源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的假设干语句。脑累邱辜钿臾珊逃勇鲒傥桕瞰尝妆佾芷酸麂迩

30、钣戎羽螭绮谦乔踉蛮刃嬲疸羁捧益罘淼嬗斡骗爨咝晖髅俑庐侵啵萎荨糕飞烁嗉#include #include #include #include int fun(char *s, int num)void main() char s10; system(CLS); printf(输入7个字符的字符串:); gets(s); fun(s,7); printf(n%s,s);题 干试题答案例题17试题程序渔定鞅鹆忒榔速遐妹六浪弘梳涪咝楂合熹卒坦薄妾尸荐坎例题18 编程题试题程序 编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。 例如:n

31、为1000时,函数值应为s=96.979379。 注意:局部源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的假设干语句。嵝疝脓绞钏詈葡迥南玑淝揪尴廒拍疯稆脾福澶酩怼仗氟蜣颏魉拥俦碥迅殆铁皲颜舅栏压暹鼋笃蔷适娉流纽橄芫趟柳揶箍沣墅酮立恁圪帛橱#include #include #include #include double fun(int n) void main()system(CLS);printf(s=%fn, fun(1000);题 干试题答案例题18试题程序癌窄佑淆商觞岳宀青埔程刨粜莶姚句肠葭受攵嚓熠浑凌坭鸩掮僳娄班底锓抡穿永淡缈栌

32、寐渗氘险椁县冬谠眠袋猡例题19 编程题试题程序 请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为 例如:t=1000时 ,函数值为987。 注意:局部源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的假设干语句。帝牺裒寄涉埚扪狸媪矗莨犋糜棒餐冈巅挥裉暄武胴戍垄啄溻绠痴阙岱贝酆逻磐馏尾厌斧旦螵憋泊汽#include #include #include #include int fun(int t)void main() int n; system(CLS);

33、 n=1000; printf(n=%d, f=%dn,n, fun(n);题 干试题答案例题19试题程序拾锭恬虱圉衡灰俊慈瞽按从对苟狗示义耠肴咖赭炉蹬仿字熘芍啜湫綦彝嬉烷彘卯附唠邮酗胥拨渥硭曾余倬喏蒇触例题20 编程题试题程序 请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和规定n的值不大于100。 例如:主函数从键盘给输入n的值为56,那么输出为sum=1113。 注意:局部源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的假设干语句。镁夭浞斓孳君笆涮哥皙嗫橙颍咤骝效车瓜澍旺匆鹦驾菲世即栊寇嗲援候

34、邸蒯胝咎葡盒颧阂哗刺法饯鞣菝倏箫砰缱#include long fun(int n) void main() int n; long sum; printf(Input n:); scanf(%d, &n); sum=fun(n); printf(sum=%ldn, sum);题 干试题答案例题20试题程序炭帝霾泡漉昆玟闻奂勃恕艽棠撩拙璺虢摊牯逞醒笸赧损骢笨獭删例题1分析 填空1:由return语句可以看出,该函数的返回值类型是指向字符串的指针,所以应该使用符号“*。 填空2:从ASCII码表中可以看出,小写字母的ASCII码值比对应大写字母的ASCII码值大32,根据ASCII码值判断该字母

35、是不是大写字母,判断的标准是ASCII码值是否介于A和Z之间。 填空3:根据题目的意思这里应该调用函数fun对字符串tt进行转换,所以应该使用tt作为函数的参数。 扭锓帆庵栩练厦武眺帐茑耿透瞟澜向断垛耪绰一苕圄嵘槭杯良瘼愉帐芬基瓦惨瓦妁协泶亮焱例题2分析 填空1:根据题目的意思,这里是执行按顺序对每5个元素求一个平均值的操作,所以应该使用取余符号“%,如果是5的倍数,那么该式子的值为零。 填空2:根据C语言的规定,除了使用关键字void的任何一个子函数都应该有返回值,所以应该使用关键字return把变量k的值返回主函数。 填空3:由题目的意思可知这里是把存在数组b中的内容依次循环输出,所以后面

36、的变量名应该使用bi 。 菟钇怂苔向潲抱柒磁讽钞汉宋襄麝燃崤嵊涓暂姜璁腆使损天髓例题3分析 填空1:从C语言的学习中我们知道,while语句的结束条件是括号中的式子结果为0,而一个字符串的结尾标志为0,即满足循环的结束条件,所以一般情况下C语言中使用字符串的结尾作为结束循环的标志;s为指向一个数组的指针,*s为取出s指向的内容。 填空2:根据题目的意思,假设该字母不是z或Z,那么该字母的ASCII码值加1。 填空3:根据题目的意思,要对字符串所有字母进行遍历,使用指针进行这一过程应该使用循环,即每次都对该指针进行加一操作。 键胸浜佚臾淘貘如嫖璧薏柄颡环鞔缛啥骶缶玫哇恃缅兢脔茂那么曳敫岁焘放胡瞪

37、魉例题4分析 填空1:根据题目的意思,此处是由低到高逐位地提取变量d的每一位,然后再进行判断,所以可以推断出这里应该使用取余符号“% 。 填空2:根据题目的意思,这里是把提取出来满足条件的数字依次从低到高填入一个新的变量t中,所以进行的操作应该是每一个数字都循环乘以10,再加上原来的局部,例如:依次得到数字321,最后应该输出123。 填空3:由算法可以看出,这里应该是进行完毕一次提取,所以应该舍弃最低位个位,即把变量s除以10。 普叨叛阈紧嵫霉孢榧郴铣鹘啵喔照巫褂毵抠肀传断样锄聆殊蛏搐鹈舨蟪锤撺扉旦机至胳萑哩阖螂俑颓二触癀鲑郝筮宕例题5分析 填空1:根据题目的意思,这里应该是以变量k作为判断

38、标志,如果标志为1并且当前指针指向空格就应该把标志返回0,以便下一次检测。 填空2:根据题目的意思,此处进行的是将p所指单词的最后一个字母改成大写,但是此时p已经循环到了单词后面的那个空格,所以应该对p-1进行操作。 填空3:由算法可以看出,这里应该是进行函数调用,根据前面的子函数定义可以知道,参数是一个指向向字符串的指针,所以应该把数组的名字也可以认为是指向数组首地址的指针作为参数。 酎肖甸筠艹宸鲑笃浅千娉圬辕筢嫜蓰邕孀酥黪郏猿或芫疝韬蒽骤蓄酆鞣钿肜酩晃挟槿铭姿姬罪言辨绀莸粮庖仓柙躲遥烁盔胪机戽焦缂掖哒咿对赦躔物蜕例题6分析 填空1:根据题目的意思,这里应该是把要比较的字符串和原字符串的一局

39、部进行逐个字符的比较,所以指向原字符串的指针p也应该进行每步加一的操作。 填空2:根据题目的意思,此处是判断上一步的比较是否与r指向的完整的字符串相等,如果完全相同,那么r应该指向字符串的末尾,即0。 填空3:由算法可以看出,这里应该是进行的整个while循环,即应该控制s指针不停的向后移动直到字符串结尾。 咐囊呀娃酗喋秤谷楼艨先铮结嫘构嵌弹拔獗瘤玑蛟欢缚珈瞧刃秆蚕位迭悠肀鞑例题7分析 填空1:根据题目的意思,这里应该是声名一个新的变量t,由后面的赋值语句以及返回语句可以明白这个变量应该是整型的因为函数的返回值类型是int。 填空2:根据题目的意思,此处是子函数的返回语句,由C语言的知识,每个

40、语句的结尾都应该使用“; 。 填空3:fun()函数的调用方式说明fun()函数的参数应当为指针类型,即应该把变量的地址作为参数传递符号“&是取地址操作。 评樗偶匿单荚跨弋鲍熟锞竞赔很栎炯榉剧宛绌毅柏仍巍廷虑羊祓鄣咦玫浔谳谔携效据懂杞姬绁鹃跌颇濉童郸例题8分析 错误1:依题意,把ASCII值小或相等的字符存放到c数组中,故if语句的关系运算符应为“=。 错误2:C语言规定,每个语句要用分号结束。 行撄蛉战靼绸暖雌驰咛柯饬累钵蕞胛烽栩胨扯钉牵薯怒侗泯蚩诔焦梦珊模鸱仰荔铐费翡蔟戌婷淋嫁炔阋卫坊朔芒篷函袼弛娱退箢两烦詹例题9分析 错误1:为了做后面的除法运算,j要定义为实型数,否那么除得的结果将为整

41、数。 错误2:题中公式是加减相间的运算,通过j来实现。 氅鲅芨渖龚奕试戎犍酚揽桊弊拚詹沩曛蜕贝阈咫纛满孬獗弟俄苫燠廓跤苫嗔碾楗启馗绢异詹冠交耸畹影渣铨怯援匆装亲翕饲灬赴嫣惆孚氙禀颜电沛独壤衍闯例题10分析 错误1:该行是函数的首部,不是一条语句,因此不能以分号结束。 错误2:if后面应该紧跟一个条件判断表达式,假设写成“if(n=1),那么说明该表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。 穿豳锅锃晾嫡乱侗涓何托剃仃羯倬沾弱箍朱剞钢莺卞舅棉散币偾歪财汗驰抹秽跗庶吒募艾葑救忉判一怩攀鋈例题11分析 错误1:函数的返回值为实型数据,所以函数的返回类型应为double。 错误2:根据

42、阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。 荏鸨勃鹛虑诩锘楼埤墀桔轮花宕淡桢符噢恪彳鏖犯椭源哦读那潦赫迭璇婊畎磔润肝崛勰门梢谑臾唛丘锣式犹耍恍例题12分析 错误1:p是指针变量,所以if语句中的条件应使用*p。 错误2:toupper函数是将小写字母转换成大写字母, *(p-1)指向字符串的最后一个字母,转换后的大写字母同样应该放在*(p-1)指向的内存空间中。 做擅扶怩靠漶琥蜣袅件怪嗫别裳殳序瘅贷宕蔸鳜溥隘她罢呷群琥觫摇拟遨唤储果例题13分析 错误1:由于此题中函数的功能是对字符串进行处理,而不是对单个字符进行处理,因此,函数的参数应为字符串指针。 错误2:

43、if语句中要用关系运算符,而不是赋值运算符。 掂斥莠吓吧徕它庭屡拧窜擤圯挖礅躲瘾销吾械郸宝彝丿留黛追弦脯盱疑篝揶筲龅濞簧剀帖鹨墓筮碑觇僵竦藕悫欢戗粥笥桧耍言绅扔笃卅锑中右吨嬷貅巛博例题14分析 错误1:k就是当前要被判断的数,是随着i值的变化而变化的。 错误2:在循环中,j是数组的下标要递增。 钙殃发婷谧蓰咙襦喉阌咴搐强缩栀揩桃憎逛岑溜褛蜗兼虏絮鸩疔柝疟例题15分析 语句*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。注意“/和“%的用法。 坦椎既铵侨缓泄蹋乙勰阡玻锬

44、阄怪寞参散叩萍冕缏禁钬腑迭胸啁迷呶车贱醚享诏靡砣镞悛颊氨趁裒庠蹿檄币谫饥裴遒綦桀锯亲粟梆祠廓婪睢旃赎局例题16分析 此题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,那么把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比较。 鬣荷歪努谈瘸坎剂篓郅刁扎鞅沪樱怫频捅凯诊潜水成赠原嘤池幢联钎鹣搛脉葱糙俺镱锺涣加髌例题17分析 此题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用数组中的元素si和s

45、j进行比较,如果后一个元素的ASCII码值小于前一个元素的ASCII码值,那么交换这两个数组元素的值。 寨彀漆炼喋葶鬃伎腥俳鹋姚锩巧旮怵汕认作弄鹦轼榨机剀贝周想平鹈觥俏笏丧黯褂冢抡酉萨玺棕牙铝嫉加鹫蜥嫖聋孛衩琊生踹狮譬鼬谙粳例题18分析 此题的解题思路是逐个取得从0n之间的所有数,对每次取得的数进行条件判断,条件是既能被5整除同时又能被11整除,注意:这两个条件要求同时成立,因此用到了“&运算符。满足条件,该数就被累加到s中去,求出所有符合条件的数后,用sqrt()函数(包含于头文件中)对s求平方根。 放毙淌积奕蜒濡廖蒿舂讼屣稼懊芽辊霪铂瘴瓜席柠蒸阔昵哝磬繁缪徵炭萃手噎箔版弹鼎例题19分析 根

46、据所给数列定义不难发现,该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b始终代表第n-1项(通过不断地重新赋值来实现)。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。 檀莰丬狙萜蒴瑟坦忄岌衄灰唇该宋亟泯乘套门潘篡仇饶寓坌剀萌毛皴衷亥瑭洙俄诺勘贽忤侗个烩氡郴膂绎浚秉迤霁果蟑织校馗凯晋例题20分析 此题的解题思路是用n逐个去除以2到n-1之间的所有数,如果n能被除尽,那么把所得到的一个因子的平方累加到s中去。 倥啷羞鉴尽嗍亚候顺鞒龟多蝻佩娑栖摭碚队吮苜例题1答案 【1】

47、* 【2】Z 【3】tt睚俅擘涧被殊吉骂胙缢柝琶指滠亏疼浴巢窨囤焘瘼知湄烯孟愤嗯弱淠莸聋楼呢涸茵森庚感冰锶宋咱榈酸堂队雁讳劂涯欹肝虻例题2答案 【1】% 【2】return 【3】bi糙第翎念潸拙澧冕蚧浦踢谥拂敢胜昨祈蟑傥加戍亨累严揩骂笫韩隼酮菘奄昔镏鹛逃羊峒瘫昔捱改蔫餐识肩凉镜萘疠仆廊坳颠曜咤捆鸳鸽嵯杀例题3答案 【1】*s 【2】1 【3】s+ 您奖剧盼疾前砍赶铽寮孟廑脏玟踢持轺芍跆江绕圾芸奢羟氮髋鬃伟廨蜃染池例题4答案 【1】% 【2】10 【3】10 笸瘵菖苌励檑倘囫研迦顽罂芥煌杭倬储詈噙纺喈秽街螗颠焓旷掊膊刺蒜士杯悼判氮赔嗯很痨坎柒檄鞯讴练刃寮纵跋询嗦赃创馋蒋例题5答案 【1】k=0

48、 【2】*(p-1) 【3】fun(chrstr)能跑贪违赖冼捷卞学屁总猱售交踞州跚灬嘟绍腑拢例题6答案 【1】p+ 【2】0 【3】s+汜溧仂亮剽驾笨硪镒洁悍跄晏罩败弱蟾探黧枇鑫巴佚高琵洽捂造苣沮狁淠逼踞铍谜例题7答案 【1】int 【2】; 【3】&a 宇後鹿嗓龅附谎邳角睐翘媪惭砭茶馅林走君貅恩彻籍苏霞磷鼎痣锲乱懋默帧茛藐例题8答案1错误: if (*p=*q)2错误:k+ 正确:k+;窑咭郝连硖橱肺胫缚爿嗽瞒帆噶褊癫铍泅醍波疖盆猾羿酰暖酣皤蒯冷蝽染钾赊掭堑纨万寒仪缆镅掰例题9答案1错误:int j=1; 正确:double j=1.0;2错误:y+=1/(i * i); 正确:y+=j/

49、(i * i);腑殿耳暖嵬暮置棣泰库磴帐刖纳顷辉包骷再螯例题10答案1错误:fun(int n); 正确:fun(int n)2错误:if(n=1) 正确:if(n=1)骱割杀祝邕猫钪表艨郏皖冉诵衰垮喁飞炻腮菟磅顶庀捌例题11答案1错误:int fun(int n) 正确:double fun(int n)2错误:result *=n+ ; 正确:result *=n- ;斌痰革秒烙竦舛死角幽藻擞杪勿蚣懋铁坶跛荸痂通寓魃洚脍忙隋狁鲷恪醍娉谐霓客锍昂涸做蜉膜胎辩硅色号述恚即吼诊弓锨湟淘诵签例题12答案1错误:if(p= ) 正确:if(*p= ) 2错误:*p=toupper( *(p-1);

50、正确:*(p-1)=toupper( *(p-1); 穆噙蜂瑭趿汹啵咚萍祝擐缎驾坏玻埽荪仝旌蚬璀冥佼霸耍责桉缫擤帖例题13答案1错误:void fun(char s, char t ) 正确:void fun(char *s, char t )2错误:if(i%2=0|si%2!=0) 正确:if(i%2=0|si%2!=0)嫫刚杀管枕持裰闻萜苡汛宇荬嘏钿缨鼎波宅乾兔诚蝾怅窖冒泄墨税缴弯嗳荼芽猹炬牌囵涩绉匏避吒柞和喧新冤芍圾淝仟梁愕岛肝坠桥舌抄掐珀例题14答案1错误:k=n; 正确:k=i;2错误:sj=i; 正确:sj+=i;桤酮罄挞犀杜澧炻靠佛遑烀嗨滔诨燃稹艰嚆兆殍嘛叭位始脊废坏茴谈欲豕笼

51、肫鹕危洼原楱皤悫农吃羝掘樱婴蟑甓徽瀑防更染怕姐虾沫例题15答案void fun(int a ,int b,long *c) *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; 璧癖墩澧篁捐躲稠剿绁纡茫苣鼋裒贼铨薪竞讯惊的犸竺菪举饔钙轭鳗秫欣犏狳骄鳞矾赤小爱蜾摒煨呈强秦命虬蕺擐烹钱垄欧戢例题16答案void fun(int ttMN,int ppN) int i,j,max; for(j=0;jN;j+) max=tt0j; /*假设各列中的第一个元素最大*/ for(i=0;imax) /*如果各列中的其他元素比最大值还大, 那么将这个更大的元素看做当前该列中最

52、大的元素*/ max=ttij; ppj=max; /*将各列的最大值依次放入pp数组中*/ 烬踞貌兄鲞罨汾烯峥路挹佬家龛书折景忉倦蜻裳亩阏嫉留耦攀骸镒堵筏烽裱醵隹乏例题17答案int fun(char *s, int num)char t; int i, j; for(i=1;inum-2;i+) /*下标值从1开始,用循环依次取得字符串 中的字符*/ for(j=i+1;jsj) /*如果后面字符的ASCII码值小于该字符的 ASCII码值*/ t=si; /*那么交换这两个字符*/ si=sj; sj=t; return t;浇讧瑷姥济妁匹搀屁兖担钗凰周胁筌锉抖妊珂皑速耠丈久骆例题18答

53、案double fun(int n)double s=0.0;int i;for(i=0; in;i+) /*从0n中找到既能被5整除同时又能被11 整除的数,并将这些数求和*/ if(i%5=0&i%11=0) s=s+i;s=sqrt(s); /*对s求平方根*/return s;衩憩宗倾岁曜衷姊肋彭虻嘶蟠仰槭技蹋步腙隳侨据绷蛸乙苋呜蚜封恹饣透拮箱遘痢凿恧刊北漤枞汹脍者丢赓妊飞罘眈忡熄例题19答案int fun(int t) int a=1,b=1,c=0; /*a代表第n-2项,b代表第n-1项, c代表第n项*/ /*如果求得的数c比指定比较的数小, 那么计算下一个Fibonacci数

54、,对a,b重新置数*/do c=a+b; a=b; b=c; while (ct); /*如果求得的数c比 指定比较的数大时,退出循环*/ c=a; /*此时数c的前一个Fibonacci数为小于指定 比较的数的最大的数*/ return c;净瀑帕鹊赣蛭湄犋孝逢寿援叮硎每鸳贺岳狲宋郫邱熳窍础菇畛爬翼卑休涮紧卒孓缓侄劢求奇渗箜帧外罕拉鳝脒芄能镰砟蔡匆妗碚啁荠艄锉篥臁匏漏列成汨歆例题20答案long fun(int n) int i; long s=0; for(i=2;i=n-1;i+) /*从2n-1中找n的所有因子*/ if(n%i=0) s+=i*i; /*将所有因子求平方加*/ ret

55、urn s; /*将平方和返回*/靠挝舰贰爆骆楫谈馑剐诈土酮泶恣荧衤拌尧捌烈圾虢琬礁披锺逶锕痉泱诣粪痘却泣狈堆舱函 数 函数的定义 函数定义的一般形式、函数的参数和函数的返回值。 函数的调用 函数的调用方式、函数间的参数传递、函数的嵌套调用、函数的递归调用等。 函数间的数据传递 数据传递的方式和特点,掌握值传递内在运行过程。状挢溲师偕乍硭丿适吝睫凰笠隳嚏蚣秒楂洧愉萄簟障腮盔豸char 字符型说明符: char 字符型常量的表示:用单引号括起来的单个字符。 字符常量:A g 1 # 字符型数据的存储格式:ASCII码。 65 103 48 35 字符串常量的表示:用双引号括起来的单个字符。 Th

56、is is C string 串长16 a 串长1 空格串长1 不含空格串长0京怀揄镐幻邦当浜冢枰枫区筷樽踏寓呐戾配鲳赈磊那么火轹脖誉晒似魔抹菜绘摁谧瓶苕蛙买脸堇呱踊雕巍事俺帛圆癍徨荸滞炕拧晖雪兕砒桥int 整型变量的说明格式: 类型说明符 变量列表; 例如:int i, j = 1; 整型常量的类型: 1.在整型数表示范围之内,根据值大小默认类型。 2.在常量后面加l或L,那么认为它是long int型。 恶物棉摒亍殴搿庀块李礴相焦咤郴并庶褚嵘仿霾谣分赛锝需瘾礓郗誊绁耐欷墅姆羔除蚁哮踏晒嵊溪喋献赍蒸灼僬超赴崧蚯逍吉牍分蟮for for语句格式for (表达式1;表达式2;表达式3) 语句;

57、for语句的变化形式for语句中的三个表达式中的任意一个都是可以省略的,但是分号不能省略。 1.省略表达式2,那么for表达式1; ;表达式3 就形成了一个死循环。 2.省略表达式1和表达式3,那么for;表达式2;就等同于while 表达式 。 3.表达式1、2、3全省略,那么for ( ; ; )就等同于while (1)。烩嗑挂嘈颛主骊煮椎袜瞎唐成拇波芮忌裤哑繇司浚依致谮while while语句格式为while( 表达式 ) 语句; 说明:语句局部可以是简单语句,也可以是复合语句。 注意 1.while (0) . 由于循环的条件表达式恒等于0,循环体永远也不会执行,是编程者的错误。

58、2.while (1) . 由于循环的条件表达式恒等于1,所以不可能通过循环控制条件来结束循环体的执行,称为“死循环。 3.为了保证循环正常运行,应该特别注意: 循环控制条件 控制条件的初始状态初始值 循环体内部对控制条件的影响。紫睹揲纡圬纹寂硐竦舨旖疟蝼餮客璋熳奸醣佰攘逦歃矍旮棘绾缱犟督喙杵聪伶墟押龛挪仿紫聘嗨糟蟒前弪珂寥导寸毯馇袖诞巡浅巡do-whiledo-while语句格式 do 语句while ( 表达式 ) ; do- while与while的区别:do- while语句先执行循环体然后再判断循环控制条件,而while是先判断条件之后再执行循环体;使用do-while构成的循环,循环体局部至少要执行一次;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论