計算機(jī)二級改錯_第1頁
計算機(jī)二級改錯_第2頁
計算機(jī)二級改錯_第3頁
計算機(jī)二級改錯_第4頁
計算機(jī)二級改錯_第5頁
已閱讀5頁,還剩170頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

g上機(jī)部分:1、本資料匯集了2010年以前所有的全國計算機(jī)等級考試二 一萼4,由=一級C語言的上機(jī)考試真題,具有很高的真實性、權(quán)威性和全面性, /也具有較強的參考價值,是備戰(zhàn)全國計算機(jī)等級考試二級C語言的良師益友,衷心希望本資料能為大家考試成功加油助力.2,本資料在每道題的后面都有參考答案和詳細(xì)分析,精講考點,分析題眼,詳解重點和難點并給出應(yīng)試技巧,為你輕松過關(guān)鋪路墊石.3、本資料內(nèi)容全面,對100套題做了詳細(xì)歸類,望各位學(xué)員能夠舉一反三,在短時間內(nèi)提高等級應(yīng)試能力.4、機(jī)試考試有三道大題,第一題是程序填空,占分30分,第二題是程序修改,占分30分,第三題是程序編寫,占分40分,整個上機(jī)考試分值100分,考試時間60分鐘.5、上機(jī)考試的題目每年變化不大,考生只要平時基礎(chǔ)知識扎實,在考前強化時多做些上機(jī)考試模擬題,見多識廣,上機(jī)考試時就會遇到跟自己考前上機(jī)練習(xí)極其類似的題目,從而順利通過考試.6、考試中計算機(jī)出現(xiàn)故障、死機(jī)、死循環(huán)、電源故障等異常情況(即無法進(jìn)行正??荚嚂r),應(yīng)舉手示意與監(jiān)考人員聯(lián)系,不得擅自關(guān)機(jī)和做出其它自行處理.7、上機(jī)考試時應(yīng)明確,考生目錄位于考試環(huán)境界面的左上角,每一個題目對應(yīng)的程序文件都存放在考生目錄下,要做每一道題時,應(yīng)先按平時掌握的打開文件的方法在考生目錄下打開每一道題所對應(yīng)的程序文件,然后再做題,做題的過程應(yīng)注意保存文件.8、上機(jī)考試做每一道題時,應(yīng)盡量使用C編譯系統(tǒng)自身的編譯、連接功能調(diào)試程序,以便很快發(fā)現(xiàn)語法錯誤,解決語法錯誤,編譯、連接完成后,對得到的程序結(jié)果還應(yīng)認(rèn)真分析,確保程序沒有邏輯錯誤為止.9、機(jī)試填空題應(yīng)注意:(1)一般設(shè)置3個填空;(2)填空后應(yīng)將填空序號和填空下劃線刪除,防止編譯出錯.10、機(jī)試修改題應(yīng)注意:(1)錯誤一般有2個或3個;2(2)錯誤一般位于每個found之下一行或兩行范圍之內(nèi).11、機(jī)試編程題應(yīng)注意:(1)編程題一般都是在被調(diào)用的函數(shù)之內(nèi)編寫;(2)所編寫的被調(diào)用的函數(shù)要與調(diào)用函數(shù)保持和諧統(tǒng)一,符合被調(diào)用與調(diào)用的關(guān)系.第一部分程序填空題宇特美:第1-2題1、函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。若形參ch中是數(shù)字字符‘0'?'9',則'0'轉(zhuǎn)換成‘9',T'轉(zhuǎn)換成'8','2'轉(zhuǎn)換成'7',……,’9'轉(zhuǎn)換成'0';若是其它字符則保持不變:并將轉(zhuǎn)換后的結(jié)果作為函數(shù)值返回。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!我們處在同一條起跑線上,每位學(xué)員應(yīng)做好考前沖剌的良好準(zhǔn)備.^include<stdio.h>我們處在同一條起跑線上,每位學(xué)員應(yīng)做好考前沖剌的良好準(zhǔn)備./**********found**********/ 1 fun(charch)廠/**********found**********/if(ch>二'O'&&_2—)/**********found**********/return'9*-(ch- 3 );returnch;)mainO{charcl,c2;printf(*\nTheresult:\n");cl=,2';c2=fun(cl);printf(*cl=%c c2=%c\n*?cl,c2);cl=,8*;c2=fun(cl);printf(*cl=%c c2=%c\n*?cl,c2);cl=,a;c2=fun(cl);printf(*cl=%c c2=%c\n*,cl,c2);答案:【l答案:【l】char[2]<='9'⑶‘O'由主:函數(shù)中的語句"c2=fun(cl);”知[:函數(shù)fun的返回類型為字符,故第一空應(yīng)填char;在題面中要求對數(shù)字字符進(jìn)行轉(zhuǎn)換,故第二空的1:1的是判斷字符ch是否為一數(shù)字字符,即ch是否在'0'?'9'之間故第二空應(yīng)填ch<='9'或其等效形式;第三空處語句的目的是返回轉(zhuǎn)換后的結(jié)果,即返回一字符,其所對應(yīng)的數(shù)字與轉(zhuǎn)換前字符所對應(yīng)的數(shù)字的和為9,故第三空應(yīng)填'0'或其等效形式。2、給定程序的功能是將大寫字母轉(zhuǎn)換為對應(yīng)小寫字母之后的第五個字母;若小寫字母為v?z,使小寫字母的值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f:若形參是字母W,則轉(zhuǎn)換為小寫字母b。請在程序的卜劃線處填入正確的內(nèi)容并把卜劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BIANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!8include<stdio.h>^include<ctype.h>charfun(charc)(if(c〉='A'&&c<='Z')c=c+32;TOC\o"1-5"\h\zif(c>='a'&&c<=u') 0Cc=c+ 1 ; ■elseif(c>=,v*&&c<=,z*)c=c-21;/**************foiind**************/return 2 ;)main(){charcl,c2;printf(*\nEnteraletter(A-Z):");cl=getchar();if(isupper(cl))(/**************fQUn(j**************/c2=fun( 3 );printf(*\n\nTheletter\'%c\'changeto\'%c\'\n",cl,c2);}elseprintf(*\nEnter(A-Z)!\n*);)答案:【1】5 [2]c [3]cl本題著重考察考生對C語言中?些簡單算法的掌握情況。解題思路:先判斷輸入的字母是否是大寫字母,若是大寫字母,將其轉(zhuǎn)化為相應(yīng)的小寫字母,方法是該大寫字母對應(yīng)的ASCI【碼值加上32就是其小寫字母的ASCII碼值,再判斷該小寫字母是否是a?u,若是轉(zhuǎn)化為其后的第5個字母。若該小寫字母是v?z,則將其ACSII碼值減去21,轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。題中第一個空填"5":C語言中,字母從a?z或A?Z的ASCII碼值是依次遞增的,所以將其轉(zhuǎn)換為其后的第5個字母應(yīng)該是"c=c+5;”或相同作用的語句。題中第:個空填"c":通過return語句將被調(diào)用函數(shù)中c的值帶回主調(diào)函數(shù)中去。題中第二個空填"cl”:此句是調(diào)用fun()函數(shù),括弧中是其實際參數(shù)。本評析僅作參考。遂歸樊:第3—4題3、下列給定程序中,函數(shù)fun()的功能是:用遞歸算法計算斐波拉契級數(shù)列中第n項的值。從第一項起,斐波拉契級數(shù)序列為1,1,2,3,5,8,13,21,……,例如,若給n輸入7,該項的斐波拉契級數(shù)值為13。試題程序:卷include<stdio.h>longfun(intg){switch(g){case0:return0;case1: 1_:return1;|return(_2__);)main()longfib;intn;printf("Inputn:w);scanf("%d",__3__);printf(nn=%d\nM,n);fib=fun(n);printf(nfib=%d\n\nn,fib);)答案:【1】case2 [2]fun(g-l)+fun(g-2) [3]&n【解析】填空1:根據(jù)題目的意思,這里應(yīng)該是對于值為1和2的時候的處理,注意case語句常量后應(yīng)用的是冒號,而且不同的case對應(yīng)同?個值可以連續(xù)寫(像題目中那樣)。填空2:根據(jù)題目的意思,此處是求值的遞歸部分,由遞推公式可以很容易的得到答案的形式,對于這種簡單的遞歸考生一定要掌握。填空3:由算法可以看出,此處是輸入數(shù)列的項數(shù)n,使用了scanf函數(shù),其參數(shù)應(yīng)該是變量的地址,即使用符號4、卜.列給定程序中,函數(shù)fun()的功能是:應(yīng)用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如卜.:x,=(x0+t-)/2例如,2的平方根為1.414214#include<math.h>#include<stdio.h>1fun(doublea,doublexO){doublexl,y;_2_;if(fabs(xl-x0)>=0.00001) 3 ;elsey=xl;returny;)main(){doublex;printf("Enterx:");scanf &x);printf("Thesquarerootof%lfis x,fun(x,1.0));)答案:【1】double [2]xl=(x0+a/x0)/2.0 [3]y=fun(a^l)【解析】填空1:這里要問的是函數(shù)的類型,由主函數(shù)main。對函數(shù)的調(diào)用可以得到函數(shù)的類型是double型的,當(dāng)然也可以由函數(shù)的返回值語句得到。填空2:我們看到在下一條語句中已經(jīng)開始對變量xl的值進(jìn)行比較了,所以這里要對xl進(jìn)行賦值,由題意可知xl=(x?a/x0)/2。。填空3:用C語言求平方根的方法般有兩種經(jīng)典的算法,它們分別是迭代法和遞歸法,本題要求用遞歸法。該程序采用了if語句,程序的含義是當(dāng)?shù)Y(jié)果差小于誤差時進(jìn)行循環(huán)。文件澳號類:^5—9題5、給定程序的功能是:從鍵盤輸入若干行文件(每行不超過80個字符),寫到文件myfile4.txt中,用T作為字符串輸入結(jié)束的標(biāo)志。然后將文件的內(nèi)容讀出顯示在屏幕上。文件的讀寫分別由自定義函數(shù)ReadText和WriteText實現(xiàn)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,注意:#includettinclude^include源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!<stdio.h>請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,注意:#includettinclude^include源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!<stdio.h><string.h><stdlib.h>voidWriteText(FILE*);voidReadText(FILE*);FILEfp;mainO{if((fp=fopen(*myfile4.txt*,*w*))=NULL){printf("openfai1!!\n*);exit(0);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt*,*r*))=NULL){printf(*openfail!!\n*);exit(0);}ReadText(fp);fclose(fp);)/**********found**********/voidWriteText(FILE.1 ){charstr[81];使程序得出正確的結(jié)果.演過去只有上赦飛printf(*\nEnterstringwith-1toend:\n");gets(str);while(strcmp(str,!=0){/**********found**********/fputs( 2 ,fw);fputs(*\n*,fw);gets(str);})voidReadText(FILE*fr){charstr[81];printf(*\nReadfileandoutputtoscreen:\n");fgets(str,81,fr);whi1e(!feof(fr)){/**********found**********/printf 3 );fgets(str,81,fr);))本題考核點為:文件的讀寫函數(shù)等。答案:[1]*fw [2]str[3]str題中第一個空填"*fw":fw是一個文件指針,從鍵盤上讀入數(shù)據(jù),輸入其所指向的文件中。題中第二空填"str":fputs函數(shù)向文件中寫數(shù)據(jù),其函數(shù)原型為:fputs(ch,fp)其中ch是要輸出的字符,它可以是一個字符常量,也可以是?個字符變量。fp是文件指針變量。題中第三個空填"str":printf函數(shù)的一般格式為:printf(格式控制,輸出表列)1、“格式控制”是用雙引號括起來的字符串,也稱"轉(zhuǎn)換控制字符串”,它包括兩種信息:格式說明:由2"和格式字符組成,如%d,%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。格式說明總是由飛”字符開始的。普通字符,即需要原樣輸出的字符。2、“輸出表列":是需要輸出的一些數(shù)據(jù),可以是表達(dá)式。6、給定程序的功能是:調(diào)用函數(shù)fun將指定源文件中的內(nèi)容復(fù)制到指定的目標(biāo)文件中,復(fù)制成功時函數(shù)返回值是1,失敗時返回值為0。在復(fù)制的過程中,把復(fù)制的內(nèi)容輸出到終端屏幕。主:函數(shù)中源文件名放在變量sfname中,目標(biāo)文件名放在變量tfname中。請在程序的卜劃線處填入正確的內(nèi)容并把卜.劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKLC中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include <stdio.h>^include <stdlib.h>intfun(char*source,char*target){FILE*fs,*ft;charch;/**********found**********/if((fs=fopen(source, 1 ))=NULL)return0;if((ft=fopen(target,"w"))=NULL)return0;printf(*\nThedatainfile:\n");ch=fgetc(fs);/**********found**********/while(!feof( 2 )){putchar(ch);/**********found**********/fputc(ch,_3 );ch=fgetc(fs);)fclose(fs);fclose(ft):printf(*\n\n*);return1;)main(){charsfname[20]=*myfilel*,tfname[20]=*myfile2*;FILE*myf;inti;charc;myf=fopen(sfname,"w");printf(*\nTheoriginaldata:\n");for(i=l;i<30;i++){c='A'+rand()%25;fprintf(myf,"%c”,c);printf(飛c",c);}fclose(myf);printf("\n\n");if(fun(sfname,tfname))printf("Succeed!;elseprintf("Fail!”);}答案:[2]fs[3]ft本題的考核點是文件的讀寫函數(shù)等。題中第一個空填"r"是文件的使用方式之一,其含義是為輸入打開一個文件用于輸入。題中第二個空填"fs”:此語句是設(shè)置循環(huán)退出條件,即判斷是否到文件末尾。題中第三個空填"ft":fputc函數(shù)功能是把一個字符寫到磁盤文件上去。凡一般調(diào)用形式為:fputc(ch,fp);其中ch是要輸出的字符,它可以是一個字符常量,也可以是一個字符變量。fp是文件指針變量。7、給定程序中,函數(shù)fun的功能是:將自然數(shù)1?10以及它們的平方根寫到名為myfile3.txt的文本文件中,然后再順序讀出顯示在屏幕上。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include <math.h>^include<stdio.h>intfun(char*fname){FILE*fp;inti,n;floatx;if((fp=fopen(fname,*w*))==NULL)return0;for(i=l;i<=10;i++)/**********found**********/fprintf( 1 ,*%d%f\n”,i,sqrt((double)i));printf(*\nSucceed!\n*);/**********found**********/—2—;printf(*\nThedatainfile:\n*);/**********found**********/if((fp=fopen( 3 ,"r"))=NULL)return0;fscanf(fp,&n,&x);while(!feof(fp)){printf(*%d%f\n*,n,x); fscanf(fp, &n,&x);}fclose(fp);return1;)mainO{charfname[]=*myfile3.txt*;fun(fname);)答案:[1]fp[2]fclose(fp)[3]fname本題考核點為:文件的打開,關(guān)閉和讀寫操作。題中第一個空填"fp":是向文件指針fp所指向的文件中寫數(shù)據(jù)。題中第二個空填"fclose(fp);此語句是文件的關(guān)閉操作。題中第三個空填"fname":fopen函數(shù)用于文件的打開操作,其調(diào)用形式一般為:fopen(文件名,使用文件方式)。"fname”為所要打開的文件名。8、給定程序的功能是調(diào)用fun函數(shù)建立班級通訊錄。通訊錄中記錄每位學(xué)生的編號、姓名和電話號碼。班級的人數(shù)和學(xué)生的信息從鍵盤讀入,每個人的信息作為?個數(shù)據(jù)塊寫到名為myfile5.dat的二進(jìn)制文件中。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾卜,的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!4include<stdio.h>^include<stdlib.h>#defineN5typedefstruct{intnum;charname[10];chartel[10];}STYPE;voidcheck0;/**********found**********/intfun( 1 *std)/**********found**********/ 2 *fp;inti;if((fp=fopen(*myfile5.dal","wb"))二二NULL)return(0);printf(*\nOutputdatatofile!\rT);for(i=0;i<N;i++)/**********found**********/fwrite(&std[i],sizeof(STYPE),1, 3 );fclose(fp);return(1);)main(){STYPEs[10]={{1,"aaaaa","111111"},⑵"bbbbb","222222”},[3,“ccccc”,"333333"),{4,"ddddd","444444”},{5,"eeeee","555555”}};intk;k=fun(s);if(k==l){printf("Succeed!");check();}elseprintf("Fail!");)voidcheck(){FILE*fp;inti;STYPEs[10];if((fp=fopen(*myfile5.dal","rb"))二二NULL){printf("Fail!!\n");exit(0);}printf(*\nReadfileandoutputtoscreen:\n");printf(*\nnumnametel\n*);for(i=0;i<N;i++){fread(&s[i],sizeof(STYPE),1,fp);printf("%6d %s%s\n*?s[i].num,s[i].name,s[i].tel);)fclose(fp);)答案:[1]STYPE[2]FILE[3]fp本題考核點為結(jié)構(gòu)體和文件的操作等。題中第?空填"STYPE":typedef可以用來聲明新的類型名來代替已有的類型名,此題用“STYPE”來代替未命名的結(jié)構(gòu)體。題中第二空填"FILE":"FILE"關(guān)鍵字用于聲明文件指針。題中第三空填"fp":fwrite函數(shù)的一般調(diào)用形式為:fwrite(buffer,size,count,fp);其中buffer:是一個指針,是要輸出數(shù)據(jù)的地址;size:是要寫的字節(jié)數(shù):count:要進(jìn)行讀寫多少個size字節(jié)的數(shù)據(jù)項:fp:文件型指針。9、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號從小到大排序后,再用二進(jìn)制方式把排序后的學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。請在程序的下劃線處填入1E確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKLC中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!^include<stdio.h>^defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*fi1ename){FILE*fp;inti,j;STUs[N],t;/**********found**********/fp=fopen(filename,—1_);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0:i<N-l;i++)for(j=i+l;j<N;j++)/**********found**********/if(s[i].sno_2_){t=s[i]:s[i]=s[j];s[j]=t;}fp=fopen(filename,"wb");/**********found**********/_3_(s,sizeof(STU),N,fp);fclose(fp);)mainO{STUt[N]={{10005,*ZhangSan*,95,80,88},{10003,"LiSi”,85,70,78),{10002,*CaoKai\75,60,88),{10004,*FangFang*,90,82,87},(10001/MaChao\91,92,77}},ss[N];inti,j;FILE*fp;fp=fopen(*student,dat*,"wb");fwrite(t,sizeof(STU),5,fp);fclose(fp);printf(*\n\nTheoriginaldata:\n\n*);for(j=0;j<N;j++){printf(*\nNo:%ldName:%-8sScores:*,t[j].sno,t[j].name);for(i=0;i<3;i++)printf(*%6.2f”,t[j].score[i]);printf(*\n*);)fun("student,dat*);printf(*\n\nThedataaftersorting:\n\n*);fp=fopen(*student,dat*,"rb");fread(ss,sizeof(STU),5,fp);fclose(fp);for(j=0;j<N;j++){printf(*\nNo:%ldName:%-8sScores:*,ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf(*%6.2fss[j].score[i]);printf(*\n*);})答案:[2]s[j].sno[3]fwrite本題的考核點是結(jié)構(gòu)體類型變量的定義和引用以及文件函數(shù)的應(yīng)用。fopen函數(shù)的作用是打開一個文件,在fun函數(shù)中為輸入打開一個二進(jìn)制文件,所以第一個空填:"rb”或與此語句功能相同的語句;利用嵌套循環(huán)語句按學(xué)號從小到大排序,所以第二個空填:>s[j].sno或與此語句功能相同的語句;再用..進(jìn)制方式把排序后的數(shù)據(jù)輸出到指定文件中,fwrite函數(shù)的作用是往文件的當(dāng)前位置寫入指定字節(jié)的數(shù)據(jù)塊,所以第三個空填:fwrite。字符串類:第70—3刎10、給定程序中,函數(shù)fun的功能是:求出形參ss所指字符串?dāng)?shù)組中最長字符串的長度,其余字符串左邊用字符*補齊,使其與最長的字符串等長。字符串?dāng)?shù)組中共有M個字符串,且串長<N。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKLC中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!^include <stdio.h>#include 〈string.h>ttdefine M 5#define N 20voidfun(char(*ss)[N]){inti,j,k=0,n,m,len;for(i=0;i<M;i++){len=strlen(ss[i]);if(i==0)n=len;if(len>n){/**********foun(j**********/n=len; 1 =i;}}for(i=0;i<M;i++)if(i!=k){m=n;len=strlen(ss[i]);/**********found**********/for(j= 2 ;j>=0;j-)ss[i][m—]=ss[i][j];for(j=0;j<n-len;j++)/**********found**********/-3一='*';})main(){charss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};inti;printf(*\nTheoriginalstringsare:\n");for(i=0;i<M;i++)printf(*%s\n*,ss[i]);printf('\n");fun(ss);printf("\nTheresult:\n*);for(i=0;i<M;i++)printf(*%s\n*,ss[i]);(答案:[2]s[j].sno[3]fwrite本題考查的是字符串中字符的插入。在fun函數(shù)中,第一個for循環(huán)的作用是求出所有字符串中,長度最長的字符串的長度n,并記下此字符串在數(shù)組中的下標(biāo)k,故第一空應(yīng)填匕在第二個for循環(huán)中,如果當(dāng)前字符串不是最長字符串,則計算其長度len,并將從卜.標(biāo)0到len的字符向右移動n-len位,故第二空為len;最后,再通過一個for循環(huán)語句在當(dāng)前字符串前面補充len-n個w,故第三空應(yīng)為或其等效形式。11、下列3定向程序中,fun()函數(shù)的功能是:將p所指字符串中每個單詞的最后一個字母改成大寫(這里的”單詞”是指有空格隔開的字符串)。例如,若輸入:Iamastudenttotaketheexamination則應(yīng)輸出:IaMAstudenTtOtakEthEexaminatioN試題程序:ttinclude<conio.h>ttinclude<ctype.h>#include<stdio.h>4include<string.h>voidfun(char*p)(intk=0;for(;*p;p++)if(k)(if(*p=,')(;=toupper(*(p-l));}~Felsek=l;)main(){charchrstr[64];intd;printf(*\nPleaseenteranEnglishsentencewithin63letters:");gets(chrstr);d=strlen(chrstr);chrstr[d]=*';chrstr[d+l]=O;printf(*\nBoforechanging:\n%s*?chrstr);;printf(*\nAfterchanging:\n%s*,chrstr);)答案:【1】k=0 [2]*(p-l) [3]fun(chrstr)【解析】填空1:根據(jù)題目的意思,這里應(yīng)該是以變量k作為判斷標(biāo)志,如果標(biāo)志為1并且當(dāng)前指針指向空格就應(yīng)該把標(biāo)志返回0,以便F一次檢測。填空2:根據(jù)題目的意思,此處進(jìn)行的是將P所指單詞的最后?個字母改成大寫,但是此時p已經(jīng)循環(huán)到了單詞后面的那個空格,所以應(yīng)該對P-1進(jìn)行操作。填空3:由算法可以看出,這里應(yīng)該是進(jìn)行函數(shù)調(diào)用,根據(jù)前面的子函數(shù)定義可以知道,參數(shù)是一個指向向字符串的指針,所以應(yīng)該把數(shù)組的名字(也可以認(rèn)為是指向數(shù)組首地址的指針)作為參數(shù)。12、str是一個由數(shù)字和字母字符組成的字符串,由變量num傳入字符串長度。請補充函數(shù)fun(),該函數(shù)的功能是:把字符串str中的數(shù)字字符轉(zhuǎn)換成數(shù)字并存放到整型數(shù)組bb中,函數(shù)返回數(shù)組bb的長度。例如:str="Bcdl23e456hui890”,結(jié)果為:123456890。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>#defineN80intbb[N];intfun(chars[],intbb[],intnum)(inti,n=0;for(i=0;i<num;i++)(if([1]){bb[n]=[2];n++;}}return[3];)main(){charstr[N];intnum=0,n,i;printf("Enterastring:\n");gets(str);while(str[num])num++;n=fun(str,bb,num);printf("\nbb=**);for(i=0;i<n;i++)printf("%d",bb[i]);}答案:[1]s[i]>='0(&&s|i|<='9'[2]s[i]-'0,[3]n【解析】填空1:如果當(dāng)前字符的ASCII碼大于字符。的ASCII碼,而小于字符W的ASCII碼,則說明當(dāng)前字符是數(shù)字字符。填空2:將數(shù)字字符轉(zhuǎn)換為數(shù)字的方法是,用當(dāng)前數(shù)字字符的ASCII碼減去字符。的ASCII碼。填空3:題目要求函數(shù)返回數(shù)組bb的長度,而變量n記錄了數(shù)字字符的個數(shù),也就是數(shù)組bb的長度,所以函數(shù)應(yīng)該返回n.73、請補充函數(shù)fun(),該函數(shù)的功能是:把?個整數(shù)轉(zhuǎn)換成字符串,并倒序保存在字符數(shù)組str中。例如:當(dāng)n=13572468時,str="86427531”。注意:部分源程序給出如下.請勿改動主:函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>#include<conio.h>#defineN80charstr[N];voidfun(longintn){inti=0;while([1])(str[i]=[2];n/=10;i++;}[3];main(){longintn=13572468;clrscr();printf("***theorigialdata***\n");printf(nns=%ldMtn);fun(n);printf(n\n%s0,str);)答案:【1】n>0 [2]n%10+'0' [3]str[i]=>\0'【解析】填空1:while循環(huán)的執(zhí)行條件是n>0,當(dāng)n等于0時,說明已經(jīng)將整數(shù)的各位數(shù)字都轉(zhuǎn)換為數(shù)字字符并存入字符申中了。填空2:n對10求余,得到整數(shù)n的個位數(shù)字,在加上字符。的ASCII碼,得到對應(yīng)的數(shù)字字符,并存入字符串str中。填空3:將整數(shù)轉(zhuǎn)換為字符串并倒序存放入字符數(shù)組str中后,還要在str最后加上字符串結(jié)束標(biāo)記符'\0’.14、下列給定程序中,函數(shù)fun()的功能是:從字符串s41,刪除所有小寫字母e。試題程序:1<stdio.h>voidfun(char*s){inti,j;for(i=j=0;_2=;i++)if(s[i]!=1c1))main(){chars[80];printf("\nEnterastring: ");gets(s);printf("Theoriginalstring:n);puts(s);fun(s);printf("Thestringafterdeleted:n);puts(s);printf("\n\n");)答案:【1】include [2]s[i]!='\0' [3]s[j++]=s[i]【解析】填空1:由我們對C語言的掌握和學(xué)習(xí)知道,這是程序?qū)︻^文件的聲明,根據(jù)C語言的規(guī)定頭文件要用關(guān)鍵字include來聲明,并用"#"開始。填空2:這里考查的是對循環(huán)結(jié)束語句的掌握和字符串的結(jié)束標(biāo)志的理解,我們知道字符串由'0'作為結(jié)束標(biāo)志,由題意知,i一直增加到字符串結(jié)束,因此循環(huán)結(jié)束判斷語句使用s[i]!=V)\填空3:由本題選擇條件if(s[i]!=P)可知,如果字符串中的字符不是"c",則執(zhí)行循環(huán),根據(jù)題目的意思這句應(yīng)該執(zhí)行的是s[j++]=s[i],這里考查了自加運算符的靈活使用。75、請補充main函數(shù),該函數(shù)的功能是:從?個字符串中截取前面若干個給定長度的子字符串。其中,strl指向原字符串,截取后的字符存放在str2所指的字符數(shù)組中,n中存放需截取的字符個數(shù)。例如:當(dāng)strl="cdefghij”,然后輸入4,則str2="cde「’.注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線I:填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>#include<conio.h>#defineLEN80main(){charstrl[LEN],str2[LEN];intn,i;clrscr();printf("Enterthestring:\nn);gets(strl);printf("Enterthepositionofthestringdeleted:");scanf([1]);for(i=0;i<n;i++)[2]str2[i]='\0,;printf(wThenewstringis:%s\n",[3]);}【答案】[1] [2]str2[i]=strl[i]; (3)str2【解析】填空1:本題考查對標(biāo)準(zhǔn)輸入函數(shù)scanf()的調(diào)用格式,由后面的程序可以知道,變量n保存了要截取的字符數(shù),注意在n前面不要忘了取址符Y'。填空2:截取前n個字符,就是將字符串strl的前n個字符依次賦給字符串str2的前n個字符。填空3:本題考查對標(biāo)準(zhǔn)輸出函數(shù)printf()的調(diào)用格式,根據(jù)題意,應(yīng)輸出截取后的字符串,即字符串str2。16、給定程序的功能是判斷字符ch是否與串str中的某個字符相同;若相同,什么也不做,若不同,則插在串的最后。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKLC中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>4include<string.h>voidfun(char*str,charch)(while(*str&&*str!=ch)str++;/**********found**********/if(*str_1_ch){str[0]=ch;/**********found**********/一2—=0;})main(){chars[81],c;printf(*\nPleaseenterastring:\n*);gets(s);printf('\nPleaseenterthecharactertosearch:");c=getcharO;/**********found**********/fun(_3_);printf("\nTheresultis%s\n',s);)答案:[1]!= [2]str[l] [3]str2本題著重考察考生對C語言中函數(shù)的調(diào)用以及?些簡單算法的掌握情況。題中第一空填"!=":從題意得知,若字符ch與字符串str中的某個字符相同,什么也不做:若不同,則插在str的最后.因此fun函數(shù)中先設(shè)置了一個循環(huán)從字符串str中尋找字符ch,如果找到則中斷循環(huán)并保留字符ch的地址,否則直循環(huán)到串尾。因此通過判斷*str的內(nèi)容即可判斷是否已找到字符ch.題中第二個空填如果沒有找到字符ch,則在while循環(huán)后str指針指向串結(jié)束符0x00,此時應(yīng)將字符ch寫入這里并在卜.一地址寫入一個串結(jié)束符0x00,所以應(yīng)該是"str[l]=0;"語句。題中第三個空填"s,c":此句是調(diào)用fun()函數(shù),括弧中是其實際參數(shù)。17、給定程序的功能是將在字符串S中出現(xiàn)、而未在字符串t中出現(xiàn)的字符形成一個新的字符串放在U中,U中字符按原字符串中字符順序排列,不去掉重復(fù)字符。例如:當(dāng)s="112345",t="2467*時,u中的字符串為T135”。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BIANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<string.h>voidfun(char*s,char*t,char{inti,j,si,tl;si=strlen(s);tl=strlefor(i=0;i<sl;i++){for(j=0;j<tl;j++)/************found************/if(s[i]=t[j]) 1if(j>=tl)/************found************/?u++= 2 ;}/************found************/_3_='\0':)mainO{chars[100],t[100],u[10printf(*\nPleaseenterstriprintf(*\nPleaseenterstrifun(s,t,u);printf(*theresultis:%s\n)答案:【"break[2]s[i]本題考核點為字符串的查找,賦值考題中第一空填"break;":break為跳出循環(huán)的語句。"if(s[i]=t[j])break;”語句是指當(dāng)s[i]=t[j],即l[j]中的字符已經(jīng)在字符指針s[j]所指向的字符數(shù)組中存在時,循環(huán)就結(jié)束。題中第二空填”和++:是將s[i]賦給*u,然后u加1。題中第三空填"*u": =字符串的最后一個字符應(yīng)該是''0'的。18、請補充函數(shù)fun(),該函數(shù)的功能是:把字符下標(biāo)為非素數(shù)的字符從字符串str中刪除,把字符下標(biāo)為素數(shù)的字符重新保存在字符串str中。字符串str從鍵盤輸入,其長度作為參數(shù)傳入函數(shù)fun()。例如,輸入“abcdefghijkr,輸出“cdfhl”.注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>#defineN80voidfun(chars[],intn)inti,j,k,flag;[1];for(i=0;i<n;i++)(if(i>Ds[k++]=s[i];flag=l;for([2];j<i&&flag;j++)if(i%j==0)(flag=0;[3];s[k]=*\0';}main()(inti=0,strlen=0;charstr[N];clrscr();printf(w\nInputastring:\n");gets(str);while(str[i]!='\0'){strlen++;i++;)fun(str,strlen);printf(n\n***displaystring***\nM);puts(str);)【答案】【l】k=0 [2]j=2 [3]k-【解析】填空1:變量k聲明時沒有初始化,所以要在使用前初始化為0。填空2:如果一個數(shù)能被除了1和其自身之外的數(shù)整除,即余數(shù)為0,則這個數(shù)不是素數(shù)。所以除數(shù)j從2開始取數(shù)。填空3:如果當(dāng)前字符的下標(biāo)為非素數(shù),則應(yīng)將此字符刪除,所以變量k減1,使F一個字符覆蓋它,達(dá)到刪除的目的。19、給定程序的功能是把s串中所有的字符前移一個位置,串中的第一個字符移到最后。例如:s串中原有的字符串為:Mn.123xyZ,則調(diào)用該函數(shù)后,s串中的內(nèi)容為:n.123xyZMo請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!4include<stdio.h>ttdefineN81fun(char*s){charb[N];fprintf(b, s+1,*s);/**************found**************/strcpy( 1);)main(){chara[N];printf("Enterastring:");gets(a);printf(*Theoriginalstringis:");puts(a);/**************foiind**************/fun( 2 );printf("Thestringaftermodified:");/**************found**************/—3_(a);)答案:【1】a [2]s,b [31puts本題的考核點是C語言中循環(huán)語句的使用。提示思路:先保存原字符串的第一個字符,然后將后面的字符依次向前移一位,最后將原字符串的第一個字符添加到新字符串的最后。20、請補充函數(shù)fun(),該函數(shù)的功能是:按O到統(tǒng)計一個字符串中的奇數(shù)數(shù)字字符各自出現(xiàn)的次數(shù),結(jié)果保存在數(shù)組num中。注意:不能使用字符串庫函數(shù).例如:輸入“x=112385713.456+0.909*bc”,結(jié)果為:1=3,3=2,5=2,7=1,9=2。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若I:表達(dá)式或語句。試題程序:#include<stdio.h>#defineN1000voidfun(char*tt,intnum[]){inti,j;intbb[10];char*p=tt;for(i=0;i<10;i++)(num[i]=0;bb[i]=0;}while(【1】)(if(*p>=?0'&&*p<=,9,)L2J;P++;}for(i=lrj=0;i<10;i=i+2,j++)[3];main(){charstr[N];intnum[10],k;printf("\nPleaseenteracharstring:n);gets(str);printf(n\n**Theoriginalstring**\nw);puts(str);fun(str,num);printf(n\n**Thenumberofletter**\n");for(k=0;k<5;k++)(printf(w\nw);printf(n%d=%dn,2*k+l,num[k]);)printf("\nH);return;}【答案】【l】*p [2]bb[*p-'0']++ [3]num[j]=bb[i]【解析】填空1:通過移動指針p,指向字符串tt中的各個字符,當(dāng)指針P所指的字符為'\0'時,即指向字符串tt的最后一個字符,while循環(huán)結(jié)束。填空2:將字符串中的數(shù)字字符'0'到'9'的個數(shù)都保存在數(shù)組bb[10]中。*P」0'實現(xiàn)將字符'0'的個數(shù)保存在bb[O]中,將字符'1'的個數(shù)保存在bb[l]中,依此類推,直到將字符'9'的個數(shù)保存在bb[9]中.填空3:由于奇數(shù)數(shù)字字符的個數(shù)存于bb[l]、bb[3]、bb[5]、bb[7]、bb[9]中,所以for循環(huán)的目的是將這些元素分別賦給num[0]、num[l]、num[2],num[3],num[4].21、卜.列給定程序中,函數(shù)fun()的功能是:從N個字符串中找出最長的那個串,并將其地址作為函數(shù)值返回。各字符串在主函數(shù)中輸入,并放入?個字符串?dāng)?shù)組中。試題程序:Uinclude<string.h>#include<stdio.h>^defineN5itdefineM81fun(char(*sq)[M]){inti;char*sp;:for(i=0;i<N;i++)if(strlen(sp)<strlen(3))sp=sq[i];returnsp;)main(){charstr[N][M],*longest;inti;printf(*Enter%dlines:\n",N);for(i=0;i<N;i++)gets(str[i]);printf(*\nThe%dstring:\n",N);for(i=0;i<N;i++)puts(str[i]);longest=fun(str);printf(*\nThelongeststring:\n");puts(longest);)鐮:【1】char* [2]sp=sq[0] [3]sq[i]【解析】填空1:從C語言的學(xué)習(xí)中我們知道,這里應(yīng)該是對了函數(shù)返回值類型的定義,由下面返回的指針型變量sp可以知道,應(yīng)該定義成char*,注意中間的空格。填空2:根據(jù)題目的意思,此處應(yīng)該是先假設(shè)指針數(shù)組的第1個元素所指的字符串最長,之后對字符串指針數(shù)組進(jìn)行遍歷,即給sp賦初值。填空3:由算法可以看出,這里應(yīng)該是把二維數(shù)組的每一行作為一個字符串的首地址進(jìn)行長度比較,所以若遇字符串長度大于待定最長字符串,則令該字符串為待定最長字符串,如此循環(huán)直至指針數(shù)組末尾,即可得到最長字符串的地址。22、下列給定程序中,函數(shù)fun()的功能是:將字符串p中所有字符復(fù)制到字符串b中,要求每復(fù)制3個字符之后插入一個空格。例如,在調(diào)用fun()函數(shù)之前給字符串a(chǎn)輸入ABCDEFGHIJK,調(diào)用函數(shù)之后,字符串b中的內(nèi)容則為ABCDEFGHIJKo試題程序:#include<stdio.h>voidfun(char*pzchar*b){inti,k=0;while( 1 ){i=0;while(_2__&&*p)(b[k]=*p;k++;p++;i++;)if(*p){b[ 3 ]=' })b[k]="0,)main(){chara[80],b[80];printf("Enterastring:n);gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:n);puts(b);printf("\n\n");)答案:【1】*p [2]i<3 [3]k++【解析】填空1:根據(jù)題目的意思,這里應(yīng)該是利用wile循環(huán)處理字符串,因為字符串的結(jié)束標(biāo)志\0可以作為循環(huán)結(jié)束的判斷條件,所以C語言中很多情況都這樣使用,考生要注意。填空2:根據(jù)題目的意思,此處是對于寫入的字符個數(shù)進(jìn)行計數(shù),如果到3就應(yīng)該結(jié)束這個循環(huán)插入空格,所以應(yīng)該和是否到達(dá)串結(jié)尾為邏輯與的關(guān)系。填空3:由算法可以看出,此處是在輸出結(jié)果中置入空格字符,注意插入空格后指針應(yīng)該后移。23、給定程序功能是用冒泡法對6個字符串進(jìn)行排序。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾卜,的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!^include<stdio.h>ttdefineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++){for(j=i+1;j<6;j++){/**************found**************/if(strcmp(*(pstr+i), 1)>0)p=*(pstr+i);/**************found**************/pstrfi]= 2 ;/**************found**************/*(pstr+j)= 3 ;))})main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf(*\nEnter6string(lstringateachline):\n");for(i=0;i<6;i++)scanf(*%s*,pstr[i]);fun(pstr);printf(*Thestringsaftersorting:\n*);for(i=0;i<6;i++)printfC*%s\n*,pstr[i]);)答案:【1】*(pstr+j) [2]pstr|j] [3]p首先,我們必須先讀懂題中程序的大致意思,這是正確填空的重要前提。程序中的重要思想如下:1、建立了一個二維字符串?dāng)?shù)組,用于存放用戶輸入的6個字符串;2、建立了一個指針數(shù)組,目的是用6個指針分別指向6個字符串;3、函數(shù)fun()的形參只有一個,即指針數(shù)組pstr口,這表明要想在函數(shù)fun()中對6個字符串進(jìn)行操作,只能通過pstr口中的6個指針。題中第一個空填”*(pstr+j)Z觀察源程序可以發(fā)現(xiàn),在程序中使用strcmpO函數(shù)是為了判斷字符串str[i]與str[i+l]兩者的大小,在fun()函數(shù)中只能通過指針來表達(dá)各個字符串,所以應(yīng)當(dāng)填“*(pstr+j)”.題中第二個空填"pstr[j]":對兩個字符進(jìn)行比較后,若pstr⑴中的字符比pstr[j]中而字符大,則將pstr[j]中的字符賦給pstr[i]o題中第三個空填"p":對兩個字符進(jìn)行比較后,若pstr[i]中的字符比pstr[j]中的字符大,則將pstr[j]和pstr[i]的內(nèi)容進(jìn)行交換。24、給定程序的功能是分別統(tǒng)計字符串中大寫字母和小寫字母的個數(shù)。例如,給字符串ss輸入:AaaaBBbl23CCccccd,則輸出結(jié)果應(yīng)為:upper=5,lower=9請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKLC中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!ttinclude<stdio.h>voidfun(char*s,int*a,int*b){while(*s){if(*s>='A'&&*s<='Z')/**********found**********/一1一;if(*s>='a'&&*s<='z')/**********found**********/一2一;s++;))main(){chars[100];intupper=0,Iower=0;printf(*\nPleaseastring:");gets(s);fun(s,&upper,&lower);/**********found**********/printf("\nupper=%dlower=%d\n", 3 );)-答案:【1】(*a)++ [2](*b)++ [3]upper.lower本題的考核點是C語言中輸入輸出函數(shù)及指針的使用。題中第一個空填"(*a)++”:程序中,a是一個整型指針,耍使a指向的數(shù)據(jù)實現(xiàn)遞增,則要把指針改為實際數(shù)據(jù)。同樣道理,題中第二個空填"(*b)++”或相同作用的語句。題中第三個空填"upper,lower*:根據(jù)題義要求輸出統(tǒng)計的字符串中大寫字母和小寫字母的個數(shù)。25、給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長度最短的字符中所在的行下標(biāo),作為函數(shù)值返回,并把其串長放在形參n所指變量中。ss所指字符串?dāng)?shù)組中共有M個字符串,且串長〈N。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)注意:源程序存放在考生文件夾下的BLANKLC中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!ttinclude<stdio.h>#include 〈string.h>TOC\o"1-5"\h\zndefine M 5^define N 20intfun(char(*ss)[N],int*n){int i, k=0, len= N;/**********found**********/for(i=0;i<_1—;i++){len=strlen(ss[i]);if(i==0)*n=len;/**********found**********/if(len—2_*n){*n=len;k=i;})/**********found**********/return( 3 );)mainO{charss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"};intn,k,i;printf(*\nTheoriginalstringsare:\n");for(i=0;i<M;i++)puts(ss[ij);k=fun(ss,&n);printf(*\nThelengthofshorteststringis:%d\n*?n);printf(*\nTheshorteststringis:%s\n*,ss[k]);)答案:【1]M [2]< [3]k本題考查的是字符串長度的比較。由于在fun函數(shù)中要對字符串?dāng)?shù)組中的每個字符串(共有M個)都要求其長度,故在外層循環(huán)中,其循環(huán)條件應(yīng)為ivM,故第一空應(yīng)填M:在比較時,先使長度的初始值*n為第一個字符串的長度,然后逐個比較其它字符串的長度len,如果長度len小于*n,則將len賦值給*n,并記錄卜此時字符串在字符串?dāng)?shù)組中的下標(biāo)i。故第二空應(yīng)為<或<二;最后要返回數(shù)組的下標(biāo),即代碼中的k,故第三空應(yīng)為匕26、下列給定程序中,函數(shù)fun()的作用是:將字符串tt中的大寫字母都改為對應(yīng)的小寫字母,其他字符不變。例如,若輸入"Ab,cD",則輸出"ab,cd*?試題程序:#include<stdio.h>ttinclude<string.h>#include<conio.h>char1fun(chartt[]){inti;for(i=0;tt[i];i++){if((tt[i]>=,A*)&&(tt[i]<= 2 ))tt[i]+=32;)return(tt);}mainO(chartt[81];printf(*\nPleaseenterastring:");gets(tt);printf(*\nTheresultstringis:\n%s*,fun(3 )):}一答案:【1】* 【2]'Z' [31tt【解析】填空L由relnn語句可以看出,該函數(shù)的返回值類型是指向字符串的指針,所以應(yīng)該使用符號填空2:從ASCII碼表中可以看出,小寫字母的ASCII碼值比對應(yīng)大寫字母的ASCII碼值大32,根據(jù)ASCII碼值判斷該字母是不是大寫字母,判斷的標(biāo)準(zhǔn)是ASCH碼值是否介于A和Z之間。填空3:根據(jù)題目的意思這里應(yīng)該調(diào)用函數(shù)fun對字符串II進(jìn)行轉(zhuǎn)換,所以應(yīng)該使用II作為函數(shù)的參數(shù)。27、給定程序的功能是將在字符串s27、給定程序的功能是將在字符串s中出現(xiàn)、而未在字符串t中出現(xiàn)的字符,構(gòu)成一個新的字符串放在u中,u中字符按原字符串中字符順序的逆序排列,不去掉重復(fù)字符。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。#include<conio.h>例如,當(dāng)s-112345",t="2467”時,u中的字符是:"5311”。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!ttinclude<stdio.h>#include<string.h>voidfun(char*s,char*t,char*u){inti,j,si,tl,ul;charr,*up=u;si=strlen(s);tl=strlen(t);for(i=0;i<sl;i++){for(j=0;j<tl;j++)/************found************/if(s[i]=t[j])—1—;/************found************/if(j―2—tl)*u++=s[i];)*u='\0';ul=strlen(up);for(i=0;i<ul/2;i++){/************found************/r二一3—;up[i]=up[ul-l-i];up[ul-l-i]=r;})mainO{chars[100],t[100],u[100];printf(*\nPleaseenterstrings:");scanfs);printf(*\nPleaseenterstringt:");scanft);fun(s,t,u);printf(*Theresultis:%s\n”,u);答案:[11break [2]>= [3]up[i]題中第一個空填"break;":break語句可以作為循環(huán)跳出語句,常與if語句結(jié)合使用。題中第二個空填">=":"if(j>=tl)*u++= 是和上面循環(huán)語句"for(j=0;j<tl;j++)if(s[i]=t[j])break;“結(jié)合起來的。如果循環(huán)一直進(jìn)行下去,則最后j和tl是相等的。題中第三個空填兩個數(shù)的交換通常用一個中間變量。28、下列給定程序中函數(shù)fun()的功能是:先將在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序連接到t串的后面.例如:當(dāng)s中的字符串為ABCDE時,則t中的字符串應(yīng)為EDCBAABCDE。試題程序:#include#includevoidfun<stdio.h>#include#includevoidfun<string.h>(char*s,char*t){inti,sl;sl= 1 ;for(i=0;i<sl;i++)t[i]=s[_2_];for(i=0;i<sl;i++)t[sl+i]=s[i];t[-3=]=,\0f;)main(){chars[100]rt[100];printf(n\nPleaseenterstrings:M);scanf(n%sM,s);fun(s,t);printf("Theresultis:%s\n",t);)答案:【1】答案:【1】strlen(s)[2]sl-l-i[3]2*sl【解析】填空1:根據(jù)題□的意思,這里應(yīng)該是對于變量S1進(jìn)行賦值,由卜.面的算法可以看出S1是紀(jì)錄變量S指向的字符串長度的,即應(yīng)該調(diào)用字符串函數(shù)strlen(s).填空2:根據(jù)題目的意思,此處是算法要求的第一步,進(jìn)行逆序輸入,這個并不困難,關(guān)鍵是找到逆序的規(guī)律,即t的卜標(biāo)為i時,s的卜.標(biāo)為sl-1-i。填空3:由算法可以看出,這里應(yīng)該是給新產(chǎn)生的字符串加上結(jié)束標(biāo)志,其下標(biāo)應(yīng)該是2*sl。29、下列給定程序中,函數(shù)fun。的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但Z轉(zhuǎn)化為A,z轉(zhuǎn)化為a),其他字符不變。試題程序:#include<stdio.h>#include<ctype.h>#include<conio.h>voidfun(char*s){while( 1 ){if(*s>^iA'&&*s<=,Z,||*s>='a,&&*s<='z,){if(*s==1Z1) *s='A';elseif(*s==*z') *s=*a*;else*s+=_2_;)_3_;))main(){chars[80];printf(n\nEnterastringwithlength<80:\n\n");gets(s);printf(n\nThestring:\n\nw);puts(s);fun(s);printf("\n\nTheCords:\n\n");puts(s);)答案:[2]1 [3]s++【解析】填空1:從C語言的學(xué)習(xí)中我們知道,while語句的結(jié)束條件是括號中的式子結(jié)果為0,而一個字符串的結(jié)尾標(biāo)志為W,即滿足循環(huán)的結(jié)束條件,所以一般情況下C語言中使用字符串的結(jié)尾作為結(jié)束循環(huán)的標(biāo)志;s為指向?個數(shù)組的指針,*s為取出s指向的內(nèi)容。填空2:根據(jù)題目的意思,若該字母不是N或Z,則該字母的ASCII碼值加1。填空3:根據(jù)題目的意思,要對字符串所有字母進(jìn)行遍歷,使用指針進(jìn)行這一過程應(yīng)該使用循環(huán),即每次都對該指針進(jìn)行加?操作。30、給定程序的功能是把s串中所有的字母改寫成該字母的下一個字母,字母z改寫成字母a。大寫字母仍為大寫字母,小寫字母仍為小寫字母,其它的字符不變。例如:s串中原有的字符串為:Mn.123Zxy,則調(diào)用該函數(shù)后,s串中的內(nèi)容為:No.123AyZo請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<string.h>#include<stdio.h>#include<ctype.h>^defineN81fun(char*s){/**************found**************/char*p= 1 ;while(*p){/**************found**************/if(*p='Z')*p= 2 ;/**************found**************/elseif(*p='z')*p= 3 ;elseif(isalpha(*p))*p=(*p)+1;p++;})main(){chara[N];printf(*Enterastring:");gets(a);printf("Theoriginalstringis:");puts(a);fun(a);printf("Thestringaftermodified:*);puts(a);答案:m'A'答案:m'A''a'本題的考核點是c語言中的循環(huán)語句和條件判斷語句的使用。解題思路:從本題的要求來看,我們應(yīng)該采用循環(huán)條件判斷的算法。本參考函數(shù)使用while循環(huán)從頭到尾掃描字符串,并在掃描時進(jìn)行條件判斷,對'z','Z'和其它字符進(jìn)行不同的處理。本評析僅供參考。31、請補充函數(shù)fun,該函數(shù)的功能是比較字符串strl和str2的大小,并返網(wǎng)比較的結(jié)果。例如;當(dāng)strl="cdef',str2="cde"時,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論