國家二級C語言機試(操作題)模擬試卷27(共27題)_第1頁
國家二級C語言機試(操作題)模擬試卷27(共27題)_第2頁
國家二級C語言機試(操作題)模擬試卷27(共27題)_第3頁
國家二級C語言機試(操作題)模擬試卷27(共27題)_第4頁
國家二級C語言機試(操作題)模擬試卷27(共27題)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C語言機試(操作題)模擬試卷27(共9套)(共27題)國家二級C語言機試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、甲乙丙丁四人同時開始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函數(shù)fun的功能是根據(jù)形參提供的值,求出總共聽到多少次鞭炮聲作為函數(shù)值返回。注意,當(dāng)幾個鞭炮同時炸響,只算一次響聲,第一次響聲是在第0秒。例如,若t1=7,t2=5,t3=6,t4=4,n=10,則總共可聽到28次鞭炮聲。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/**********found**********/#defineOK(i,t,n)((_____1_____%t==0)&&(i/t標(biāo)準(zhǔn)答案:(1)i(2)t++(3)count知識點解析:第一空:由“if(OK(t,t1,n)‖OK(t,t2,n)‖OK(t,t3,n)‖OK(t,t4,n))count++;”可知count計數(shù)聽到的鞭炮聲,在滿足if條件時,計數(shù)加1。t時刻,至少有一個人放了一個鞭炮才能聽得到聲音,故t%t1==0、t%t2==0、t%t3==0、t%t4==0這四個當(dāng)中至少一個成立,四者是或的關(guān)系。第一個標(biāo)識下是宏OK的定義,由前面的分析可知,OK宏的作用就是判斷t%ti(i等于1、2、3和4)是否等于0且i/t二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:刪除P所指字符串中的所有空白字符(包括制表符、回車符及換行符)。輸入字符串時用’#’結(jié)束輸入。請改正程序中的錯誤,使它能輸出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#includefun(char*p){inti,t;charc[80];/************found************/For(i=0,t=0;p[i];i++)if(!isspace(*(p+i)))c[t++]=p[i];/************found************/c[t]="\0";strcpy(p,c);}main(){charc,s[80];inti=0;printf("Inputastring:");c=getchar();while(c!=’#’){s[i]=c;i++;c=getchar();)s[i]=’\0’;fun(s);puts(s);}標(biāo)準(zhǔn)答案:(1)for(i=0,t=0;p[i];i++)(2)c[t]=’\0’;知識點解析:(1)第一個標(biāo)識下“For(i=0,t=0;p[i];i++)”語句是for循環(huán)語句,而For不是C語言的關(guān)鍵字,所示“For(i=0,t=0;p[i];i++)”應(yīng)改為“for(i=0,t=0;p[i];i++)”。(2)第二個標(biāo)識下的“c[t]="\0";”語句是在新生成的串后面加尾符標(biāo)志,在C語言中規(guī)定使用單引號把一個字符括起來作為字符常量,所以“c[t]="\0";”應(yīng)改為“c[t]=’\0’;”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次放到一維數(shù)組中。例如,二維數(shù)組中的數(shù)據(jù)為:333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)是:334455334455334455334455。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(ints[[[10],intb[],int*n,intmm,intnn){}main(){intw[10][10]={{33,33,33,33),{44,44,44,44},{55,55,55,55)),i,j;inta[100]={0),n=0;voidNONO();printf("Thematrix:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",W[i][j]);printf("\n");}fun(w,a,&n,3,4);printf("TheAarray:\n");for(i=0;i標(biāo)準(zhǔn)答案:inti,j;for(j=0;j知識點解析:(1)利用兩重循環(huán),依次取矩陣中的元素。(2)其中注意指針數(shù)組與數(shù)組指針的區(qū)別,其中數(shù)組指針s,它指向包含4個元素的一維數(shù)組。其數(shù)據(jù)元素的表示方式為:“*(*(s+i)+j)”。國家二級C語言機試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來從高位到低位的順序組成一個新數(shù),作為函數(shù)值返回。例如,從主函數(shù)輸入一個整數(shù)27638496,則函數(shù)返回值為26846。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>unsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;/*********found*********/i=【1】;/*********found*********/while(【2】){t=s%10;if(t%2==0){/*********found*********/x=x+t*i;i=【3】;}s=s/10;}returnx;}main(){unsignedlongn=-1;while(n>99999999||n<0){printf("Pleaseinput(0<n<100000000):");scanf("%ld",&n);}printf("\nTheresultis:%ld\n",fun(n));}標(biāo)準(zhǔn)答案:(1)1(2)s>0(3)i*10知識點解析:填空1:變量i用來控制被取出的偶數(shù)在新數(shù)中的位置,應(yīng)賦初值1。填空2:while語句的循環(huán)條件是s>0。填空3:變量i用來標(biāo)識個位、百位和千位等。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。此程序給定函數(shù)中,函數(shù)fun的功能是:統(tǒng)計字符串中各元音字母(即A、E、I、O、U)的個數(shù)。注意:字母不分大小寫。例如,輸入”THIsisaboot”,則應(yīng)輸出是10220。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件NODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>/*********found*********/fun(char*s,intnum[5]){intk,i=5;for(k=0;k<i;k++)/*********found*********/num[i]=0;for(;*s;s++){i=-1;/*********found*********/switch(s){case’a’:case’A’:{i=0;break;}caSe’e’:case’E’:{i=1;break;}caSe’i’:case’I’:{i=2;break;}case’0’:case’0’:{i=3;break;}case’u’:case’U’:{i=4;break;}}if(i>=0)num[i]++;}}voidmain(){chars1[81];intnum1[5],i;system("CLS");printf("\nPleaseenterastring:");gets(s1);fun(s1,hum1);for(i=0;i<5;i++)printf("%d",huml[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)voidfun(char*s,intnum[5])(2)num[k]=0;(3)switch(*s)知識點解析:switch語句說明如下:(1)switch后的表達(dá)式,可以是整型或字符型,也可以是枚舉類型。在新的ANSIC標(biāo)準(zhǔn)中允許表達(dá)式的類型為任何類型。(2)每個case后的常量表達(dá)式只能是由常量組成的表達(dá)式,當(dāng)switch后表達(dá)式的值與某一個常量表達(dá)式的值一致時,程序就轉(zhuǎn)到此case后的語句開始執(zhí)行。如果沒有一個常量表達(dá)式的值與switch后的值一致,就執(zhí)行default后的語句。(3)各個case后的常量表達(dá)式的值必須互不相同。(4)各個case的次序不影響執(zhí)行結(jié)果,一般情況下,盡量將出現(xiàn)概率大的case放在前面。(5)在執(zhí)行完一個case后面的語句后,程序會轉(zhuǎn)到下一個case后的語句開始執(zhí)行,因而必須使用break語句才能跳出。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun,其功能是:將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的千位和十位上。例如,當(dāng)a=45,b=12時,調(diào)用該函數(shù)后,c=1524。注意:部分源程序給出如下。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){inta,b;longC;printf("Inputa,b:");Scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n”,c);}標(biāo)準(zhǔn)答案:voidfun(inta,intb,long*c){/*b%10獲取b的個位,a/10獲取a的十位,a%10獲取a的個位,b/10獲取b的十位*/*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;}知識點解析:本題主要的問題是如何取出a和b的個位數(shù)和十位數(shù),取出后如何表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。得到后對應(yīng)乘以1000、100、10、1即可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個位數(shù)。注意使用c時要進(jìn)行指針運算。國家二級C語言機試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計算形參X所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指數(shù)組中小于平均值的數(shù)據(jù)移至數(shù)組的前部,大于等于平均值的數(shù)據(jù)移至X所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。例如,有10個正數(shù):4630324061745154826,平均值為:30.500000移動后的輸出為:3061715264632404548請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defiqeN10doublefun(double*x){inti,j;doubleav,y[N];av=0;/**********found**********/for(i=0ji標(biāo)準(zhǔn)答案:(1)x[i]/N(2)j++或j=j+1(3)i++或i=i+1知識點解析:第一空:“for(i=0;i二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:統(tǒng)計字符串中各元音字母(即:A、E、I、O、U)的個數(shù)。注意:字母不分大、小寫。例如:若輸入:THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(char*s,intnum[5]){intk,i=5;for(k=0;k=0)num[i]++;}}mein(){chars1[81];intnuml[5],i;printff"\nPleaseenterastring:");gets(S1);fun(s1,numl);for(i=0;i<5;i++)printf("%d",numl[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)num[k]=0;(2)switch(*s)知識點解析:(1)第一個標(biāo)識下的for循環(huán)過程是將num數(shù)組中的變量初始值設(shè)置為0,用來統(tǒng)計每一個元音字母出現(xiàn)的個數(shù),for循環(huán)中的循環(huán)條件表達(dá)式中的變量是k,所以第二個標(biāo)識下“num[i]=0;”改為“num[k]=0;”。(2)第二個標(biāo)識下的switch—case條件選擇的功能應(yīng)該是對s指針指向的字符串中的每一個字符進(jìn)行判斷,不應(yīng)該是s的數(shù)組名,所以第三個標(biāo)識下“switch(s)”改為“switch(*s)”三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如:二維數(shù)組中的值為:13579299946999813570則函數(shù)值為61。注意:部分源程序存在文件PROG1.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#inolude#defineM4#defineN5intfun(inta[M][N]){}main(){intaa[1][N]={{1,3,5,7,9),f2,9,9,9,4},{6,9,9,9,8),{1,3,5,7,0));inti,j,y;voidNONO();printf("Theoriginaldatais;\n");for(i=0;i標(biāo)準(zhǔn)答案:inttot=0,i,j;for(i=0;i知識點解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:求周邊元素的和,可以采用兩個循環(huán)分別把行元素和列元素相加。但要避免把周邊元素重復(fù)相加。國家二級C語言機試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將s所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符之后,并保持?jǐn)?shù)字字符串和非數(shù)字字符串原有的先后次序。例如,形參s所指的字符串為:def35adh3kjsdf7。執(zhí)行結(jié)果為:defadhkjsdf3537。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(char*s){inti,j=0,k:0;chart1[80],t2[80];for(i=0;s[i]!=’\0’;i++)if(s[i]>=’0’&&s[i]<=’9’){/************found************/t2[j]=s[i];_____1_____;}elset1[k++]=s[i];t2[j]=0;t1[k]=0;/************found************/for(i=0;i標(biāo)準(zhǔn)答案:(1)j++(2)s[i]=t1[i](3)j知識點解析:函數(shù)fun的功能是將s所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符之后。第一空:如果s[i]是數(shù)字字符,則將s[i]保存在t2數(shù)組中,同時變量i自增,準(zhǔn)備下次保存數(shù)字字符,故第一空處應(yīng)為“j++”。第二空:語句“for(i=0;i二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:用冒泡法對6個字符串按由小到大的順序進(jìn)行排序。請改正程序中的錯誤,使它能得出確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defimeMAXLINE20fun(char*pstr[6]){inti,j;char。P;for(i=0;i<5;i++){/*************found*************/for(j=i+1,j<6,j++){if(strcmp(*(pstr+i),*(pstr+j))>0){p=*(pstr+i);/*************found*************/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){inti;char*pstr[6],str[6][NAXLINE];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++)printf("%s\n",pstr[i]);}標(biāo)準(zhǔn)答案:(1)for(j=i十l;j<6;j++)(2)*(pstr+i)=*(pstr+j);知識點解析:函數(shù)的功能是用冒泡法對6個字符串按由小到大的順序進(jìn)行排序。(1)C語言中,for語句形式是:for(表達(dá)式1;表達(dá)式2:表達(dá)式3)循環(huán)體語句。因此第一個標(biāo)識下,for使用錯誤,應(yīng)該為“for(j=i+1;i<6;j++)”。(2)if語句后的復(fù)合語句的功能是把“*(pstr+1)”中和“*(pstr+j)”中的內(nèi)容進(jìn)行交換,而“*(pstr+i、)=pstr+j;”中“pstr+j;”是字符串地址,并不是字符串的元素內(nèi)容,所以第二個標(biāo)識下“*(pstr+i)=pstr+j;”改為“*(pstr+i)=*(pstr+j);”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。例如,若輸入字符串:123412132,輸入字符為:1,則輸出:3。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#include#defineM81intEun(char*ss,charc){}main(){chara[M],ch;voidNONO();printf("\nPleaseenterastring:");gets(a);printf("\nPleaseenterachar:")jch=getchar();printf("\nThenumberofthecharis:%d\n",fun(a,ch));NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/inti;FILE*rf,*wf;chara[M],b[M],ch;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",a);fscanf(rf,"%s",b);ch=*b;fprintf(wf,"%c=%d\n",ch,fun(a,ch));}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:intcnt=0;char*p=ss;while(*p){if(*p==c)cnt++;p++;}returncnt;知識點解析:該程序功能是統(tǒng)計字符串中指定字符的個數(shù)。解題思路是在循環(huán)過程中,對字符進(jìn)行判斷,如果符合題干要求,對其個數(shù)進(jìn)行統(tǒng)計。國家二級C語言機試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長度最短的字符串所在的行下標(biāo),作為函數(shù)值返回,并把其串長放在形參n所指的變量中。ss所指字符串?dāng)?shù)組中共有M個字符串,且串長小于N。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineM5#defineN20intfun(char(*ss)[N],int*n){inti,k=0,fen=N;/*********found*********/for(i=0;i<【1】;i++){fen=str1en(ss[i]);if(i==0)*n=1en;/*********found*********/if(fen【2】*n){*n=fen;k=i;}}/*********found*********/return(【3】);}main(){charss[M][N]={"shanghai","guangzhou","beijing","tianjirig”,”chongqing”);intn,k,i;printf("\nTheoriginalstringsaEe:\n");for(i=0;i<M;i++)puts(ss[i]);k=fun(ss,&n);printf("\nThelengthofshorteststringis:%d\n",n);printf("\nTheshorteststringis:%s\n",ss[k]);}標(biāo)準(zhǔn)答案:(1)M(2)<(3)k知識點解析:本題考查:for循環(huán)語句的循環(huán)條件;if語句條件表達(dá)式;return語句完成函數(shù)值的返回。填空1:題目指出ss所指字符串?dāng)?shù)組中共有M個字符串,所以for循環(huán)語句的循環(huán)條件是i<M。填空2:要求求長度最短的字符串,*n中存放的是已知字符串中長度最短的字符串的長度,將當(dāng)前字符串長度與*n比較,若小于*n,則將該長度值賦給*n,因此if語句的條件表達(dá)式為len<*n。填空3:將最短字符串的行下標(biāo)作為函數(shù)值返回,變量k存儲行下標(biāo)的值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:將tt所指字符串中的小寫字母全部改為對應(yīng)的大寫字母,其他字符不變。例如,若輸入“Ab,cD”,則輸出“AB,CD”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inClude<conio.h>#include<stdio.h>#include<string.h>char*fun(chartt[]){inti;for(i=0;tt[i];i++)/*********found*********/if((tt[i]>=’a’)||(tt[i]<=’z’))/*********found*********/tt[i]+=32;return(tt);}main(){chartt[81];print:f("\nPieaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}標(biāo)準(zhǔn)答案:(1)if((tt[i]>=’a’)&&(tt[i]<=’z’))(2)tt[i]一=32;知識點解析:本題考查:if語句條件表達(dá)式;小寫字母轉(zhuǎn)換為大寫字母的方法。(1)分析本題可知,要判斷字符是否為小寫字母,即判斷其是否在‘a(chǎn)’一‘z’之間,所以這里需要進(jìn)行連續(xù)的比較,用&&。(2)從ASCII碼表中可以看出,小寫字母的ASCII碼值比對應(yīng)大寫字母的ASCII值大32。將字符串中的小寫字母改為大寫字母的方法是:從字符串第一個字符開始,根據(jù)ASCII碼值判斷該字母是不是小寫字母,若是,則ASCII碼值減32。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(intm,int*k,intxx[]){}voidmain(){intm,n,zz[100];system("CLS");printf("\nPleaseenteranintegernumberbetween10and100;");scanf("%d",&n);fun(n,&m,zz);printf("\n\nThereare%dnon—primenumberslessthan%d:",m,n);for(n=0;n<m;n++)printf("\n%4d",zz[n]);}標(biāo)準(zhǔn)答案:voidfun(intm,int*k,intxx[]){inti,j,n=0;for(i=4;i<m;i++)/*找出大于1小于整數(shù)m的非素數(shù)*/{for(j=2;j<i;j++)if(i%j==0)break;if(j<i)xx[n++]=i;}*k=n;/*返回非素數(shù)的個數(shù)*/}知識點解析:本題考查:如何判斷非素數(shù);循環(huán)判斷結(jié)構(gòu);數(shù)組的引用。題目要求將1一m之間的非素數(shù)存入數(shù)組中,應(yīng)使用循環(huán)判斷結(jié)構(gòu)。循環(huán)語句用來遍歷1—m之間的每個數(shù),判斷語句用來判斷該數(shù)是否為素數(shù),若不是素數(shù),則將其存入數(shù)組中。本題是考查一個數(shù)是否為素數(shù)的簡單延伸,只要掌握了判斷素數(shù)的方法,問題便能順利解決。判定一個數(shù)是否為素數(shù),即判斷該數(shù)是否除了能被1和它本身整除外,不能被任何數(shù)整除。代碼實現(xiàn)如下:for(j=2;j<i;j++)if(i%j==0)/*如果余數(shù)為0,證明1不是素數(shù)*/此語句需要熟記,很多判斷素數(shù)的題目可通過此法解決。國家二級C語言機試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。若形參ch中是數(shù)字字符‘0’~‘9’,則將‘0’轉(zhuǎn)換成‘9’,‘1’轉(zhuǎn)換成‘8’,‘2’轉(zhuǎn)換成‘7’,…,‘9’轉(zhuǎn)換成‘0’;若是其他字符則保持不變;并將轉(zhuǎn)換后的結(jié)果作為函數(shù)值返回。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>/*********found*********/【1】fun(charch){/*********found*********/if(ch>=’0’&&【2】)/*********found*********/return’9’-(ch-【3】);returnch;}main(){charc1,c2;printf("\nTheresult:\n");c1=’2’;c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);c1=’8’;c2=fun(c1);printf("cl=%cc2=%c\n",c1,c2);c1=’a’;c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);}標(biāo)準(zhǔn)答案:(1)char(2)ch<=’9’(3)’0’知識點解析:本題考查:函數(shù)定義,注意函數(shù)定義的一般形式以及有參函數(shù)和無參函數(shù)的區(qū)別;if語句條件表達(dá)式,本題的條件表達(dá)式是判斷數(shù)字字符;函數(shù)返回值,其一般形式為“return表達(dá)式;”。填空1:函數(shù)定義時,類型標(biāo)識符指明了函數(shù)的類型,函數(shù)的類型實際上是函數(shù)返回值的類型,所以此處應(yīng)該填入char。填空2:通過if條件語句判斷字符串中字符是否為數(shù)字字符,即大于等于字符‘0’,同時小于等于字符‘9’。填空3:return語句完成函數(shù)返回操作,要實現(xiàn)字符轉(zhuǎn)換,完整語句為return’9’一(ch一’0’)。有參函數(shù)定義,其一般形式為:類型標(biāo)識符函數(shù)名(形式參數(shù)列表){聲明部分語句}在形參列表中給出的參數(shù)稱為形式參數(shù),它們可以是各種類型的變量,各參數(shù)之間用逗號分隔。在進(jìn)行函數(shù)調(diào)用時,主調(diào)函數(shù)將賦予這些形式參數(shù)實際的值。形參也是變量,必須在形參列表中給出類型說明。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:判斷一個整數(shù)是否為素數(shù),若是素數(shù)返回1,否則返回0。在main函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>intfun(intm){intk=2;while(k<=m&&(m%k))/*********found*********/k++/*********found*********/if(m=k)return1;elsereturn0;}voidmain(){intn;system("CLS");printf("\npleaseentern:");scanf("%d",&n);if(fun(n))printf("YES\n");elseprintf("NO!\n");}標(biāo)準(zhǔn)答案:(1)k++;(2)if(m==k)知識點解析:函數(shù)fun的功能是判斷m是否為素數(shù):m從2開始作為除數(shù),并對m取余,若不存在一個數(shù)使得余數(shù)為0,則m為素數(shù),程序的錯誤在于if(m=k)語句中的邏輯表達(dá)式寫成了賦值語句。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)和尾部的*號外,將串中其他的水號全部刪除。形參h已指向字符串中第—個字母,形參P指向字符串中最后一個字母。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,若字符串中的內(nèi)容為“****A*BC*DEF*G********”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“****ABCDEFG********”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<string.h>voidfun(char*a,char*h,char*P){}main(){chars[81],*t,*f;printf("Enterastring:\n");gets(s);t=f=s;while(*t)t++;t--;while(*t==’*’)t--;while(*f==’*’)f++;fun(s,f,t);printf("Thestringafterdeleted:\n");puts(s);}標(biāo)準(zhǔn)答案:voidfun(char*a,char*h,char*p){inti=0;char*q=a;/*將前導(dǎo)*號保存到a中*/while(q<h){a[i]=*q;q++;i++;}/*繼續(xù)遍歷數(shù)組*/while(q<p){if(*q!=’*’){/*如果不是木保存到a中*/a[i]=*q;i++;}q++;}/*將末尾*號保存到a中*/while(*q){a[i]=*q;i++;q++;}a[i]=’\0’;知識點解析:本題的重點是要選擇好判斷條件,首先是需要判斷前導(dǎo)*號的結(jié)束,然后判斷是否指向最后一個字母,最后補充尾部*號。國家二級C語言機試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。若形參ch中是數(shù)字字符’0’~’9’,則’0’轉(zhuǎn)換成’9’,’1’轉(zhuǎn)換成’8’,’2’轉(zhuǎn)換成’7’,……,’9’轉(zhuǎn)換成’0’;若是其他字符則保持不變;并將轉(zhuǎn)換后的結(jié)果作為函數(shù)值返回。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/**********found**********/___1___fun(charch){/**********found**********/if(ch>=’0’&&___2___)/**********found**********/return’9’-(ch-___3___)jreturnch;}main(){charc1,c2;printf("\nTheresult:\n");c1=’2’;c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);c1=’8’;c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);c1=’a’;c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);}標(biāo)準(zhǔn)答案:(1)char(2)ch<=’9’(3)’0’知識點解析:函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。第一空:由主函數(shù)內(nèi)fun函數(shù)的調(diào)用“c1=’2’;c2=fun(c1);”,而c1和c2是char變量,可知fun函數(shù)的返回值類型是char,故第一空處補充返回值類型應(yīng)為“char”。第二空:數(shù)字字符是’0’~’9’,因此數(shù)字字符必須ch>=’0’且ch<=’9’,故第二空處應(yīng)ch<=’9’。第三空:數(shù)字字符轉(zhuǎn)換規(guī)則是:’0’囀換成’9’,’1’轉(zhuǎn)換成’8’,’2’囀換成’7’,……,’9’囀換成’0’,即返回值為’9’-(ch-’0’),故第三空處應(yīng)為“’0’”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將P所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個字符之后插入一個空格。例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHUK,調(diào)用函數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJK。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#includevoidfun(char*P,char*b){inti,k=0;while(*P){i=1;while(i<=3&&*P){/**********found**********/b[k]=P;k++;p++;i++;}if(*P)}/**********found**********/b[k++]="";}}b[k]=’\0’;}main(){chara[80],b[80];printf("Enterastring:";gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:");puts(b);printf("\n\n");}標(biāo)準(zhǔn)答案:(1)b[k]=*p;(2)b[k++]=’’;知識點解析:函數(shù)的功能是將字符串p中的所有字符復(fù)制到字符串b中。(1)p是指針,p存放的內(nèi)容是地址值,第一標(biāo)識下“b[k]=p;”含義是將p存放的地址內(nèi)容賦給b[k],而不是把p指向的地址拷貝到b[k],顯然不符合題意,應(yīng)改成“b[k]=*p;”,*p是取p指向的地址的內(nèi)容。(2)第二個標(biāo)識符下是復(fù)制三個字符后在b中插入空格,原題中給出的“b[k++]=””;”,在C語言中字符常量是由單引號括起的單個字符,即空格字符應(yīng)為“’’”,而“""”是表示字符串常量且該字符串中只有一個空格字符。第二標(biāo)識下是將空格字符復(fù)制給b[k++],因此第二標(biāo)識下應(yīng)改為“b[k++]=’’;”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、N名學(xué)生的成績已在主函數(shù)中放入一個帶頭節(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun,它的功能是:求出平均分,由函數(shù)值返回。例如,若學(xué)生的成績是:85,76,69,85,91,72,64,87,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#include#defineN8structslist{doubles;structsliSt*next;}typedefstructslistSTREC;doublefun(STREC*h){}STREC*creat(double*s){STREC*h,*P,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));P->s=0;while(is=s[i];i++;P->next=q;P=q;}P->next=0;returnh;}outlist(STREC*h){STREC*P;p=h->next;printf("head");do{printf("->%4.1f",P->s);P=P->next;}while(P!=0);printf("\n\n");}main(){doubles[N]={85,76,69,85,91,72,64,87},ave;voidNONO();STREC*h;h=creat(s);outlist(h);ave=fun(h);printf("ave=%6.3f\n",ave);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti,j;doubles[N],ave;STREC*h;in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;、i<10;i++){for(j=0;j標(biāo)準(zhǔn)答案:sTREC*p=h->next;/*由于頭結(jié)點中沒有存放數(shù)據(jù)*/doubleav=0.0;/*對計算成績平均值的變量進(jìn)行初始化*/intn=0;while(p!=NULL){/*判斷鏈表是否結(jié)束*/av=av+p->s;/*對成績進(jìn)行累加*/p=p->next;/*到下一個結(jié)點位置*/n++;/*人數(shù)加1*/}av/=n;/*計算成績平均值*/returnav;/*返回成績平均值*/知識點解析:(1)首先定義存放平均值的變量,并對其初始化。(2)在循環(huán)中,依次取鏈表中存放的成績,并對其求和。(3)最后計算平均佰,并返回值。國家二級C語言機試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:將形參s所指字符串中下標(biāo)為奇數(shù)的字符按ASCII碼大小遞增排序,并將排序后下標(biāo)為奇數(shù)的字符取出,存入形參P所指字符數(shù)組中,形成一個新串。例如,形參s所指的字符為“baawrskjghzlicda”,執(zhí)行后P所指字符數(shù)組中的字符串應(yīng)為“aachjlsw”。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!=’\0’;i++)n++;for(i=1;i<n-2;i=i+2){/*********found*********/【1】;/*********found*********/for(j=【2】+2;j<n;j=j+2)if(s[t]>s[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=x;}}for(i=1,j=0;i<n;i=i+2,j++)P[j]=S[i];/*********found*********/P[j]=【3】;}main(){chars[80]="baawrskjghzlicda",P[50];printf("\nTheoriginalstringis:%s\n",s);fun(s,P);printf("\nTheresultis:%s\n",p);}標(biāo)準(zhǔn)答案:(1)t=i(2)i或t(3)’\0’或0知識點解析:本題中第1個for循環(huán)的作用是得到字符串的長度,第2個for循環(huán)的作用是對下標(biāo)為奇數(shù)的字符按ASCII碼大小排序,最后將排好序的字符取出。填空1:取出字符串中下標(biāo)為奇數(shù)的字符,所以將下標(biāo)i賦值給中間變量t。填空2:此處for循環(huán)語句的作用是實現(xiàn)對下標(biāo)為奇數(shù)的元素進(jìn)行排序操作,所以循環(huán)變量初值應(yīng)填入i或t;。填空3:將下標(biāo)為奇數(shù)的字符取出后,存入p所指的數(shù)組中,最后不要忘記在數(shù)組最后加入字符串結(jié)束標(biāo)識’\0’。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:刪除指針P所指字符串中的所有空白字符(包括制表符、回車符及換行符)。輸入字符串時用“#”結(jié)束輸入。請改正程序中的錯誤,使它能輸出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#includee<string.h>#includee<stdio.h>#includee<ctype.h>fun(char*P){inti,t;charc[80];/*********found*********/For(i=0,t=0;P[i];i++)if(!isspace(*(p+i)))c[t++]=P[i];/*********found*********/c[t]="\0";strcpy(p,c);}voidmain(){charc,s[80],inti=0;printf("Inputastring:");c=getchar();while(c!=’#’){s[i]=c;i++;c=getchar();)S[i]=’\0’;fun(s);puts(s),}標(biāo)準(zhǔn)答案:(1)for(i=0,t=0;p[i];i++)(2)c[t]=’\0’;知識點解析:該題目考查C語言關(guān)鍵字的書寫,C語言中關(guān)鍵字是區(qū)分大小寫的。另外為字符串結(jié)尾添加結(jié)束符時應(yīng)書寫為‘\0’,而非“\0”,“\0”表示一個字符串。該程序的if條件中應(yīng)用了isspace函數(shù),該函數(shù)的功能是檢查ch是否為空格、跳格符(制表符)或換行符。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是:將數(shù)組左下半三角元素中的值全部置成0。例如a數(shù)組中的值為:197238456則返回主程序后a數(shù)組中的值應(yīng)為:097008000注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>#defineN5voidfun(inta[][N]){}voidmain(){inta[N][N],i,j;system("CLS");printf("****Thearray****\n");for(i=0;i<N;i++)/*產(chǎn)生一個隨機的5*5矩陣*/{for(j=0;j<N;j++){a[i][j]=rand()%10;printf("%4d",a[i][j]);}printf("\n");}fun(a);printf("THERESULT\n");for(i=0;i<N;

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論