國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷1(共20題)_第1頁(yè)
國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷1(共20題)_第2頁(yè)
國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷1(共20題)_第3頁(yè)
國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷1(共20題)_第4頁(yè)
國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷1(共20題)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷1(共5套)(共20題)國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷第1套一、程序設(shè)計(jì)題(本題共4題,每題1.0分,共4分。)1、請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:將M行N列的二維數(shù)組中的字符數(shù)據(jù),按列的順序依次放到一個(gè)字符串中。例如,若二維數(shù)組中的數(shù)據(jù)為WWWWSSSSHHHH則字符串中的內(nèi)容應(yīng)是:WSHWSHWSH.WSH。注意:請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include#defineM3#defineN4voidfun(char(*s)[N],char*b){}voidmain(){FILE*wf;chara[100],W[M][N]={{‘w’,‘w’,‘w’,‘w’},{‘S’,‘S’,‘S’,‘S’},{‘H’,‘H’,‘H’,‘H’}};inti,j;prinff(“Thematrix:\n”);for(i=0;i標(biāo)準(zhǔn)答案:voidfun(char(*s)[N],char*b){inti,j,k=0;for(i=0;i知識(shí)點(diǎn)解析:看到程序后,很容易便能想到用循環(huán)嵌套的方法,本題中按列的順序依次放到一個(gè)字符串中,所以列標(biāo)變化慢,行標(biāo)變化快。注意:第1個(gè)循環(huán)條件為i2、已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:找出成績(jī)最高的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最高分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include#include#include#include#defineN10typedefstruetss/*定義結(jié)構(gòu)體*/{charnum[10];ints;}STU;fun(STUa[],STU*s){}voidmain(){FILE*wf:STUa[N]={{ttA01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m;inti;system(“CLS”);printff“*****Theoriginaldata*****”);for(i=0;i標(biāo)準(zhǔn)答案:fun(STUa[],STU*s){inti:*s=a[0];for(i=0;is知識(shí)點(diǎn)解析:本題考查:成績(jī)最高的學(xué)生記錄查找;for循環(huán)語(yǔ)句;if條件語(yǔ)句。本題的流程是先使s指向第1名學(xué)生,利用循環(huán)語(yǔ)句遍歷所有學(xué)生的成績(jī),利用條件語(yǔ)句判斷當(dāng)前學(xué)生成績(jī)是否最高,所以if語(yǔ)句的條件是s一>ss”等價(jià)于“(*s).s”。3、請(qǐng)編寫函數(shù)fun,其功能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)據(jù)的位數(shù)不超過(guò)4位),并將結(jié)果通過(guò)函數(shù)值返回。例如,若輸入的數(shù)據(jù)為123,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#ineludevoidNONO();intfun(intn){}main(){intn,place;do{printf(“請(qǐng)輸入—個(gè)4位以內(nèi)的正整數(shù):”);scanf(“%d”,&n);}while(n<0‖n>9999);place=fun(n);printf(“輸入的數(shù)字是%d位\n”,place);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{FILE*fp,*wf;inti,n,place;fp=fopen(“in.dat”,“r”);wf=fopen(“out.dat”,“w”);for(i=0;i<10;i++){fscanf(fp,“%d”,&n);place=fun(n);fprintf(wf,“%d\n”,place);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:intbits=1;//臨時(shí)變量統(tǒng)計(jì)位數(shù)while(n/10)/*判斷是否為0,若不為0,bits加1,再將n除以10,繼續(xù)判斷*/{bits++:n=n/10:}retumbits;知識(shí)點(diǎn)解析:本題考查:對(duì)循環(huán)跳出的條件的理解,以及理解取數(shù)字位數(shù)的方法。通過(guò)對(duì)指定的多位數(shù)每次除以10,去掉最后一位,直到為0結(jié)束,使用臨時(shí)變量來(lái)統(tǒng)計(jì)一個(gè)多位數(shù)的位數(shù)。4、請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出3~n之間所有素?cái)?shù)的平方根之和。例如,若主函數(shù)從鍵盤給n輸入100后,則輸出為sum=148.874270。注意:n的值要大于2但不大于100。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include#includedoublefun(intn){}main(){intn;doublesum;FILE*out:printf(“Inputn=”);searlf(“%d”,&n);SHm=fun(n);printf(“\nsum=%f\n”,sum);/********************/out=fopen(“out.dat”,“W”);fprintf(out,“%f\n”,fun(180));felose(out);/********************/}標(biāo)準(zhǔn)答案:doublefun(intn){intm,k,i;doubles=0.0;for(m=3;m<=n;m++){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1)s+=sqrt(m);}returns:}知識(shí)點(diǎn)解析:本題考查:素?cái)?shù)的判定方法及求平方根函數(shù)sqrt的使用。首先確定n的范圍,然后確定循環(huán)條件,最后根據(jù)素?cái)?shù)的判定方法確定條件語(yǔ)句。國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷第2套一、程序設(shè)計(jì)題(本題共4題,每題1.0分,共4分。)1、編寫函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并成一個(gè)整數(shù)放在e中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個(gè)位數(shù)依次放在e數(shù)的百位和個(gè)位上。例如,當(dāng)a=45,b=12時(shí),調(diào)用該函數(shù)后,c=5142。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#includevoidfun(inta,intb,long*c){main(){inta,b;longc;voidNONO();printf(“Inputa,b:”);scanf(“%d%d”,&a,&b);fun(a,b,&c);prinff(“Theresultis:%d\n”,c);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{FILE*rf,*wf;inti,a,b;longc;rf=fopen(“in.dat”,“r”);wf=fopen(“out.dat”,“w”);for(i=0;i<10;i++){fscanf(rf,“%d,%d”,&a,&b);fun(a,b,&c);fprinff(wf,“It=%d,b=%d,c=%ld\n”,a,b,c);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:voidfun(inta,intb,long*c){*c=b%10+(a/10)*10+(h/10)*100+(a%10)*1000;}知識(shí)點(diǎn)解析:本題考查:如何取出數(shù)值n的各個(gè)位;知道數(shù)值n的各個(gè)位,又如何表示該數(shù)值;指針型變量的使用。本題中主要的問(wèn)題是如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對(duì)它們除10可得到它們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。得到后對(duì)應(yīng)乘以1000、100、10、1就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個(gè)位數(shù)。注意:使用c時(shí)要進(jìn)行指針運(yùn)算。知道兩位數(shù)數(shù)值n,需要表示個(gè)位和十位,采用求余和除法操作,如n%10(取個(gè)位)、n/10(取十位)。2、請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:判斷字符串是否為回文,若是,則函數(shù)返回1,主函數(shù)中輸出“YES”,否則返回0,主函數(shù)中輸出“NO”?;匚氖侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include#defineN80intfun(char*str){}main(){chars[N];FILE*out;char*test[]={“1234321”,“123421”“123321”,“abcdCBA”};inti;prinff(“Enterastring:”);gets(S);prinff(“\n”);puts(s);if(fun(s))prinff(“YES\n”);elseprintf(“NO\n”);/****************/out=fopen(“out.dat”,“w”);for(i=0;i<4;i++)if(fun(test[i]))fprintf(out,“YES\n”);elsefprinff(out,“NO\n”);felose(out);/****************/}標(biāo)準(zhǔn)答案:intfun(char*str){inti,n=0,fg=1;char*p=str;while(*p)/*將指針p置位到字符串末尾,并統(tǒng)計(jì)字符數(shù)*/{n++;p++;}for(i=0;i知識(shí)點(diǎn)解析:判斷回文就是將第一個(gè)字符與最后一個(gè)字符比較,第二個(gè)字符與倒數(shù)第二個(gè)字符進(jìn)行比較,以此類推,直到中間的字符。如果比較的結(jié)果都相同,那么這個(gè)字符串就是回文,否則不是。程序中循環(huán)語(yǔ)句用來(lái)遍歷字符串,條件語(yǔ)句用來(lái)判斷當(dāng)前字符與對(duì)應(yīng)位置的字符是否相同。3、請(qǐng)編寫函數(shù)fun,對(duì)長(zhǎng)度為7個(gè)字符的字符串,除首、尾字符外,將其余5個(gè)字符按ASCⅡ碼降序排列。例如,原來(lái)的字符串為“CEAedca”,排序后輸出為“CedcEAa”。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include#include#includevoidfun(char*s,intnum){}main(){voidNONO();charS[10];printf(“輸入7個(gè)字符的字符串:”);gets(s);fun(s,7);prinff(“\n%s”,s);NONO();}voidNONO()/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{charS[10];FILE*rf,*wf;inti=0;rf=fopen(“in.dat”,“r”);wf=fopen(“out.dat”,“w”);while(i<10){fgets(s,10,rf);s[7]=0;fun(s,7);fprinff(wf,“%s\n”,S);i++:}felose(rf);felose(wf);}標(biāo)準(zhǔn)答案:voidfun(char*s,intnum){charch;int1,j;for(i=1;i<6;i++)for(j=i+1;j<6;j++){if(*(s+i)<*(s+j)){ch=*(s+j);*(s+j)=*(s+i);*(s+i)=ch;}}}知識(shí)點(diǎn)解析:本題考查:for循環(huán)語(yǔ)句;字符的交換;指針型變量;指針移動(dòng)。指針移動(dòng):指針經(jīng)常用于指向數(shù)組和字符串,通過(guò)指針的移動(dòng)實(shí)現(xiàn)對(duì)數(shù)組或字符串的遍歷。數(shù)組和字符串都是用一段連續(xù)的地址來(lái)存放元素的。所以,指針的移動(dòng)也就是對(duì)地址的加減。本題要求對(duì)長(zhǎng)度為7的字符串,除首、尾字符外,將其余5個(gè)字符按ASCⅡ碼降序排列,因而要用雙重循環(huán)進(jìn)行排序。注意第1個(gè)循環(huán)的變量的初值i=1,第2個(gè)循環(huán)的變量的初值為j=i+1;這是因?yàn)轭}目要求除首、尾字符外,將其余5個(gè)字符按ASCⅡ碼降序排列。4、請(qǐng)編寫函數(shù)fun,其功能是:將一組得分中,去掉一個(gè)最高分和一個(gè)最低分,然后求平均值,并通過(guò)函數(shù)返回。函數(shù)形參a指向存放得分的數(shù)組,形參n中存放得分個(gè)數(shù)(n>2)。例如,若輸入9.98.57.68.59.39.58.97.88.68.4十個(gè)得分,則輸出結(jié)果為8.687500。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#includevoidNONO();doublefun(doublea[],intn){}main(){doubleb[10],r;inti;prinff(“輸入10個(gè)數(shù)放入b數(shù)組中:”);for(i=0;i<10;i++)scanf(“%If”,&b[i]);prinff(“輸入的10個(gè)數(shù)是:”);for(i=0;i<10;i++)prinff(“%4.1lf”,b[i]);prinff(“\n”);r=fun(b,10);prinff(“去掉最高分和最低分后的平均分:%f\n”,r);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{FILE*fp.*wf;inti,j;doubleb[10],r;fp=fopen(“in.dat”,“r”);wf=fopen(“out.dat”,“w”);for(i=0;i<10;i++){for(j=0;j<10;j++){fscanf(fp,“%If”,&b[j]);}r=fun(b,10);fprintf(wf,“%f\n”,r);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:doublefun(doublea[],intn){doublesum=0,max,min;inti;max=min=a[0];for(i=0;ia[i])min=a[i];}sum=sum—max—min:return(sum/(n一2));}知識(shí)點(diǎn)解析:設(shè)定三個(gè)變量:sum存放和值,max存放最大值,min存放最小值。max和min都被賦予數(shù)組中第一個(gè)元素的值。利用循環(huán)將數(shù)組中元素累加到sum中,并找出最大值和最小值,sum值減去最大值和最小值,最后函數(shù)返回sum除以元素個(gè)數(shù)n一2的平均值。國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷第3套一、程序設(shè)計(jì)題(本題共4題,每題1.0分,共4分。)1、請(qǐng)編函數(shù)fun,其功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換成與其面值相同的長(zhǎng)整型整數(shù)。可調(diào)用strlen函數(shù)求字符串的長(zhǎng)度。例如,在鍵盤輸入字符串2345210,函數(shù)返回長(zhǎng)整型數(shù)2345210。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun指定的部位填入所編寫的若干語(yǔ)句。試題程序:#inelude#includevoidNONO();longfun(char*s){}main(){char8[10];longr;printf(“請(qǐng)輸入一個(gè)長(zhǎng)度不超過(guò)9個(gè)字符的數(shù)字字符串:”);gets(s);r=fun(s);prinff(“r=%ld\n”,r);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{FILE*fp,*wf;inti;longr;chars[10],*P;fp=fopen(“in.dat”,”r”);wf=fopen(“out.dat”,“W”);for(i=0;i<10;i++){fgets(s,10,fp);P=strchr(s,‘\n’);if(P)*P=0;r=fun(s);fprinff(wf,“%Id\n”,r);}fclose(fp);felose(wf);}標(biāo)準(zhǔn)答案:longfun(char*s){inti,sum=0,len;len=strlen(s);for(i=0;i知識(shí)點(diǎn)解析:要把一個(gè)數(shù)字字符轉(zhuǎn)為相應(yīng)的數(shù)字,只要用它的ASCⅡ碼減去48即可。要把數(shù)字字符串轉(zhuǎn)為相應(yīng)的數(shù)字,則要從左到右依次取出字符轉(zhuǎn)為相應(yīng)數(shù)字,乘10再加上下一位數(shù)字。2、假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,其功能是:除了尾部的*號(hào)之外,將字符中的其他*號(hào)全部刪除。形參P已指向字符串中最后的一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為****A*BC*DEF*G**********,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是ABCDEFG*******注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#ncludevoidfun(char*a,char*P){}main(){charS[81],*t;voidNONO();printf(“Enterastring:\n”);gets(S);t=S;while(*t)t++;t一一;while(*t==‘*’)t一一;fun(s,t);prinff(“Thestringafterdeleted:\n”);puts(s);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{FILE*in,*out;inti;charS[81],*t;in=fopen(“in.dat”,“r”);out=fopen(“out.dat”,“w”);for(i=0;i<10;i++){fscanf(in,“%s”,S);t=s:while(*t)t++;t一一:while(*t==‘*’)t一一;fun(s,t);fprinLf(out,“%s\n”,s);}fclose(in);felose(out);}標(biāo)準(zhǔn)答案:voidfun(char*a,char*p){char*t=a;for(;t<=p;t++)if(*t!=‘*’)*(a++)=*t;for(;*t!=’\0’;t++)*(a++)=*t;*a=’\0’;/*在字符串最后加上字符串結(jié)束標(biāo)識(shí)*/}知識(shí)點(diǎn)解析:本題考查:刪除字符串中非尾部*號(hào),刪除的主要思想就是把不刪除的字符保留起來(lái)。本題用兩個(gè)循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)。第1個(gè)循環(huán)的作用是將指針p所指字母以前所有非*號(hào)的字符保留下來(lái),即刪除指針p以前所有的*號(hào)。第2個(gè)循環(huán)的作用是將指針p以后的所有*號(hào)保留下來(lái)。最后在新串的結(jié)尾加上結(jié)束符。3、編寫函數(shù)voidfun(char*tt,intPP[]),統(tǒng)計(jì)在tt所指的字符串中’a’到’z’26個(gè)小寫字母各自出現(xiàn)的次數(shù),并依次放在pp所指的數(shù)組中。例如,當(dāng)輸入字符串“abcdefgabcdeabc”后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#inelude#includevoidfun(char*tt,intPP[]){}main(){charaa[1000];intbb[26],k;voidNONO();prinff(“\nPleaseenteracharstring:”);8c肌f(“%s”,aa);fun(aa,bb);for(k=0;k<26;k++)prinff(“%d”,bb[k]);prinff(“\n”);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{charaa[1000];intbb[26],k,i;FILE*rf,*wf;rf=fopen(“in.dat”,“r”);wf=fopen(“out.dat”?!癢”);flor(i=0;i<10;i++){fscanf(rf,“%s”,aa);fun(aa,bb);for(k=0;k<26;k++)fprinff(wf,“%d”,bb[k]);fprinff(wf,“\n”);}felose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:voidfun(char*tt,intpp[]){inti:for(i=0;i<26;i++)pp[i]=0;/宰初始化pp數(shù)組各元素為0*/flor(;*tt!=’\0’;tt++)if(*tt>=’a’&&*tt<=‘z’)pp[*tt一‘a(chǎn)’]++;}知識(shí)點(diǎn)解析:本題考查:for循環(huán)語(yǔ)句,注意循環(huán)變量取值范圍以及循環(huán)體語(yǔ)句作用;數(shù)組元素初始化和賦值操作;if語(yǔ)句條件表達(dá)式,需注意條件表達(dá)式的邏輯運(yùn)算;字符串結(jié)束標(biāo)識(shí)’\0’。要求統(tǒng)計(jì)在tt所指字符串中a—z共26個(gè)小寫母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。首先使用for循環(huán)語(yǔ)句初始化pp數(shù)組中分別用來(lái)統(tǒng)計(jì)26個(gè)字母的個(gè)數(shù),再使用循環(huán)判斷語(yǔ)句對(duì)tt所指字符串中的字符進(jìn)行逐一比較操作,同時(shí)存入相對(duì)應(yīng)的pp數(shù)組中。4、下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是:將數(shù)組左下半三角元素中的值全部置0。例如a數(shù)組中的值為:197238456則返回主程序后a數(shù)組中的值應(yīng)為:097008000注意:請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include#include#include}}defineN5voidfun(inta[][N]){}voidmain(){FILE*wf;inta[N][N],i,j;intb[N][N]=t1,9,7,2,4,2,3,8,1,2,4,5,6,7,5,4,0,6,8,0,2,7,1,6,4};system(“CLS”);prinff(“******Thearray******\n”);for(i=0;i標(biāo)準(zhǔn)答案:voidfun(inta[][N]){inti,j;for(i=0;i知識(shí)點(diǎn)解析:本題考查:for循環(huán)語(yǔ)句,使用嵌套循環(huán)語(yǔ)句遍歷二維數(shù)組的各個(gè)元素;二維數(shù)組元素的引用。對(duì)于N×N二維數(shù)組,如何表示其左下半三角元素,可以通過(guò)以下語(yǔ)句實(shí)現(xiàn):for(i=0;i國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷第4套一、程序設(shè)計(jì)題(本題共4題,每題1.0分,共4分。)1、請(qǐng)編寫函數(shù)fun,它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include#include#include#includedoublefun(doublex,intn){}voidmain(){FLE*wf;system(“CLS”);prinff(“%f.,fun(0.3,10));/******************/wf=fopen(“out.dat”,“W”);fprintf(wf,“%f.’,fun(0.3,10));fclose(wf);/******************/}標(biāo)準(zhǔn)答案:doublefun(doublex,intn){inti;doubles=1.0,sl=1.0;for(i=1;i<=n;i++){sl=sl,*i;/*各項(xiàng)中的階乘*/s=s+pow(x,i)/sl;/*按公式求出*/}returns;}知識(shí)點(diǎn)解析:暫無(wú)解析2、編寫函數(shù)fun,其功能是:求出1—1000之間能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#includevoidfun(int*a,int*n){}main(){intaa[1000],n,k;voidNONO();fun(all,&n);for(k=0;k標(biāo)準(zhǔn)答案:voidfun(int*a,int*n){inti,j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并放入數(shù)組a中*/if((i%7==011i%11==0)&&i%77!=0)a[j++]=1;*n=j;}知識(shí)點(diǎn)解析:本題考查:if語(yǔ)句,用來(lái)判斷能被7整除或者能被11整除,但是又不能同時(shí)被7和11整除的數(shù),在這里要充分理解“邏輯與”和“邏輯或”的區(qū)別;for循環(huán)語(yǔ)句的循環(huán)變量用來(lái)控制取值范圍。本題需要運(yùn)用循環(huán)判斷結(jié)構(gòu)來(lái)實(shí)現(xiàn),其中循環(huán)語(yǔ)句比較容易,只要確定循環(huán)變量的范圍即可。下面來(lái)看判斷語(yǔ)句,題目要求找出能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù)。能同時(shí)被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除的數(shù)所以可得出程序中的if()語(yǔ)句。注意:(i%7==0‖i%11==0)兩邊必須要有小括號(hào)。3、請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:將S所指字符串中ASCⅡ碼值為偶數(shù)的字符刪除,串中剩余字符形成一個(gè)新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符B的ASCⅡ碼值為偶數(shù),字符2的ASCⅡ碼值為偶數(shù),都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是”ACEG135”。注意:請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include#include#include#includevoidfun(char*s,chart[]){}voidmain(){FILE*wf;charS[100],t[100];system(“CLS”);prinff(“\nPleaseenterstringS:”);scanf(“%s”,s);fun(s,t);printf(“\nTheresultis:%s\n”,t);/*****************/wf=fopen(“out.dat”,”W”);fun(“ABCDEFGl2345”,t);fprinff(wf,“%S”,t);fclose(wf);/*****************/標(biāo)準(zhǔn)答案:voidfun(char*s,chart[]){inti=0;for(;*s!=’\0’;s++)/*找出ASCⅡ值為奇數(shù)的字符依次存入數(shù)組t中*/if(*s%2==1)t[i++]=*s;t[i]=’0’;/*在字符串的末尾加上串結(jié)束符*/}知識(shí)點(diǎn)解析:本題要求將s所指字符串中ASCⅡ碼值為偶數(shù)的字符刪除,因此本題要求采用一個(gè)for循環(huán)來(lái)找出ASCⅡ碼值為奇數(shù)的字符依次存入數(shù)組t中,并使用if條件句來(lái)判斷s所指字符串中ASCⅡ碼值是否為奇數(shù)。用’\0’加在字符串的末尾來(lái)表示字符串的結(jié)束。要?jiǎng)h除ASCⅡ碼值為偶數(shù)的字符,也就是要留下ASCⅡ碼值為奇數(shù)的字符。由于最終是要求出剩余字符(即ASCⅡ碼值為奇數(shù))形成的新串,所以本題程序的算法是對(duì)原字符串從頭到尾掃描,找出ASCⅡ碼值為奇數(shù)的字符并將其依次存入數(shù)組t中。此外,還要注意數(shù)組t的下標(biāo)變化和下標(biāo)的初值(初值必須為0,即i=0),t[i++]的作用是先使用t[i],然后再使i自增1。4、請(qǐng)編寫函數(shù)voidfun(intx,intPP[],int*n),它的功能是:求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過(guò)形參n返回。例如,若x中的值為30,則有4個(gè)數(shù)符合要求,它們是1、3、5、15。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include#include#includevoidfun(intX,intPP[],int*n){}voidmain(){FILE*wf;intx,aa[1000],n,i;system(“CLS”);printf(“\nPleaseenteranintegernumber:\n”);scanf(“%d”,&x);fun(x,aa,&n);for(i=0;i標(biāo)準(zhǔn)答案:voidfun(intx,intpp[],int*n){inti,j=0;for(i=1;i<=x;i=i+2)/*i的初始值為1,步長(zhǎng)為2,確保i為奇數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/pp[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/}知識(shí)點(diǎn)解析:本題考查:偶數(shù)的判定方法;整除的實(shí)現(xiàn)。本題題干信息是:能整除x且不是偶數(shù)的所有整數(shù)。循環(huán)語(yǔ)句中變量i從1開始且每次增2,所以i始終是奇數(shù)。整除的方法,在前面已經(jīng)講過(guò)多次,這里就不再贅述了。對(duì)于本題目要求的不是偶數(shù)的判定方法,即該數(shù)對(duì)2求余不為0。除以上方法外,還可以通過(guò)for循環(huán)語(yǔ)句直接把偶數(shù)篩出去,確保參與操作的數(shù)均為奇數(shù)。國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序設(shè)計(jì)題)模擬試卷第5套一、程序設(shè)計(jì)題(本題共4題,每題1.0分,共4分。)1、請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:刪除一維數(shù)組中所有相同的數(shù),使之只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。例如,若一維數(shù)組中的數(shù)據(jù)是:2223445666677899101010刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910注意:請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include#defineN80intfun(inta[],intn){}voidmain()}FILE*wf;inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;prinff(“Theoriginaldata:\n”);for(i=0;i標(biāo)準(zhǔn)答案:intfun(inta[],intn){inti,j=1;f10r(i.1;i知識(shí)點(diǎn)解析:該程序的流程是:定義變量i和j,其中j用于控制刪除后剩下的數(shù)在數(shù)組中的下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組中最后一個(gè)元素的下一個(gè)元素的下標(biāo),所以if語(yǔ)句中的條件是a[j一1]!=a[i],其中a[j一1]就是新數(shù)組中的最后一個(gè)元素,若條件成立,則表示出現(xiàn)了不同的值,所以a[i]要保留到新數(shù)組中。注意:本題中i和j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。2、函數(shù)fun的功能是:將s所指字符串中除下標(biāo)為偶數(shù),同時(shí)ASCⅡ碼值也為偶數(shù)的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl23456”,其中字符A的ASCⅡ碼值為奇數(shù),因此應(yīng)當(dāng)刪除;字符B的ASCⅡ碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;字符2的ASCⅡ碼值為偶數(shù),在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他以此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“246”。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();prinff(“\nPleaseenterstrings:”);scanf(“%s”,S);fun(s,t);prinff(“\nTheresultis:%s\n”,t);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{charS[100],t[100];FILE,*rf,*wf;inti;rf=fopen(“in.dat”,“r”);wf=fopen(“out.dat”,“w”);for(i=0;i<10;i++){fscanf(ff,“%s”,s);fun(s,t);fprinff(wf,“%s\n”,t);}fclose(rf);fclose(wf(;標(biāo)準(zhǔn)答案:voidfun(char*s,chart[]){inti,j=0;for(i=0;s[i]!=’\0’;i++)if(i%2==0&&s[i]%2==0)/*將s所指字符串中下標(biāo)和ASCⅡ碼值都為偶數(shù)的字符放入數(shù)組t中*/t[j++]=s[i];t[j]=’\0’;/*在字符串最后加上結(jié)束標(biāo)識(shí)*/}知識(shí)點(diǎn)解析:本題考查:循環(huán)判斷結(jié)構(gòu);字符串的操作;邏輯運(yùn)算符的使用。本題要求刪除下標(biāo)為偶數(shù)同時(shí)ASCⅡ碼值也為偶數(shù)的字符,即保留下標(biāo)為偶數(shù)同時(shí)ASCⅡ碼值也為偶數(shù)的字符。循環(huán)語(yǔ)句用于遍歷字符串,條件語(yǔ)句用于判斷當(dāng)前字符是否符合要求。主意判斷條件是下標(biāo)為偶

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論