版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)(C語言)機(jī)試模擬試卷16(共9套)(共28題)國(guó)家二級(jí)(C語言)機(jī)試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計(jì)算出帶有頭結(jié)點(diǎn)的單向鏈表中各結(jié)點(diǎn)數(shù)據(jù)域中值之和作為函數(shù)值返回。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p){/**********found**********/s+=p->【1】;/**********found**********/p=p->【2】;}returns;}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48};head=creatlist(a);outlist(head);/**********found**********/printf("\nsum=%d\n",fun(【3】));}SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*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");}}標(biāo)準(zhǔn)答案:datanexthead知識(shí)點(diǎn)解析:第一空:循環(huán)“while(p)”遍歷整個(gè)鏈表,在循環(huán)體中,s是累加變量,每個(gè)結(jié)點(diǎn)的數(shù)據(jù)域上的數(shù)據(jù)都累加在s上,因此第一空處應(yīng)為“s+=p->data;”。第二空:p是循環(huán)變量,p不斷指向下一個(gè)結(jié)點(diǎn),故第二空處應(yīng)為“p=p->next;”。第三空:fun函數(shù)的聲明為:intfun(SLIST*h),參數(shù)是SLIST結(jié)構(gòu)體指針,表示頭結(jié)點(diǎn)地址,因此第三空處的函數(shù)調(diào)用應(yīng)為“printf("\nsum=%d\n",fun(head));”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODII.C中函數(shù)fun的功能是:將tt所指字符串中的小寫字母都改為對(duì)應(yīng)的大寫字母,其他字符不變。例如,若輸入”Ab,cD”,則輸出”AB,CD”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includechar*fun(chartt[]){inti;for(i=0;tt[i];i++)/**********found***********/if((’a’<=tt[i])||(tt[i]<=’z’))/**********found***********/tt[i]+=32;return(tt);}main(){chartt[81];printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}標(biāo)準(zhǔn)答案:if((’a’<=tt[i])&&(tt[i]<=’z’))tt[i]-=32;知識(shí)點(diǎn)解析:(1)第一個(gè)錯(cuò)誤標(biāo)識(shí)下的if判斷語句中的邏輯有誤,應(yīng)該是與(&&)的關(guān)系,不是或(||)的關(guān)系,所以if判斷語句改為“if((’a’<=tt[i])&&(tt[i]<=’z’))”。(2)第二個(gè)標(biāo)識(shí)下小寫字母轉(zhuǎn)換為大寫字母的轉(zhuǎn)換算法有誤,小寫轉(zhuǎn)換為大寫應(yīng)該是減去32,而不是加上32,所以“tt[i]+=32;”改為“tt[i]-=32;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為奇數(shù)、同時(shí)ASCⅡ值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。例如,若S所指字符串中的內(nèi)容為:"ABCDEFGl2345",其中字符A的ASCⅡ碼值雖為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此必需刪除;而字符1的ASCⅡ碼值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"135"。注意:部分源程序存在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("\nPleaseenterstrings:");scarlf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/chars[100],t[100];FTLE*rf,*wf;inti;rf=fopen("in.dat","r"),wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%s\n",t);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,j=0;for(i=1,i知識(shí)點(diǎn)解析:(1)判斷一個(gè)字符串中的某一字符下標(biāo)i是否為奇數(shù),可用“i%2!=0"來判斷,也可以從下標(biāo)1開始,每次移動(dòng)2個(gè)位置;而判斷字符的ASCⅡ碼值是否為奇數(shù),則可用“s[i]%2!=0"來判定。(2)對(duì)串s中各個(gè)字符串逐個(gè)進(jìn)行考查,滿足條件的字符就順序放在新串t中,否則就不存放。(3)所有字符處理完后,記得在新串t的末尾加上結(jié)束符"’\0’"。國(guó)家二級(jí)(C語言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參s所指字符串中所有ASCII碼值小于97的字符存入形參t所指字符數(shù)組中,形成一個(gè)新串,并統(tǒng)計(jì)出符合條件的字符個(gè)數(shù)作為函數(shù)值返回。例如,形參s所指的字符串為:Abe@1x56*。程序執(zhí)行后t所指字符數(shù)組中的字符串應(yīng)為:A@156*。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)*s(2)s++(3)n知識(shí)點(diǎn)解析:本題中函數(shù)fun的功能是將形參s所指字符串中所有ASCII碼值小于97的字符存入形參t所指字符數(shù)組中,形成一個(gè)新串,并統(tǒng)計(jì)出符合條件的字符個(gè)數(shù)作為函數(shù)值返回。逐個(gè)搜索s字符串,如果字符的ASCII.碼值小于97,那么將該字符存入形參t所指字符數(shù)組中,并統(tǒng)計(jì)個(gè)數(shù),搜索完整個(gè)字符串便可完成要求的功能。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:計(jì)算n的5次方的值(規(guī)定n的值大于2、小于8),通過形參指針傳回主函數(shù);并計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和作為函數(shù)值返回。例如,7的5次方是16807,其低3位數(shù)的和值是15。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)d=1;s=0;(2)d=d/10;知識(shí)點(diǎn)解析:本題中函數(shù)的功能是計(jì)算n的5次方的值(規(guī)定n的值大于2、小于8),通過形參指針傳回主函數(shù);并計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和作為函數(shù)值返回。本題解題過程首先是求5次方,然后對(duì)結(jié)果進(jìn)行截取以及求和。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫程序fun,函數(shù)的功能是:實(shí)現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計(jì)算結(jié)果在main函數(shù)中輸出。例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:123147456258789369程序輸出:261061014101418注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:知識(shí)點(diǎn)解析:該程序功能是實(shí)現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置。其中,所謂矩陣的轉(zhuǎn)置,是把行中的數(shù)據(jù)與列中的數(shù)據(jù)進(jìn)行對(duì)調(diào)。解題過程中首先求得已給的矩陣的轉(zhuǎn)置,然后在循環(huán)過程中對(duì)矩陣與該矩陣的轉(zhuǎn)置對(duì)應(yīng)元素求和。國(guó)家二級(jí)(C語言)機(jī)試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲(chǔ)了一名學(xué)生的信息。函數(shù)fun的功能是輸出這位學(xué)生的信息。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includetypedefstruct{intnum;charname[9];charsex;struct{intyear,month,day;}birthday;floatscore[3];}STU;/**********found**********/voidshow(STU【1】){inti;printf("\n%d%s%c%d-%d-%d",tt.num,,tt.sex,tt.birthday.year,tt.birthday.month,tt.birthday.day);for(i=0;i<3;i++)/**********found**********/printf("%5.1f",【2】);printf("\n");}main(){STUstd={1,"Zhanghua",’M’,1961,10,8,76.5,78.0,82.0};printf("\nAstudentdata:\n");/**********found**********/show(【3】);}標(biāo)準(zhǔn)答案:tttt.score[i]std知識(shí)點(diǎn)解析:第一空:由“printf("\n%d%s%c%d-%d-%d",tt.num,,tt.sex,tt.birthday.year,tt.birthday.month,tt.birthday.day);”可知,tt是STU結(jié)構(gòu)體變量,故函數(shù)fun的參數(shù)是“STUtt”,即第一空處應(yīng)為“voidshow(STUtt)”。第二空:此處是循環(huán)輸出score數(shù)組中的元素值,訪問score元素的方法是“tt.score[i]”,故第二空處應(yīng)為“printf("%5.1f",tt.score[i]);”。第三空:調(diào)用fun函數(shù),fun函數(shù)的參數(shù)是STU結(jié)構(gòu)體變量,故第三空處應(yīng)為“show(std);”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、在主函數(shù)中從鍵盤輸入若干個(gè)數(shù)放入數(shù)中,用0結(jié)束輸入并放在最后一個(gè)元素中。給定程序MODll.C中函數(shù)fun的功能是:計(jì)算數(shù)組元素中值為正數(shù)的平均值(不包括0)。例如:數(shù)組中元素中的值依次為:39,-47,21,2,-8,15,0,則程序的運(yùn)行結(jié)果為:19.250000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includedoublefun(intx[]){/************found************/intsum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;}/************found************/sum\=c;returnsum;}main(){intx[1000];inti=0;printf("\nPleaseentersomedata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%f\n",fun(x));}標(biāo)準(zhǔn)答案:doublesum=0.0;sum/=c;知識(shí)點(diǎn)解析:(1)fun函數(shù)的返回值是double型,返回值sum的定義類型原題定義為int型,與fun的定義類型不符,所以將“intsum=0.0;”改為“doublesum=0.0;”。(2)第二個(gè)標(biāo)識(shí)下的“sum\=c;”語句中的“\”符號(hào)是非法符號(hào),這里應(yīng)該是除號(hào)。所以,第二個(gè)標(biāo)識(shí)下“sum\=c;”應(yīng)該改為“sum/=c;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,它的功能是:求出1到1000之間能被7或ll整除、但不能同時(shí)被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#includevoidfun(int*a,int*n){}main(){intaa[1000],n,k;voidNONO();fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0)printf("\n");elseprintf("%5d",aa[k]);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/intaa[1000],n,k;FILE*fp;fp=fopen("out.dat","w");fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0)fprintf(fp,"\n");elsefprintf(fp,"%5d",aa[k]);fclose(fp);}標(biāo)準(zhǔn)答案:{inti;*n=0;for(i=7;i<1000;i++)if(((i%7)==0||(i%11)==0)&&(i%77)!=0)a[(*n)++]=i;}知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:首先,*n置0,設(shè)置為累計(jì)器,計(jì)算符合條件的數(shù)的個(gè)數(shù)。然后,通過循環(huán),判斷小于1000的每一個(gè)整數(shù)是否符合題干中的要求。其中的判斷條件能否被7或者被11整除為i%7==0||i%11==0,不能被11和7同時(shí)整除為i%77!=0,它們之間的并關(guān)系就用&&連接,最后結(jié)果即為(i%7==0||i%11==0)&&i%77!=0。最后,將符合條件的整數(shù)存入數(shù)組a中,同時(shí)對(duì)*n進(jìn)行自加,返回結(jié)果。國(guó)家二級(jí)(C語言)機(jī)試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定的程序中,函數(shù)fun()的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)和。2/1,3/2,5/3,8/5,13/8,21/13,…其值通過函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667。[注意]部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語句。[試題源程序]#include<stdio.h>#include<conio.h>doublefun(intn){inta=2,b=1,c,k;double(1);for(k=1;k<=n;k++){s=s+1.0*a/b;c=a;a+=(2);b=c;}return(d);}main(){intn=5;printf("\nThevalueoffunctionis:%1f\n",(3));}標(biāo)準(zhǔn)答案:[1]s=0.0[2]b[3]fun(n)知識(shí)點(diǎn)解析:填空1:根據(jù)題目的意思,這里應(yīng)該是對(duì)變量s的聲明,注意到后面有對(duì)s的累加操作,所以聲明之后一定要進(jìn)行初始化,把s賦值為0。填空2:根據(jù)題目的意思,此處是循環(huán)求和,由數(shù)列很容易看出后一項(xiàng)的分子是前一項(xiàng)分母與分子之和,即a=a+b或者a+=b。填空3:由算法可以看出,此處是進(jìn)行子函數(shù)調(diào)用。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。[試題源程序]#include<stdio.h>#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;}}msin(){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)答案:(1)錯(cuò)誤:p=j正確:p=;(2)錯(cuò)誤:p=j;正確:p=i;知識(shí)點(diǎn)解析:題中提到按“從小到大”的順序排序,這類題目都可以用選擇排序法,即從后N個(gè)比較過程中,選擇一個(gè)最小的與第一個(gè)元素交換,以此類推,即用第二個(gè)元素與后N-1個(gè)進(jìn)行比較,并進(jìn)行交換。錯(cuò)誤1:此處錯(cuò)誤比較明顯,p=j后面應(yīng)加分號(hào)。錯(cuò)誤2:根據(jù)選擇排序法的思路,此處應(yīng)將i賦給p。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動(dòng)后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。[注意]部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。[試題源程序]#inciude<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);inti,P,n=15;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\nEnterp:");scanf("%d",&p);fun(a,P,n);printf("\nThedataaftermoving:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");}標(biāo)準(zhǔn)答案:voidfun(int*w,intp,intn){inti,J,t;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}知識(shí)點(diǎn)解析:暫無解析國(guó)家二級(jí)(C語言)機(jī)試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、用篩選法可得到2~n(n<10000)之間的所有素?cái)?shù),方法是:首先從素?cái)?shù)2開始,將所有2的倍數(shù)的數(shù)從數(shù)表中刪去(把數(shù)表中相應(yīng)位置的值置成0);接著從數(shù)表中找下一個(gè)非0數(shù),并從數(shù)表中刪去該數(shù)的所有倍數(shù);依此類推,直到所找的下一個(gè)數(shù)等于n為止。這樣會(huì)得到一個(gè)序列:2,3,5,7,1l,13,17,19,23,……函數(shù)fun用篩選法找出所有小于等于n的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)作為函數(shù)值返回。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)a[i](2)a[i](3)0知識(shí)點(diǎn)解析:本題中fun函數(shù)的功能是用篩選法可得到2~n(n<10000)之間的所有素?cái)?shù),和一般的直接判斷一個(gè)數(shù)是否是素?cái)?shù)不同,一般的判斷數(shù)n是否是素?cái)?shù)的方法是比較從2開始的所有小于n的i,看n%i是否均不為0。篩選法是首先從素?cái)?shù)2開始,將所有2的倍數(shù)的數(shù)從數(shù)表中刪去(把數(shù)表中相應(yīng)位置的值置成0);接著從數(shù)表中找下一個(gè)非0數(shù),并從數(shù)表中刪去該數(shù)的所有倍數(shù);依此類推,直到所找的下一個(gè)數(shù)等于n為止,這樣就可以將所有的非素?cái)?shù)去除,剩下來的非0數(shù)就是素?cái)?shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止:例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。請(qǐng)改正程序中的錯(cuò)誤,使它能輸出正確的結(jié)果。注意:不要改動(dòng)smain函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)while(fabs(t)>=num)(2)t=s/n;知識(shí)點(diǎn)解析:本題中函數(shù)的功能是利用公式計(jì)算π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)。本題解題過程參照一般公式題型的求解過程。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位和個(gè)位數(shù)依次放在變量c的千位和十位上。例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=1425。注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件in.dat中的數(shù)據(jù)不得修改。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);知識(shí)點(diǎn)解析:該程序功能是將正整數(shù)a、b合并形成一個(gè)新整數(shù)。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。國(guó)家二級(jí)(C語言)機(jī)試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:找出N×N矩陣中每列元素中的最大值,并按順序依次存放于形參b所指的一維數(shù)組中。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN4voidfun(int(*a)[N],int*b){inti,j;for(i=0;i標(biāo)準(zhǔn)答案:(1)a[0][i](2)<(3)x,y知識(shí)點(diǎn)解析:第一空:第二個(gè)循環(huán)是尋找每列的最大值,方法是用最大值變量b[i]標(biāo)記第一個(gè)待找數(shù)據(jù),逐個(gè)把所有待找數(shù)據(jù)和b[i]進(jìn)行比較,并用b[i]標(biāo)記其當(dāng)前最大值,從而找出最大值。故第一空處為第一個(gè)待找數(shù)據(jù)“a[0][i]。第二空:由上述的分析可知,如果b[i]小于a[j][i],那么用b[i]標(biāo)記其當(dāng)前最大值,故第二空處為“<"。第三空:fun函數(shù)的聲明為:voidfun(int(*a)[N],int*b),函數(shù)的兩個(gè)參數(shù)均是指針。故在主函數(shù)內(nèi)fun函數(shù)的調(diào)用形式為“fun(x,y)",x是二維數(shù)組首地址,y是一維數(shù)組首地址。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODIl.C中函數(shù)fun的功能是:從低位開始取出長(zhǎng)整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:642。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/***********found**********/voidfun(10ngs,longt){longsl=10;s/=10;*t=s%10;/*********found*********/while(s<0){s=s/100;*t=s%10*s1+*t;s1=s1*10;}}main(){longs,t;printf("\nPleaseenLers:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}標(biāo)準(zhǔn)答案:(1)voidfun(longs,long*t)(2)while(s>0)知識(shí)點(diǎn)解析:(1)第一個(gè)標(biāo)識(shí)下的形參t被定義為一個(gè)long型變量,而對(duì)應(yīng)的主函數(shù)中的實(shí)參卻是一個(gè)地址值。因此,t在函數(shù)定義中應(yīng)該被定義為一個(gè)指針變量,即“voidfun(10ngs.longt)"改為“voidfun(longs,long*t)"。(2)第二個(gè)標(biāo)識(shí)下的while循環(huán)控制表達(dá)式“s<0"要求s小于0才進(jìn)入循環(huán)。而s的值總是大于0,因此將“whilet(s<0)"改為“while(s>0)"。三、程序設(shè)計(jì)題(本題共2題,每題1.0分,共2分。)3、學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,注意:分?jǐn)?shù)最高的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù)。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#defiheN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b){}main(){STRBCs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},"GA016",72}};STRECh[N];inti,n;FILE*out;n=fun(s,h);printf{"The%dhighestscore:\n",n);for(i=0;i標(biāo)準(zhǔn)答案:inti,max=a[0].s,n=0;for(i=1;i知識(shí)點(diǎn)解析:(1)要把最高分?jǐn)?shù)的學(xué)生數(shù)據(jù)放在數(shù)組中,首先求出最高分?jǐn)?shù),再使用一個(gè)for循環(huán)把所有的成績(jī)進(jìn)行比較,找出最高的分?jǐn)?shù)來。(2)找出所有與最高分?jǐn)?shù)相等的學(xué)生,并將最高分?jǐn)?shù)的人數(shù)累加。4、請(qǐng)編寫函數(shù)fun,它的功能是:計(jì)算并輸出13(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=0.583333。注意:要求n的值不大于100。部分源程序在文件PROGI.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#includedoublefun(intn){}NONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat","r"),wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\n",s);}fclose(rf);fclose(wf);}main(){intn;doubles;printf("\nInputn:"),scanf("%d",&n);s=fLln(n);printf("\n\ns=%f\n",s);NONO();}標(biāo)準(zhǔn)答案:int1;doublesum=0.0;for(i=1;i<=n;i++)if(i%5==0||i%9==0)/*被5或9整除*/sum+=1.0/i;returnsum;知識(shí)點(diǎn)解析:(1)首先,通過循環(huán),判斷小于等于n的每一個(gè)整數(shù)是否符合題干中的要求。其中的判斷條件能否被5或者被9整除為i%5==0||i%9==0。(2)然后求得符合(1)要求的數(shù)的倒數(shù)的累加和。國(guó)家二級(jí)(C語言)機(jī)試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計(jì)算出形參s所指字符串中包含的單詞個(gè)數(shù),作為函數(shù)值返回。為便于統(tǒng)計(jì),規(guī)定各單詞之間用空格隔開。例如,形參s所指的字符串為:ThisisaClanguageprogram.,函數(shù)的返回值為6。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)n++(2)0(3)s++知識(shí)點(diǎn)解析:本題中函數(shù)fun的功能是計(jì)算出形參s所指字符串中包含的單詞個(gè)數(shù),作為函數(shù)值返回。單詞之間是以空格隔開的,因此在字符串里面搜索空格,找到一個(gè)空格則單詞數(shù)量加1,如此搜索完整個(gè)字符串便可得到單詞數(shù)量。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:首先將大寫字母轉(zhuǎn)換為對(duì)應(yīng)小寫字母;若小寫字母為a~u,則將其轉(zhuǎn)換為其后的第5個(gè)字母;若小寫字母為v~z,使其值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f若形參是字母W,則轉(zhuǎn)換為小寫字母b。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)c=c+32;(2)c=c+5;知識(shí)點(diǎn)解析:本題中函數(shù)的功能是將某些大寫字母轉(zhuǎn)換為對(duì)應(yīng)小寫字母之后的第五個(gè)字母。對(duì)于將字母轉(zhuǎn)換的題型,首先是查找符合條件的字符,然后根據(jù)規(guī)則對(duì)字符進(jìn)行轉(zhuǎn)換。本題需要大家了解大小寫字母是怎樣通過ASCII碼相互轉(zhuǎn)換的。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=5241。注意:部分源程序存在文件.PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:知識(shí)點(diǎn)解析:該程序功能是將兩個(gè)正整數(shù)合并形成一個(gè)整數(shù)的題型。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。國(guó)家二級(jí)(C語言)機(jī)試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:找出形參s所指字符串中出現(xiàn)頻率最高的字母(不區(qū)分大小寫),并統(tǒng)計(jì)出其出現(xiàn)的次數(shù)。例如,形參s所指的字符串為:abcAbsmaxless,程序執(zhí)行后的輸出結(jié)果為:letter’a;:3timesletter’s’:3times請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#includevoidfun(char*s){intk[26]={0},n,i,max=0;charch;while(*s){if(isalpha(*s)){/**********found**********/ch=tolower(【1】);n=ch-’a’;/**********found**********/k[n]+=【2】;}s++;/**********found**********/if(max標(biāo)準(zhǔn)答案:*s1k[n]知識(shí)點(diǎn)解析:第一空:“ch=tolower(__1__);n=ch-’a’;”可知統(tǒng)一將字符*s轉(zhuǎn)化成小寫字母,然后和字母“’a’”比較,因此第一空處應(yīng)為“*s”。第二空:“k[n]+=__2__;”是統(tǒng)計(jì)字符“*s”出現(xiàn)的次數(shù),“ch-’a’”得到了應(yīng)存放的數(shù)組元素的下標(biāo)位置n,k[n]元素加1標(biāo)識(shí)該字符在上一次出現(xiàn)的基礎(chǔ)上又出現(xiàn)了一次,故第二空處應(yīng)為“1”。第三空:“if(max二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:從N個(gè)字符串中找出最長(zhǎng)的那個(gè)串,并將其地址作為函數(shù)值返回。各字符串在主函數(shù)中輸入,并放入一個(gè)字符串?dāng)?shù)組中。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#include#defineN5#defineM81/**********found**********/fun(char(*sq)[N]){inti;char*sp;sp=sq[0];for(i=0;i標(biāo)準(zhǔn)答案:char*fun(char(*sq)[M])returnsp;知識(shí)點(diǎn)解析:(1)第一個(gè)錯(cuò)誤標(biāo)識(shí)下fun函數(shù)的定義根據(jù)題目要求,返回最長(zhǎng)的字符串,原題的“fun(char(*sq)[N])”的定義沒有指定返回值,所以“fun(char(*sq)[N])”應(yīng)該改為“char*fun(char(*sq)[M])”,指定返回值為字符串。(2)fun函數(shù)中定義sp指針首先指向第一個(gè)串,用來存放最長(zhǎng)的那個(gè)串,然后在循環(huán)中sp指向的串與sq指向的其他串長(zhǎng)度進(jìn)行比較,如果sp指向的串長(zhǎng)度小于sq指向的串,則sq的值替換sp指向的串,這樣保證sp指向的還是最大的串,所以返回最長(zhǎng)的串應(yīng)將“returnsq;”改為“returnsp;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫一個(gè)函數(shù)fun(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)儲(chǔ)管理委托合同三篇
- 課程回顧與未來展望計(jì)劃
- 釀酒師勞動(dòng)合同三篇
- 新聞社團(tuán)的采訪與報(bào)道策劃計(jì)劃
- 營(yíng)造積極氛圍的年度工作計(jì)劃
- 金融行業(yè)成本控制手段培訓(xùn)
- 福建省泉州市(2024年-2025年小學(xué)五年級(jí)語文)統(tǒng)編版隨堂測(cè)試((上下)學(xué)期)試卷及答案
- 國(guó)際貿(mào)易合同范本英文
- 福建省廈門市(2024年-2025年小學(xué)五年級(jí)語文)統(tǒng)編版開學(xué)考試((上下)學(xué)期)試卷及答案
- 展廳設(shè)計(jì)合同范本
- 高壓交流電動(dòng)機(jī)試驗(yàn)報(bào)告
- 樓地面裂縫的原因及防治措施
- 阿爾卡特?cái)?shù)字程控交換機(jī)Omnipcx4400說明
- 10000中國(guó)普通人名大全
- 銑削深攪水泥土攪拌墻技術(shù)規(guī)程-中國(guó)土木工程學(xué)會(huì)
- 寧德時(shí)代股權(quán)激勵(lì)計(jì)劃
- 倉(cāng)庫(kù)租賃合同電子版
- 倪海廈人紀(jì)之針灸 全
- 《學(xué)前教育專業(yè)導(dǎo)論》課程教學(xué)大綱
- trizol法組織DNARNA及蛋白提取方法
- 小腿免荷支具矯形器制作流程【培訓(xùn)課件】
評(píng)論
0/150
提交評(píng)論