![國家二級(C語言)機(jī)試模擬試卷40(共27題)_第1頁](http://file4.renrendoc.com/view7/M01/00/37/wKhkGWbc7bOAKujSAAK8iACB0Ws514.jpg)
![國家二級(C語言)機(jī)試模擬試卷40(共27題)_第2頁](http://file4.renrendoc.com/view7/M01/00/37/wKhkGWbc7bOAKujSAAK8iACB0Ws5142.jpg)
![國家二級(C語言)機(jī)試模擬試卷40(共27題)_第3頁](http://file4.renrendoc.com/view7/M01/00/37/wKhkGWbc7bOAKujSAAK8iACB0Ws5143.jpg)
![國家二級(C語言)機(jī)試模擬試卷40(共27題)_第4頁](http://file4.renrendoc.com/view7/M01/00/37/wKhkGWbc7bOAKujSAAK8iACB0Ws5144.jpg)
![國家二級(C語言)機(jī)試模擬試卷40(共27題)_第5頁](http://file4.renrendoc.com/view7/M01/00/37/wKhkGWbc7bOAKujSAAK8iACB0Ws5145.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級(C語言)機(jī)試模擬試卷40(共9套)(共27題)國家二級(C語言)機(jī)試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補(bǔ)充main函數(shù),該函數(shù)的功能是:輸出一個(gè)NXN矩陣,要求非周邊元素賦值0,周邊元素賦值1。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>#defineN10main(){intbb[N]IN];ihti,j,n;clrscr0;printf("\nInputn:\n");scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++){if(【】)bb[i][j]=l;else【】;}printf("\n***theresult***\n");for(i=0;i<n;i++){printf("\n\n");for(j=0;j<n;j++)printf("%4d",bb[i][j]);}}標(biāo)準(zhǔn)答案:i==0‖i==n-1‖j==0‖j==n-1bb[i][j]=0知識點(diǎn)解析:第一空:用二維數(shù)組表示n×n矩陣時(shí),周邊元素是行下標(biāo)為0或n-1,列下標(biāo)為。或n-1的元素,判斷時(shí)四個(gè)條件中只要有一個(gè)條件滿足,則該元素就是周邊元素,所以用“‖”運(yùn)算符。第二空:題目要求將非周邊元素賦值為0。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:刪除字符串s中所有空白字符(包括Tab字符、回車符及換行符)。輸入字符串時(shí)用’#’結(jié)束輸入。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).試題程序:#include<string.h>#include<stdio.h>#include<ctype.h>fun(char*p){int!i,t;charc[80];for(i=0,t=0;p[i];i++)if(!isspace(*(p+i)))c[t++]=p[i];/**********************************/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)答案:錯(cuò)誤:c[t]="\0",正確:c[t]=’\0’知識點(diǎn)解析:注意,該程序的if條件中應(yīng)用了isspace函數(shù),該函數(shù)的功能是檢查ch是否空格、跳格符(制表符)或換行符。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是****A*BC*DEF*G。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)6ln的花括號中填入所編寫的若干語句。試題程序:#include<stdio,h>#include<conio.h>voidfun(char*a){}main(){chars[81];printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);}標(biāo)準(zhǔn)答案:voidfun(char*a){while(*a!=’\0’)a++;a--;/*指針a指向字符串的尾部*/while(*a==’*’)a--/*指針a指向最后一個(gè)字母*/*(a+l)=’\0’;/*在字符串最后加上結(jié)束標(biāo)志位*/}知識點(diǎn)解析:前面我們遇到類似將字符串頭部的’*’號全部刪除,其實(shí)解題思路是一樣的,請參照前面試題解析及參考答案。國家二級(C語言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0]、a[1]、a[2]、……中,把奇數(shù)從數(shù)組中刪除,偶數(shù)個(gè)數(shù)通過函數(shù)值返回。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:9、1、4、2、3、6、5、8、7,刪除奇數(shù)后a所指數(shù)組中的數(shù)據(jù)為:4、2、6、8,返回值為4。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i標(biāo)準(zhǔn)答案:a[i]%2a[j]j知識點(diǎn)解析:第一空:由“___2___=a[i];j++;”是將偶數(shù)元素保存起來并且計(jì)數(shù)變量加1,可知j記錄了偶數(shù)元素的個(gè)數(shù),第一空處是判斷a[i]是否是偶數(shù),因此第一空處應(yīng)為“a[i]%2”。第二空:a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0]、a[1]、a[2]….,j初始化為0,a[j]就可以將偶數(shù)元素存放在a中,故第二空處應(yīng)為“a[j]”。第三空:fun函數(shù)的返回值是偶數(shù)個(gè)數(shù),故第三空處應(yīng)為“j”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:用選擇法對數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行和刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j<n-1;j++){/************found************/p=jfor(i=j;i<n;i++)if(a[i]<a[p])/************found************/p=j;t=a[p];a[p]=a[j];a[j]=t;}}main(){inta[N]={9,6,8,3,-1},i,m=5;printf("排序前的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");fun(a,m);printf("排序后的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");}標(biāo)準(zhǔn)答案:p=j;p=i;知識點(diǎn)解析:(1)第一個(gè)標(biāo)識下面“p=j”,根據(jù)C語言的語法,不難發(fā)現(xiàn)語句結(jié)束缺少分號,因此改為“p=j;”。(2)第二個(gè)標(biāo)識下面的“p=j;”上兩句是以i作為循環(huán)和判斷條件,其中語句“for(i=j;i三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是:求出ss所指字符串中指定字符的個(gè)數(shù),并返回此值。例如,若輸入字符串:123412132,輸入字符為:1,則輸出:3。注意:部分源程序在文件PROGI.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#include#defineM81intfun(char*ss,charc){}main(){chara[M],ch;voidNONO();printf("\nPleaseenterastring:");gets(a);printf("\nPleaseenterachar:");ch=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;}知識點(diǎn)解析:如果不是串尾就進(jìn)入while循環(huán),在循環(huán)過程中利用if條件表達(dá)式判斷當(dāng)前字符是否為指定的字符,如果符合條件,那么對統(tǒng)計(jì)計(jì)數(shù)變量進(jìn)行加1操作。國家二級(C語言)機(jī)試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,查找含有形參substr所指子串的所有字符串并輸出,若沒找到則輸出相應(yīng)信息。ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長小于M。程序中庫函數(shù)substr(s1,s2)的功能是在s1串中查找s2子串,若沒有,函數(shù)值為0,若有,為非0。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN5#defineM15voidfun(char(*ss)[M],char*substr){inti,find=0;/***************found**************/for(i=0;i<【1】;i++)/***********found**************/if(strstr(ss[i],【2】)!=NULL){find=1;puts(ss[i]);printf("\n");}/************found************/if(find==【3】)printf("\nDon’tfound!\n");}main()(charx[N][M]=("BASIC","Clangwage","Java","QBASIC","Access"},str[M];int1;printf("\nTheoriginalstring\n\n");for(i=0;i標(biāo)準(zhǔn)答案:(1)N(2)substr(3)0知識點(diǎn)解析:第一空:“for(i=0;i<【1】;i++)"補(bǔ)充循環(huán)的結(jié)束條件,fun的參數(shù)(*ss)[M]是指向N行M列的字符串?dāng)?shù)組,循環(huán)是逐行字符串是否含有substr所指的子串,因此循環(huán)次數(shù)是N次,故第一空處應(yīng)為“N"。第二空:“if(strsr(ss[i],【2】)!=NULL)"是判斷字符串ss[i]是否含有substr所指的子串,故第二空處為"substr"。第三空:“if(find==【3】)printf("\nDon’tfound!\n");"說明沒有找到輸出提示信息,如果找到了“find=1;puts(ss[i]);printf("\n");"可知find會變成1,在沒有找到的情況下find為初值0。故第三空處判斷find是否等于0便可知是否找到了符合要求的字符串,因此第三空為“0"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:將p所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJK。請改正程序中的錯(cuò)誤,使它能得出正確結(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++]=’’;知識點(diǎn)解析:(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)第二個(gè)標(biāo)識符下是復(fù)制三個(gè)字符后在b中插入空格,原題中給出的"b[k++]="";",在c語言中字符常量是由單引號括起的單個(gè)字符,即空格字符應(yīng)為“’’",而“"""是表示字符串常量且該字符串中只有一個(gè)空格字符。第二標(biāo)識下是將空格字符復(fù)制給b[k++],因此第二標(biāo)識下應(yīng)改為“b[k++]=“;"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫程序fun,函數(shù)的功能是:實(shí)現(xiàn)B=A+A’,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計(jì)算結(jié)果在main函數(shù)中輸出。例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:程序輸出:注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(inta[3][3],intb[3][3]){}main()/*主程序*/{inta[3][3]=({1,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;voidNONO();fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",t[i][j]);printf("\n");}NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/inti,j,k,a[3][3],t[3][3];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(k=0;k<5;k++){for(i=0;i<3;i++)fscanf(rf,"%cl%d%d",&a[i][0],&a[i][1],&a[i][2]);fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)fprintf(wf,"%7d",t[i][j]);fprintf(wf,"\n");}}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:intc[3][3];inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++){c[i][j]=a[j][i];//矩陣的轉(zhuǎn)置b[i][j]=a[i][j]+c[i][j];}知識點(diǎn)解析:(1)首先,將a所指數(shù)組元素中的值進(jìn)行轉(zhuǎn)置并放到c所指數(shù)組中。(2)矩陣相加是指把兩個(gè)矩陣中下標(biāo)相同的元素的值一一對應(yīng)相加。國家二級(C語言)機(jī)試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補(bǔ)充main函數(shù),該函數(shù)的功能是:從鍵盤輸入學(xué)生的成績(用回車鍵作為分隔符),并統(tǒng)計(jì)各分?jǐn)?shù)段學(xué)生的人數(shù)。具體要求為:A類為90~100分,B類為80~89分,C類為70~79分,D類為60~69分,59分以下的為E類。當(dāng)成績?yōu)?時(shí)結(jié)束成績的輸入,并且最后輸入的0不進(jìn)行統(tǒng)計(jì)。例如,輸入89,99,45,64,56,78,88,74,66,55,0。結(jié)果為A:1B:2C:2D:2E:3注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>#include<conio.h>#defineN100main(){floatscore[N];intbb[5];intgrade,i=-1,n=0;charch=’A’;clrscr();printf("Inputascore(0~100);\n");do{i++;n++;printf("score[%d]=",i);scanf(【】);}while(score[i]!=0);for(i=0;i<5;i++)【】;for(i=0;i<n-1;i++){grade=【】;switch(grade){case10:case9:bb[0]++;break;case8:bb[1]++;break;case7:bb[2]++;break;case6:bb[3]++;break;default:bb[4]++;}}for(i=0;i<5;i++)printf("\n%c:%d",ch+i,bb[i]);}標(biāo)準(zhǔn)答案:"%f",&score[i]bb[i]=0score[i]/10知識點(diǎn)解析:第一空;本題考查標(biāo)準(zhǔn)輸入函數(shù)scanf()的調(diào)用格式,注意score[i]為實(shí)型變量,并且score[i]的前面要記住加上取址符&。第二空:數(shù)組bb[5]中存放各分?jǐn)?shù)段學(xué)生的人數(shù),程序中只對數(shù)組bb[5]進(jìn)行了聲明,并沒有給予初始化,此處將數(shù)組各元素初始化為0。第三空:通過switch語句可以看出,grade等于將分?jǐn)?shù)整除10后的值。注意,運(yùn)算符‘/’兩邊都是整型數(shù)時(shí),結(jié)果仍然是整型數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:依次取出字符串中所有的數(shù)字字符,形成新的字符串,并取代原字符串。請改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<conio.h>voidfun(char*s){inti,j;for(i=0,j=0;s[i]!=’\0’;i++)if(s[i]>=’0’&&s[i]<=’9’)/*************found**************/s[j]=s[i];/*************found**************/s[j]="\0";}main(){charitem[80];clrscr();printf("\nEnterastring:");gets(item);printf("\n\nThestringis:\%s\n",item);fun(item);printf("\n\nThestringofchangingis:\%s\n",item);}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤;s[j]=s[i];正確:s[j++]=s[i];(2)錯(cuò)誤:s[j]="\0";正確:s[j]=’\0’;知識點(diǎn)解析:有循環(huán)條件if(s[i]>=’0’&&s[i]<=’9’)以及題目要求“依次取出字符串中所有的數(shù)字字符”可知,s[j]=s[i];表述錯(cuò)誤。s[j]="\0";中是一個(gè)常識性語法錯(cuò)誤,學(xué)習(xí)者只要在平時(shí)訓(xùn)練的時(shí)候注意一下就可以了。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在即所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過形參n返回。例如,若x中的值為30,則有4個(gè)數(shù)符合要求,它們是1,3,5,15。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(intx,intpp[],int*n){}main(){intx,aa[1000],n,i;clrscr();printf("\nPleaseenteranintegernumber:\n");scanf("%d",&x);fun(x,aa,&n);for(i=0;i<n;i++)printf("%d",aa[i]);printf("\n");}標(biāo)準(zhǔn)答案:voidfun(intx,intpp[],int*n){inti,j=0;for(i=1;i<x;i=i+2)/*i的初始值為1,步長為2,確保i為奇數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/pp[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/}知識點(diǎn)解析:本題題干信息是:能整除x且不是偶數(shù)的所有整數(shù)。循環(huán)語句中i從1開始且每次增2,所以i始終是奇數(shù)。國家二級(C語言)機(jī)試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將帶頭節(jié)點(diǎn)的單向鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表結(jié)點(diǎn)數(shù)據(jù)域,從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、6、8、10。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;/**********found**********/p=【1】;while(p){/**********found**********/q=【2】;while(q){/**********found**********/if(p->data【3】q->data){t=p->data;p->data=q->data;q->data=t;}q=q->next;}p=p->next;}}NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h->next=NULL;for(i=0;idata=a[i];q->next=NULL;if(h->next==NULL)h->next=p=q;else{p->next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;p=h->next;if(p==NULL)printf("ThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\n");}}main(){NODE*head;inta[N]={0,10,4,2,8,6};head=creatlist(a);printf("\nTheoriginallist:\n");outlist(head);fun(head);printf("\nThelistaftersorting:\n");outlist(head);}標(biāo)準(zhǔn)答案:h->nextp->next>=知識點(diǎn)解析:第一空:由審題分析可知,q從h的下一個(gè)元素開始尋找最小值,故第一空為“h->next”。第二空:由審題分析可知,while循環(huán)是在剩下的元素當(dāng)中找最小值,剩下的結(jié)點(diǎn)是由q指向的鏈表,q從p的后一個(gè)結(jié)點(diǎn)開始,故第二空處應(yīng)為“p->next”。第三空:“if(p->data__3__q->data)”是比較p結(jié)點(diǎn)和p結(jié)點(diǎn)數(shù)據(jù)的大小,如果p結(jié)點(diǎn)的數(shù)據(jù)比q結(jié)點(diǎn)的數(shù)據(jù)大,那么應(yīng)該將p結(jié)點(diǎn)和q結(jié)點(diǎn)的數(shù)據(jù)進(jìn)行交換,故第三空處應(yīng)為“>=”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串中出現(xiàn)的與t1所指字符串相同的子串全部替換成t2所指字符串,所形成的新串放在w所指的數(shù)組中。在此處,要求t1和t2所指字符串的長度相同。例如,當(dāng)s所指字符串中的內(nèi)容為:”abcdabfab”,t1所指子串中的內(nèi)容為:”ab”,t2所指子串中的內(nèi)容為:”99”時(shí),結(jié)果在W所指的數(shù)組中的內(nèi)容應(yīng)為:”99cd99f99”。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(char*s,char*t1,char*t2,char*w){char*p,*r,*a;strcpy(w,s);while(*w){p=w;r=t1;/************found************/while(r)if(*r==*p){r++;p++;}elsebreak;if(*r==’\0’){a=w;r=t2;while(*r){/************found************/*a=*r;a++;r++}w+=strlen(t2);}elsew++;}}main(){chars[100],t1[100],t2[100],w[100];printf("\nPleaseenterstringS:");scanf("%s",s);printf("\nPleaseentersubstringt1:");scanf("%s",t1);printf("\nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,t1,t2,w);printf("\nTheresultis:%s\n",w);}elseprintf("Error:strlen(t1)!=strlen(t2)\n");}標(biāo)準(zhǔn)答案:while(*r)*a=*r;a++;r++;知識點(diǎn)解析:(1)函數(shù)通過while語句比較r所指字符串是否和p所指的子串相同,若有相同,會一直循環(huán)到*r是’\0’才退出循環(huán)。所以第二個(gè)標(biāo)識下的“while(r)”改為“while(*r)”。(2)C語言中,語句應(yīng)該以“;”結(jié)束,在第二個(gè)標(biāo)識處,“r++”語句沒有以“;”結(jié)束,因此第二個(gè)標(biāo)識處應(yīng)該是“*a=*r;a++;r++;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是:求出能整除形參x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過形參n返回。例如,若x中的值為:35,則有4個(gè)數(shù)符合要求,它們是:1,5,7,35。注意:部分源程序在文件PROGI.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(intx,intpp[],int*n){}main(){intx,aa[1000],n,i;voidNONO();printf(”\nPleaseenteranintegernumber:\n”);scanf(”%d”,&x);fun(x,aa,&n);for(i=0;i標(biāo)準(zhǔn)答案:{inti;*n=0;for(i=1;i<=x;i++)if((x%i==0)&&(i%2))pp[(*n)++]=i;}知識點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:首先,初始化變量*n;定義i,作為循環(huán)變量。然后,每判斷一次i的值是否能整除形參x,且i不為偶數(shù),滿足題干條件的話存儲到pp所指數(shù)組中,*n記錄找到整數(shù)的個(gè)數(shù),不斷循環(huán)此過程,直到i的值等于m。國家二級(C語言)機(jī)試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是重寫形參filename所指文件中最后一個(gè)學(xué)生的數(shù)據(jù),即用新的學(xué)生數(shù)據(jù)覆蓋該學(xué)生原來的數(shù)據(jù),其他學(xué)生的數(shù)據(jù)不變。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;/**********found**********/fp=fopen(【1】,"rb+");/**********found**********/fseek(【2】,-(long)sizeof(STU),SEEK_END);/**********found**********/fwrite(&n,sizeof(STU),1,【3】);fclose(fp);}main(){STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88}};STUn={10006,"ZhaoSi",55,70,68},ss[N];inti,j;FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("\nTheoriginaldata:\n\n");for(j=0;j標(biāo)準(zhǔn)答案:filenamefpfp知識點(diǎn)解析:第一空:“fp=fopen(__1__,"rb+");”補(bǔ)充fopen的參數(shù),fopen的調(diào)用形式是:fp=fopen(文件名,文件使用方式),因此第一空處應(yīng)填文件名“filename”。第二空:此處是補(bǔ)充fseek函數(shù)的參數(shù),fseek的調(diào)用形式是:fseek(fp,offset,position),其中第一個(gè)參數(shù)是文件型指針,故第二空處應(yīng)填文件型指針變量“fp”。第三空:fwrite的調(diào)用形式是(buffer,size,count,fp),最后一個(gè)參數(shù)是文件型指針,故第三空處應(yīng)填“fp”,將新的學(xué)生數(shù)據(jù)寫在最后一個(gè)學(xué)生數(shù)據(jù)位置。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。例如,若m=2000,則應(yīng)輸出:0.000160。請改正程序中的語法錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#inclucle/****************found**************/fun(intm){doubley=0,d;inti;/****************found**************/for(i=100,i<=m,i+=100){d=(double)i*(double)i;y+=1.0/d;}return(y);}mein(){intn=2000;printf("\nTheresultis%lf\n",fun(n));}標(biāo)準(zhǔn)答案:(1)doublefun(in七m)(2)for(i=100;i<=m;i+=100)知識點(diǎn)解析:(1)第一個(gè)標(biāo)識下的fun函數(shù)的定義,根據(jù)題干中給出的公式中的分?jǐn)?shù)部分??芍獞?yīng)該具有double類型返回值。所以應(yīng)將“。fun(intm)"改為“doublefun(intm)"。(2)第二個(gè)標(biāo)識下的for循環(huán)過程是實(shí)現(xiàn)對公式的求解,C語句中for循環(huán)中的多個(gè)循環(huán)條件表達(dá)式是以分號為分隔符,所以第二個(gè)標(biāo)識下“for(,凈100,i<=m,i+=100)"改為“for(i=100;i<=m;i+=100)"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和·號。請編寫函數(shù)fun,它的功能是:使字符串的前導(dǎo)·號不得多于n個(gè);若多于n個(gè),則刪除多余的*號:若少于或等于n個(gè),則什么也不做,字符串中間和尾部的*號不刪除。例如,字符串中的內(nèi)容為:*********A*BC*DEF*G****,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G****;若n的值為8,則字符串中的內(nèi)容仍為********A*BC*DEF*G****。n的值在主函數(shù)中輸入。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。注意:部分源程序在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a,intn){}main(){chars[81];intn;voidNONO();printf("Enterastring:\n");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti,n;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0,i<10;i++){fscanf(in,"%s",s);fscanf(in,"%d",&n),fun(s,n),fprintf(out,"%s\n",s);}fclose(in);fclose(out);}標(biāo)準(zhǔn)答案:inti=0,k=0;char*t=a;while(*t==’*’){k++;t++;}t=a;if(k>n)t=a+k—n;while(*t){a[i]=*t;i++;t++;}a[i]=’\0’;知識點(diǎn)解析:(1)首先由字符串頭開始判斷字符是否為"*"號字符,如果字符是符號"*",則對"*"號進(jìn)行統(tǒng)計(jì)。(2)根據(jù)統(tǒng)計(jì)的"*"號數(shù)目結(jié)合題目中對"*"號個(gè)數(shù)的要求,判斷是執(zhí)行對"*"號的截取操作,還是什么都不用做。(3)然后將其他的所有字符拷貝到字符串,最后記得在新串s的末尾加上結(jié)束符"’\n’"。國家二級(C語言)機(jī)試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:對形參s所指字符串中下標(biāo)為奇數(shù)的字符按ASCⅡ碼大小遞增排序,并將排序后下標(biāo)為奇數(shù)的字符取出,存入形參p所指字符數(shù)組中,形成一個(gè)新串。例如,形參s所指的字符串為:baawrskjghzlicda,執(zhí)行后p所指字符數(shù)組中的字符串應(yīng)為:aachjlsw。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!=’\0’;i++)n++;for(i=l,is[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=X;}}for(i=l,j=0;i標(biāo)準(zhǔn)答案:(1)t=i(2)i(3)0或“\0"知識點(diǎn)解析:第一空:由審題分析可知,t記錄開始的字符,數(shù)組中挑選一個(gè)最小的元素和t位置的字符交換,故第一空處應(yīng)為“t=1"。第二空:“for(j=【2】+2;j二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。例如,若m中的值為:5,則應(yīng)輸出:1.463611。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行。也不得更改程序的結(jié)構(gòu)!#includedoublefun(intm){doubley=1.0;inti;/******************found*******************/for(i=2;i標(biāo)準(zhǔn)答案:(1)for(i=2;i<=m;i++)(2)y+=1.0/(i*i);知識點(diǎn)解析:(1)根據(jù)題干中給出的公式,可以看到循環(huán)是從2到m,所以第一個(gè)標(biāo)識下的“for(i=2;i三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入結(jié)構(gòu)體數(shù)組a中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最高的學(xué)生記錄,通過形參指針傳回主函數(shù)(規(guī)定只有一個(gè)最高分)。已給出函數(shù)的首部,請完成該函數(shù)。注意:部分源程序存在文件PROGI.C中。請勿改動主函數(shù)mare和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#include#defineN10typedefstructss{charnum[10];ints;}STU;fun(STUa[],STU*s){}main(){STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;inti;printf("*****Theoriginaldata*****\n");for(i=0;i<N;i++)printf("No=%sMark=%d\n",a[i].num,a[i].s);fun(a,&m);printf("*****THERESULT*****\n");printf("Thetop:%s,%d\n",m.num,m.s);NONO();}NONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;STUa[N],m;inti;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++)fscanf(rf,"%s%d",a[i].num,&a[i].s);fun(a,&m);fprintf(wf,"Thetop:%s,%d\n",m.num,m.s);fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:{inti,max=a[0].s,j=0;for(i=1;i知識點(diǎn)解析:(1)首先指定第一個(gè)成績?yōu)樽罡叻謹(jǐn)?shù)。(2)再使用一個(gè)for循環(huán)把所有的成績進(jìn)行比較,找出最高的分?jǐn)?shù)來。國家二級(C語言)機(jī)試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,在main函數(shù)中將多次調(diào)用fun函數(shù),每調(diào)用一次fun函數(shù),輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)next(2)t->data(3)t知識點(diǎn)解析:fun函數(shù)的功能是輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。由于鏈表是單向的,找到鏈表尾部結(jié)點(diǎn)需要利用循環(huán)從頭結(jié)點(diǎn)開始查找,直至找到最后一個(gè),找到之后輸出尾部結(jié)點(diǎn)的數(shù)據(jù),然后刪除尾結(jié)點(diǎn)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.c中函數(shù)fun的功能是;由形參給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n=8時(shí),輸入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763所得平均值為:195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為:5請改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)知識點(diǎn)解析:本題中函數(shù)的功能是輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。本題中的函數(shù)實(shí)現(xiàn)過程首先求解平均值,然后將所有值與平均值進(jìn)行比較,統(tǒng)計(jì)高于平均值的實(shí)數(shù)個(gè)數(shù)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:計(jì)算并輸出給定數(shù)組(長度為9)中每相鄰兩個(gè)元素之平均值的平方根之和。例如,給定數(shù)組中的9個(gè)元素依次為12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,輸出應(yīng)為:s=35.951014。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:知識點(diǎn)解析:該程序功能是計(jì)算并輸出給定數(shù)組(長度為9)中每相鄰兩個(gè)元素之平均值的平方根之和。在循環(huán)中,首先確定相鄰元素之間的關(guān)系,然后對其進(jìn)行平均值平方根之和的操作。國家二級(C語
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球鹽酸毛果蕓香堿行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025服務(wù)器托管合同書模板
- 綠色供應(yīng)鏈一體化管理合同
- 2025關(guān)于醫(yī)藥采購合同
- 品牌服務(wù)協(xié)議書合同范本
- 濱海新區(qū)應(yīng)急管理局
- 房屋租賃權(quán)轉(zhuǎn)讓合同范文
- 建筑材料居間合同
- 藥品購銷標(biāo)準(zhǔn)合同
- 企業(yè)間借款擔(dān)保合同
- 2025年潞安化工集團(tuán)招聘筆試參考題庫含答案解析
- 幼兒園一日生活安全課件
- 《認(rèn)罪認(rèn)罰案件被追訴人反悔應(yīng)對機(jī)制研究》
- 多旋翼無人飛行器嵌入式飛控開發(fā)實(shí)戰(zhàn)-基于STM32系列微控制器的代碼實(shí)現(xiàn)
- 國家開放大學(xué)護(hù)理社會實(shí)踐報(bào)告
- 投資項(xiàng)目評估管理制度
- 《工程地質(zhì)》試題及答案四
- 工程項(xiàng)目歸檔資料目錄范本
- 氦離子化色譜法測試電氣設(shè)備油中溶解氣體的技術(shù)規(guī)范
- 地 理探究與實(shí)踐 保護(hù)世界文化遺產(chǎn)課件 2024-2025學(xué)年地理湘教版七年級上冊
- 內(nèi)燃機(jī)車鉗工(中級)職業(yè)鑒定理論考試題及答案
評論
0/150
提交評論