![國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷27(共27題)_第1頁(yè)](http://file4.renrendoc.com/view2/M02/23/0A/wKhkFma8AdKAc7-xAAK5ZGZajkc119.jpg)
![國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷27(共27題)_第2頁(yè)](http://file4.renrendoc.com/view2/M02/23/0A/wKhkFma8AdKAc7-xAAK5ZGZajkc1192.jpg)
![國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷27(共27題)_第3頁(yè)](http://file4.renrendoc.com/view2/M02/23/0A/wKhkFma8AdKAc7-xAAK5ZGZajkc1193.jpg)
![國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷27(共27題)_第4頁(yè)](http://file4.renrendoc.com/view2/M02/23/0A/wKhkFma8AdKAc7-xAAK5ZGZajkc1194.jpg)
![國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷27(共27題)_第5頁(yè)](http://file4.renrendoc.com/view2/M02/23/0A/wKhkFma8AdKAc7-xAAK5ZGZajkc1195.jpg)
版權(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ǔ)言機(jī)試(操作題)模擬試卷27(共9套)(共27題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:把形參s所指字符串中最右邊的n個(gè)字符復(fù)制到形參t所指字符數(shù)組中,形成一個(gè)新串。若s所指字符串的長(zhǎng)度小于n,則將整個(gè)字符串復(fù)制到形參t所指字符數(shù)組中。例如,形參s所指的字符串為:abcdefgh,n的值為5,程序執(zhí)行后t所指字符數(shù)組中的字符串應(yīng)為:defgh。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h)#defineN80voidfun(char*s,intn,char*t){intlen,i,j=0;len=strlen(s);/*********found*********/if(n>=len)strcpy(【1】);else{/*********found*********/for(i=len﹣n;i<=len﹣1;i++)t[j++]=【2】;/*********found*********/t[j]=【3】;}}main(){chars[N],t[N];intn;printf("Enterastring:");gets(s);printf("Entern");scanf("%d",&n);fun(s,n,t);printf("Thestringt:");puts(t);}標(biāo)準(zhǔn)答案:(1)t,s(2)s[i](3)0或’\0’知識(shí)點(diǎn)解析:填空1:當(dāng)給定的長(zhǎng)度n大于該字符串s的長(zhǎng)度,那么把該字符串直接拷貝到t就可以了,所以應(yīng)填t,s。填空2:使用for循環(huán)語(yǔ)句,把最右邊n個(gè)字符依次添加到t中,所以應(yīng)填s[i]。填空3:字符串操作結(jié)束,需要給t加一個(gè)字符串結(jié)束符,所以應(yīng)填0或’\0’。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:找出一個(gè)大于給定整數(shù)m且緊隨m的素?cái)?shù),并作為函數(shù)值返回。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#inelude<stdio.h>intfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k<i;k++)/*********found*********/if(i%k!=0)break;/*********found*********/if(k<i)reLurn(i);}}voidmain(){intn;system("CLS");printf("\nPleaseentern:");scanf("%d",&n);printff("%d\n",fun(n));}標(biāo)準(zhǔn)答案:(1)if(i%k==0)(2)if(k==i)知識(shí)點(diǎn)解析:(1)判斷當(dāng)前數(shù)是否為素?cái)?shù),若存在一個(gè)數(shù)(除1和其自身)能整除當(dāng)前數(shù),則跳出本次循環(huán),所以if條件應(yīng)為i%k==0。(2)如果i是素?cái)?shù),則循環(huán)結(jié)束時(shí)k==i,將該值返回。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過(guò)形參12返回。例如,若x中的值為30,則有4個(gè)數(shù)符合要求,它們是1、3、5、15。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>voidfun(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<n;i++)printE("%d",aa[i]);printf("\n");/*********found*********/wf=fopen("out.dat","w");fun(30,aa,&n);for(i=0;i<n;i++)fprintf(wf,"%d",aa[i]);fclose(wf);/*********found*********/}標(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開(kāi)始且每次增2,所以i始終是奇數(shù)。整除的方法,已經(jīng)講過(guò)多次,這里就不再贅述了。對(duì)于本題目要求的不是偶數(shù)的判定方法,即該數(shù)對(duì)2求余不為0。除本題描述的方法外,還可以通過(guò)for循環(huán)語(yǔ)句直接把偶數(shù)篩出去,確保參與操作的數(shù)均為奇數(shù)。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是將不帶頭節(jié)點(diǎn)的單向鏈表逆置,即若原鏈表中從頭至尾節(jié)點(diǎn)數(shù)據(jù)域依次為2、4、6、8、10,逆置后,從頭至尾節(jié)點(diǎn)數(shù)據(jù)域依次為10、8、6、4、2。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN5typedefstructnode{intdata;structnode*next;}NODE;/*********found*********/【1】*fun(NODE*h){NODE*p,*q,*r,p=h;if(p==NULL)returnNULL;q=p一>next;p一>next=NULL,;while(q){/*********found*********/r=q一>【2】;q一>next=p;p=q;/*********found*********/q=【3】;}returnp,}NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h=NULL;for(i=0;i<N;i++){q=(NODE*)malloc(sizeof(NODE));q一>data=a[i];q一>next=NULL;if(h==NULL)h=p=q;else{p—>next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;p=h;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]={2,4,6,8,10};head=creatlist(a);printf{"\nTheoriginallist:\n");outlist(head);head=fun(head);printf("\nThelistafterinverting:\n");outlist;(head);}標(biāo)準(zhǔn)答案:(1)NODE(2)next(3)r知識(shí)點(diǎn)解析:填空1:本題考查了函數(shù)指針變量的函數(shù)返回值的類(lèi)型,*fun(NODE*h)的返回值為p,而p的數(shù)據(jù)類(lèi)型為NODE,因此本空應(yīng)該填寫(xiě)NODE。填空2:從此空的形式p一>可知本空應(yīng)該填寫(xiě)next。填空3:本題要求將不帶頭節(jié)點(diǎn)的單向鏈表逆置,為了使q的指針向后移,此空應(yīng)該填寫(xiě)r。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:將s所指字符串中位于奇數(shù)位置的字符或ASCII碼值為偶數(shù)的字符依次放入t所指數(shù)組中。例如,字符串中的數(shù)據(jù)為“AABBCCDDEEFF”,則輸出應(yīng)當(dāng)是“ABBCDDEFF”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<conio.h>#include<stdio.h>#include<string.h>#defineN80voidfun(char,*s,chart[]){inti,j=0;for(i=0;i<(int)strlen(s);i++)/*********found*********/if(i%2&&s[i]%2==0)t[j++]=s[i];/*********found*********/t[i]=’\0’;}main(){chars[N],t[N];printf("\nPleaseentherstrings:");gets(s);fun(s,t);printf("\nTheresultis:%s\n",t);}標(biāo)準(zhǔn)答案:(1)if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0)(2)t[j]=’\0’;或t[j]=0;知識(shí)點(diǎn)解析:(1)根據(jù)題意,將字符串s中位于奇數(shù)位置的字符或ASCII碼值為偶數(shù)的字符,依次放入字符串t中,所以if條件中要使用“或”運(yùn)算。(2)變量j控制字符串t的下標(biāo),所以是t[j]。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun,其功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次放到一維數(shù)組中。一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。例如,若二維數(shù)組中的數(shù)據(jù)為則一維數(shù)組中的內(nèi)容應(yīng)是:334455334455334455334455注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>voidfun(int(*s)[10],int*b,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;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<n;i++)printf("%3d",a[i]);}標(biāo)準(zhǔn)答案:voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*將二維數(shù)組中的數(shù)據(jù)按列的順序依次放入一維數(shù)組中*/for(i=0;i<mm;i++){b[*n]=*(*(s+i)+j);*n=*n+1;/*通過(guò)指針?lè)祷卦貍€(gè)數(shù)*/}}知識(shí)點(diǎn)解析:題目要求實(shí)現(xiàn)將二維數(shù)組元素存入一維數(shù)組,需使用for循環(huán)語(yǔ)句來(lái)控制二維數(shù)組元素的下標(biāo),同時(shí)使用指針變量配合操作??梢杂脙蓚€(gè)循環(huán)來(lái)處理問(wèn)題,由于是按列的順序取出,所以第1個(gè)循環(huán)用于控制列下標(biāo),第2個(gè)循環(huán)用于控制行下標(biāo)。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將不帶頭結(jié)點(diǎn)的單向鏈表逆置。即若原鏈表中從頭至尾結(jié)點(diǎn)數(shù)據(jù)域依次為:2、4、6、8、10,逆置后,從頭至尾結(jié)點(diǎn)數(shù)據(jù)域依次為:10、8、6、4、2。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<stdlib.h>#defineN5typectefstructnode{intdata;Structriode*next;}NODE;/**********found**********/___1___fun(NODE*h){NODE*p,*q,*r;p=h;if(p==NULL)returnNULL;q=p->next;p->next=NULL;while(q){/**********found**********/r=q->___2___;q->next=p;p=q;/**********found**********/q=___3___;}returnp;}NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h=NULL;for(i=0;i<N;i++){q=(NODE*)malloc(sizeof(NODE));q->data=a[i];q->next=NULL;if(h==NULL)h=p=q,else{p->next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;p=h;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]={2,4,6,8,10};head=creatlist(a);printf("\nfheoriginallist:\n");outlist(head);head=fun(head);printf("\nThelistafterinverting:\n");outlist(head);}標(biāo)準(zhǔn)答案:(1)NODE*(2)next(3)r知識(shí)點(diǎn)解析:函數(shù)fun的功能是將不帶頭結(jié)點(diǎn)的單向鏈表逆置,鏈表的逆置從第二個(gè)結(jié)點(diǎn)開(kāi)始,分別將結(jié)點(diǎn)的指針指向前一個(gè)結(jié)點(diǎn)便可完成單項(xiàng)鏈表的逆置。第一空:主函數(shù)內(nèi)fun函數(shù)調(diào)用形式是“head=fun(laead);”,變量head是NODE指針,故fun函數(shù)的返回值是NODE指針,即第一空處應(yīng)為“NODE*”。第二空:while循環(huán)完成鏈表的倒置,在循環(huán)體內(nèi),p、q和r指針?lè)謩e指向三個(gè)連續(xù)的結(jié)點(diǎn),p指針在最前,然后是q指針,r指針在最后。將q指針指向p結(jié)點(diǎn),p和q兩個(gè)結(jié)點(diǎn)倒置,然后p、q和r再往后移動(dòng)一個(gè)結(jié)點(diǎn),繼續(xù)對(duì)其他結(jié)點(diǎn)逆置。因此,第二空處r是q的后面一個(gè)結(jié)點(diǎn),故第二空處為“next”。第三空:由第二空的分析可知,第三空處是將q結(jié)點(diǎn)往后移動(dòng)一個(gè)結(jié)點(diǎn)位置,故第三空處為“r”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將s所指字符串中位于奇數(shù)位置的字符或ASCH碼為偶數(shù)的字符放入t所指數(shù)組中(規(guī)定第一個(gè)字符放在第0位中)。例如,字符串中的數(shù)據(jù)為:AABBCCDDEEFF,則輸出應(yīng)當(dāng)是:ABBCDDEFF。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<string.h>#defineN80voidfun(char*s,chart[]){inti,j=0;for(i=0;i<(int)strlen(s);i++)/**********found**********/if(i%2&&S(i]%2==0)t[j++]=s[i];/**********found**********/t[i]=’\0’;}main(){chars[N],t[N];printf("\nPleaseenterstrings:");gets(S);fun(s,t);printf("\nTheresultis:%s\n",t);}標(biāo)準(zhǔn)答案:(1)if(i%2‖s[i]%2==0)或if[i%2!=0‖s[i]%2==0)(2)t[j]=’\0’;或t[j]=0;知識(shí)點(diǎn)解析:本題中函數(shù)的功能是將字符串中位于奇數(shù)位置的字符或ASCII碼為偶數(shù)的字符依次放入新字符串中。解題思路基本上分為判定字符是否為奇數(shù)位置或者ASCII碼是否為偶數(shù),然后根據(jù)判定結(jié)果對(duì)其進(jìn)行操作。(1)第一個(gè)錯(cuò)誤標(biāo)識(shí)下的if條件應(yīng)該是判定字符是奇數(shù)位置或者ASCII碼是偶數(shù),原題中給出的是字符是奇數(shù)位置并且ASCII碼為偶數(shù),邏輯關(guān)系表達(dá)式不對(duì),應(yīng)該是或的關(guān)系,所以“if(i%2&&s[i]%2==0)”改為“if(i%2‖s[i]%2==0)”或“if(i%2!=0‖s[i]%2==0)”。(2)第二個(gè)標(biāo)識(shí)符下應(yīng)該是新生成的串尾加尾符標(biāo)志,新串的位置標(biāo)志變量是j,原題給出的i是原串的位置標(biāo)志變量,所以“t[i]=’\0’;”改為“t[j]=’\0’;”或“t[j]=0;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次放到一維數(shù)組中。例如,二維數(shù)組中的數(shù)據(jù)為:333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)是:334455334455334455334455。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#inolude<stdio.h>voidfun(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<n;i++)printf("%3d",a[i]);printf("\n\n’);NONO();}VOidNONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FTLE*rf,*wf;inti,j,k;intw[10][10],a[100],n:0,mm,nn;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(k=0;k<5;k++){fscanf(rf,"%d%d",&mm,&nn);for(i=0;i<mm;i++)for(j=0;j<nn;j++)fscanf(rf,"%d",&w[i][j]);fun(w,a,&n,mm,nn);for(2=0;i<n;i++)fprintf(wf,"%3d",a[i]);fprintf(wf,"\n");}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,j;for(j=0;j<nn;j++)for(i=0;i<mm;i++){b[*n]=*(*(s+i)+j);*n=*n+1;}知識(shí)點(diǎn)解析:該程序功能是將M行、N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次放到一維數(shù)組中。本題中首先要清楚數(shù)組元素在通常情況下是按行存放的,而如果要實(shí)現(xiàn)按列存放,其對(duì)應(yīng)關(guān)系應(yīng)為:s[0][0],s[1][0],s[2][0],…,s[M-1][0],s[0][1],s[1][1],…,s[M-1][N-1]。(1)利用兩重循環(huán),依次取矩陣中的元素。(2)注意指針數(shù)組與數(shù)組指針的區(qū)別,其中,數(shù)組指針s,它指向包含4個(gè)元素的一。維數(shù)組。其數(shù)據(jù)元素的表示方式為:“*(*(s+i)+j)”。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blankl.c。在此程序中,函數(shù)fun的功能是:將a所指4×3矩陣中第k行的元素與第0行元素交換。例如,有下列矩陣:若k為2,程序執(zhí)行結(jié)果為:請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN3#defineM4/*********found*********/voidfun(int(*a)[N],int【1】){inti,temp;/*********found*********/for(i=0;i<【2】;i++){temp=a[0][i];/*********found*********/a[0][i]=【3】;a[k][i]=temp;}}main(){intx[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}},i,j;printf("Thearraybeforemoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n、n");}fun(x,2);printf("Thearrayaftermoving:n\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n\n");}}標(biāo)準(zhǔn)答案:(1)k(2)N(3)a[k][i]知識(shí)點(diǎn)解析:填空1:變量k在函數(shù)體fun中已經(jīng)使用,但在函數(shù)體中沒(méi)有定義,肯定是在函數(shù)的形參中定義的,所以應(yīng)填k。填空2:數(shù)組共N列,所以應(yīng)填N。填空3:這部分語(yǔ)句實(shí)現(xiàn)的功能是變量值的交換,所以應(yīng)填a[k][i]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:讀入一個(gè)字符串(長(zhǎng)度<20),將該字符串中的所有字符按ASCII碼值升序排序后輸出。例如,若輸入“edcba”,則應(yīng)輸出“abcde”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<string.h>#include<stdio.h>voidfun(chart[]){charc;inti,j;/*********found*********/for(i=strlen(t);i;i--)for(j=0;j<i;j++)/*********found*********/if(t[j]<t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}main(){chars[81];printf("\nPleaseenteracharacterstring:");gets(s);printf("\n\nBeforesorting:\n%s",s);fun(s);printf("\nAftersortingdecendingly:\n%s",s);}標(biāo)準(zhǔn)答案:(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])知識(shí)點(diǎn)解析:(1)本題是利用選擇法對(duì)數(shù)組元素進(jìn)行比較排序。所謂選擇法,是依次用當(dāng)前取得的元素和其后面的元素進(jìn)行比較,在第一個(gè)元素和其后面的元素順次比較時(shí),可以借助中間變量來(lái)對(duì)兩個(gè)數(shù)進(jìn)行交換,要保證第一個(gè)元素始終存放數(shù)組中的最大數(shù),以后依次挑選出次大數(shù),這樣最終的數(shù)組就是有序的。strlen函數(shù)所求得的字符串長(zhǎng)度,數(shù)組最大下標(biāo)表示為字符串長(zhǎng)度減1,所以要減1。(2)這里是一個(gè)分析邏輯錯(cuò)誤,題中要求按升序排序,所以應(yīng)改為if(t[j]>t[j+1])。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.C。在此程序中,請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將SS所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(xiě)(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入“abc4Efg”,則應(yīng)輸出“aBc4EFg”。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>voidfun(char*ss){}voidmain(){FILE*wf;chartt[81],s[81]="abc4Efg";system("CLS");printf("\nPleaseenteranstringwithin80characters:\n");gets(tt);printf("\n\nAfterchanging,thestring\n%s",tt);fun(tt);printf("\nbecomes\n%s\n",tt);/*****************/wf=fopen("out.dat","W");fun(s);fprintf(wf,"%s",s);fclose(wf);/*****************/}標(biāo)準(zhǔn)答案:voidfun(char*ss){inti;for(i=0;ss[i]!=’\0’;i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(xiě)*/if(i%2==1&&ss[i]>=’a’&&ss[i]<=’z’)ss[i]=ss[i]-32;}知識(shí)點(diǎn)解析:該題要求將給定字符串中奇數(shù)位置的字母轉(zhuǎn)換為大寫(xiě),需要先判斷奇數(shù)位置以及是否是小寫(xiě)字母,如果是再通過(guò)其轉(zhuǎn)換方法進(jìn)行轉(zhuǎn)換。從C語(yǔ)言的學(xué)習(xí)中知道,只要將小寫(xiě)字母減去32即轉(zhuǎn)成大寫(xiě)字母,將大寫(xiě)字母加上32即轉(zhuǎn)成小寫(xiě)字母。本程序用if語(yǔ)句實(shí)現(xiàn)轉(zhuǎn)換功能。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是用函數(shù)指針指向要調(diào)用的函數(shù),并進(jìn)行調(diào)用。規(guī)定在___2___處使fa指向函數(shù)f1,在___3___處使fb指向函數(shù)f2。當(dāng)調(diào)用正確時(shí),程序輸出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>doublef1(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}doublefun(doublea,doubleb){/**********found**********/___1___(*f)();doubler1,r2;/**********found**********/f=___2___;/*pointfountionf1*/r1=f(a);/**********found**********/f=___3___;/*pointfountionf2*/r2=(*f)(a,b);returnr1+r2;}main(){doublex1=5,x2=3,r,r=fun(x1,x2);printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n",x1,x2,r);}標(biāo)準(zhǔn)答案:(1)double(2)f1(3)f2知識(shí)點(diǎn)解析:本題中函數(shù)fun的功能是用函數(shù)指針指向要調(diào)用的函數(shù),并進(jìn)行調(diào)用,主要考察函數(shù)的指針的使用。存放函數(shù)的入口地址的指針是指向函數(shù)的指針,簡(jiǎn)稱函數(shù)的指針。第一空:由“f=___2___;/*pointfountionf1*/”和“r1=f(a);”可知f是一個(gè)函數(shù)的指針,且f指向的函數(shù)的返回值為double型,函數(shù)的指針的定義方式是:類(lèi)型標(biāo)識(shí)符(*指針變量名)(),故第一空處的函數(shù)的指針的定義為“double”。第二空:“f=___2___;/*pointfountionf1*/”和“r1=f(a);”可知f指向的函數(shù)只有一個(gè)參數(shù)a,因此,f指向f1函數(shù),即第二空處為“f1”。第三空:“f=___3___;/*pointfountionf2*/”和“r2=(*f)(a,b);”,f指向的函數(shù)有兩個(gè)參數(shù),因此,f是指向f2函數(shù),故第三空處應(yīng)為“f=2”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)賦值。函數(shù)fun的功能是將單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域?yàn)榕紨?shù)的值累加起來(lái),并且作為函數(shù)值返回。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<stallib.h>typedefstructaa{intdata;strueraa*next;}NODE;intfun(NODE*h){intsum=0;NODE*p;/**********found**********/p=h;while(p){if(p->data%2==0)sum+=p->data;/**********found**********/p=h->next;}returnsum;}NODE*creatlink(intn){NODE*hr*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));for(i=1;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%16;s->next=p->next;p->next=s;p=p->next;}p->next=NULL;returnh;}outlink(NODE*h,F(xiàn)ILE*pf)fNODE*p;p=h->next;fprintf(pf,"\n\nTttELIST:\n\nHEAD");while(p){fprintf(pf,"->%d",p->data);p=p->next;}fprintf(pf,"\n");}outresult(ints,F(xiàn)ILE*pf){fprintf(pf,"\nThesumofevennumbers:%d\n",s);}itlain(){NODE*head;inteven;head=creatlink(12);head->data=9000;outlink(head,stclout);even=fun(head);printf("\nTheresult:\n");outEesult(even,stdout);}標(biāo)準(zhǔn)答案:(1)p=h->next;(2)p=p->next;知識(shí)點(diǎn)解析:(1)該題中函數(shù)功能是單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域?yàn)榕紨?shù)的值累加起來(lái),并且作為函數(shù)值返回。對(duì)單向鏈表進(jìn)行遍歷,并在遍歷過(guò)程查找數(shù)據(jù)域?yàn)榕紨?shù)的結(jié)點(diǎn),并將數(shù)據(jù)域?yàn)榕紨?shù)的元素累加起來(lái)。(2)從已給定源程序的main主函數(shù)開(kāi)始入手,“head=creatlink(12);”語(yǔ)句生成隨機(jī)數(shù)的鏈表,“outlink(head,stdout);”輸出該鏈表,“even=fun(head);”語(yǔ)句調(diào)用函數(shù)fun求得鏈表中的數(shù)據(jù)域?yàn)榕紨?shù)的值的累加和。(1)根據(jù)題干中求得除了頭結(jié)點(diǎn)之外的結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)值,頭指針h,工作指針p指向頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),所以第一個(gè)標(biāo)識(shí)下的“p=h;”指向頭結(jié)點(diǎn)應(yīng)該改為指向下一個(gè)結(jié)點(diǎn)“p=h->next;”。(2)工作指針p,利用p實(shí)現(xiàn)對(duì)鏈表的遍歷,p表示指向鏈表的當(dāng)前結(jié)點(diǎn),所以指向下一個(gè)結(jié)點(diǎn)應(yīng)該是“p=p->next;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:判斷字符串是否為回文?若是,函數(shù)返回1,主函數(shù)中輸出:YES否則返回0,主函數(shù)中輸出NO?;匚氖侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#include<stdio.h>#include<string.h>#defineN80intfun(char*str){}main(){chars[N];voidNONO();printf("EnterastrLng:");gets(s);printf("\n\n");puts(s);if(fun(s))printf("YES\n");elseprintf("No\n");NONO();}VOidNONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;inti;chars[N];rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);if(fun(s))fprintf(wf,"%sYES\n",s);elsefprintf(wf,"%sNO\n",s);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,n=0,flag=1;//初始設(shè)置標(biāo)識(shí)位char*p=str;//設(shè)置工作指針while(*p)//取字符串大小{n++;p++;}for(i=0;i<n/2;i++)//循環(huán)判斷字符串s是否為回文if(str[i]==str[n-1-i]);//設(shè)置比較位j為n-1-ielse//若不符合條件,標(biāo)識(shí)位設(shè)為0,跳出循環(huán){flag=0;break;}returnflag;知識(shí)點(diǎn)解析:該程序功能是判斷字符串是否為回文。其中,回文是指順讀和倒讀都一樣的字符串。解題過(guò)程:首先利用while循環(huán)取得字符串的長(zhǎng)度n,然后循環(huán)判斷正序第i個(gè)字符和其對(duì)應(yīng)的逆序字符n-1-i個(gè)是否相等,也就是判斷是否是回文。進(jìn)入fun函數(shù),根據(jù)前面的分析主要思路是:(1)首先用整型變量i表示所判斷的字符串中前面對(duì)應(yīng)元素的下標(biāo)。i初值為0,n是字符串的長(zhǎng)度,通過(guò)循環(huán)來(lái)求得n。(2)然后,把下標(biāo)為i的字符與下標(biāo)為“n-1-i”的字符比較,如果相同,i加1,繼續(xù)進(jìn)行一對(duì)一的字符比較。不斷重復(fù)此過(guò)程,直到i≥n/2為止。在此過(guò)程中,如果下標(biāo)為i的字符與下標(biāo)為“n-1-i”的字符不相同,則可以斷定字符串不是回文,立即退出函數(shù)。(3)如果正常結(jié)束循環(huán),就說(shuō)明字符串符合回文條件。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:判定形參a所指的N×N(規(guī)定N為奇數(shù))的矩陣是否是“幻方”,若是,函數(shù)返回值為1;不是,函數(shù)返回值為0?!盎梅健钡呐卸l件是:矩陣每行、每列、主對(duì)角線及反對(duì)角線上元素之和都相等。例如,以下3×3的矩陣就是一個(gè)“幻方”:492357816請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#defineN3intfun(int(*a)[N]){inti,j,m1,m2,row,colum;m1=m2=0;for(i=0;i<N;i++){j=N-i-1;m1+=a[i][i];m2+=a[i][j];}if(m1!=m2)return0;for(i=0;i<N;i++){/**********found**********/row=colum=___1___;for(j=0;j<N;j++){row+=a[i][j];colum+=a[j][i];}/**********found**********/if((row!=colum)___2___(row!=m1))return0;}/**********found**********/return___3___;}main(){intx[N][N],i,j;printf("Enternumberforarray:\n”);for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&x[i][j]);printf("Array:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n");}if(fun(x))printf("TheArrayisamagicsquare.\n");elseprint=f("TheArrayisn’tamagicsquare.\n");}標(biāo)準(zhǔn)答案:(1)0(2)||(3)1知識(shí)點(diǎn)解析:函數(shù)fun的功能是判定形參a所指的N×N的矩陣是否是”幻方”。第一空:由“row+=a[i][j];colum+=a[j][i];”可知row是計(jì)算行和,colum是計(jì)算列和,故第一空處的初始化應(yīng)將行和與列和初始化為0,即第一空處應(yīng)為“0”。第二空:“if((row!=colum)___2___(row!=m1))return0;”如果行和不等于列和,那么矩陣不是幻方,如果行和不等對(duì)角線和,那么矩陣也不是幻方,即兩者是或的關(guān)系,故第二空處應(yīng)為“‖”第三空:不是幻方的情況在前面都會(huì)返回0,所有不是幻方的情況都已經(jīng)考慮到了,剩下的就是幻方,故第三空處為“1”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中fun函數(shù)的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。例如,若主函數(shù)中輸入5,則應(yīng)輸出-0.283333。請(qǐng)改正函數(shù)fun中的錯(cuò)誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能計(jì)算出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>doublefun(intm){cloublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/t=1.0-1/i;/**********found**********/_______;}main(){intm;printf("\nPleaseenter1integernumbers:\n");scanf("%d",&m);printf("\n\nTheresultis%lf\n",fun(m));}標(biāo)準(zhǔn)答案:(1)t=t-1.0/i;或t-=1.0/i;或t-=(double)1/i;(2)returnt;知識(shí)點(diǎn)解析:函數(shù)的功能是計(jì)算公式的值。(1)第一個(gè)標(biāo)識(shí)下的“t=1.0-1/i:”語(yǔ)句對(duì)題干中給出的多項(xiàng)式的求值,而根據(jù)題干中多項(xiàng)式的特點(diǎn),多項(xiàng)式應(yīng)該是“t=t-1.0/i;”。(2)根據(jù)函數(shù)定義,fun函數(shù)應(yīng)該具有返回值,第二個(gè)標(biāo)識(shí)下的填空應(yīng)該是“returnt;”返回多項(xiàng)式的值。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)一個(gè)函數(shù),函數(shù)的功能是刪除字符串中的所有空格。例如,主函數(shù)中輸入"asdafaaz67",則輸出為"asdafaaz67"。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#include<stdio.h>#include<ctype.h>voidfun(char*str){}main(){charstr[81];voidNONO();printf("Inputastring:");gets(str);puts(str);fun(str);printf("***str:%s\n",str);NONO();}voidNONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開(kāi)文件,輸入調(diào)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/charstr[81];intn=0;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");while(n<10){fgets(str,80,rf);fun(str);fprintf(wf,"%s",str);n++:}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:char*p=str;inti=0;while(*p){if(*p!=’’)str[i++]=*p;p++;}str[i]=0;知識(shí)點(diǎn)解析:該程序功能是刪除字符串中的所有空格。本題的解題思路是首先利用一個(gè)指向字符串的指針,查找不是空格的字符,然后將不是空格的字符賦值到字符串,如果是空格,則跳過(guò)該字符,這樣就實(shí)現(xiàn)了空格字符的刪除。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:計(jì)算下式前n項(xiàng)的和,并作為函數(shù)值返回。例如,當(dāng)形參n的值為10時(shí),函數(shù)返回-0.204491。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublefun(intn){inti,k;doubles,t;s=0;/*********found*********/k=【1】;for(i=1;i<=n;i++){/*********found*********/t=【2】;s=s+k*(2*i-1)*(2*i+1)/(t*t);/*********found*********/k=k*【3】;}returns;}main(){intn=-1;whhle(n<0){printf("Pleaseinput(n>0):");scarlf("%d",&n);}printf("\nTheresultis:%f\n",fun(n));}標(biāo)準(zhǔn)答案:(1)1(2)2*i(3)(-1)知識(shí)點(diǎn)解析:填空1:由fun函數(shù)整體結(jié)構(gòu)可以看出k的作用是賦值,并累加各項(xiàng)前邊的正負(fù)號(hào),由于第一項(xiàng)是正的,因此賦給k的值為1。填空2:此空下一行的表達(dá)式k*(2*i-1)*(2*i+1)/(t*t)累加的通項(xiàng),k為正負(fù)號(hào),由題目中的公式可知t=2*i。填空3:由于通項(xiàng)前邊的正負(fù)號(hào)每次都要發(fā)生變化,因此k=k*(-1)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:判斷一個(gè)整數(shù)是否為素?cái)?shù),若是素?cái)?shù)返回1,否則返回0。在main函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)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í)點(diǎn)解析:函數(shù)fun的功能是判斷m是否為素?cái)?shù):m從2開(kāi)始作為除數(shù),并對(duì)m取余,若不存在一個(gè)數(shù)使得余數(shù)為0,則m為素?cái)?shù),程序的錯(cuò)誤在于if(m=k)語(yǔ)句中的邏輯表達(dá)式寫(xiě)成了賦值語(yǔ)句。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值及其所在的下標(biāo),并通過(guò)形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<time.h>#include<stdlib.h>#include<stdio.h>voidfun(inta[],intn,int*max,int*d){}voidmain(){inti,x[20],max,index,n=10;srand((unsigned)time(NULL));for(i=0;i<=n;i++){x[i]=rand()%50;print;f("%4d”,x[i]);/*輸出一個(gè)隨機(jī)數(shù)組*/}printf("\n");fun(x,n,&max,&index);printf("Max=%5d,Index20=%4d\n",max,index);}標(biāo)準(zhǔn)答案:voidfun(inta[],intn,int*max,int*d){inti;*max=a[0];*d=0;for(i=1;i<n;i++)/*將最大的元素放入指針max所指的單元,最大元素的下標(biāo)放入指針d所指的單元*/if(木max<a[i]){*max=a[i];*d=i;}}知識(shí)點(diǎn)解析:查找最大值及其下標(biāo)需要定義兩個(gè)變量,該程序直接使用形參max和d,由于它們都是指針變量,所以在引用它所指向的變量時(shí)要對(duì)它進(jìn)行指針運(yùn)算。循環(huán)語(yǔ)句用來(lái)遍歷數(shù)組元素,條件語(yǔ)句用來(lái)判斷該數(shù)組元素是否最大。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:在帶頭結(jié)點(diǎn)的單向鏈表中,查找數(shù)據(jù)域中值為ch的結(jié)點(diǎn)。找到后通過(guò)函數(shù)值返回該結(jié)點(diǎn)在鏈表中所處的順序號(hào);若不存在值為ch的結(jié)點(diǎn),函數(shù)返回0值。請(qǐng)?jiān)谙庐?huà)線處填入正確的內(nèi)容并將下畫(huà)線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(char*);voidoutlist(SLIST*);intfun(SLIST*h,charch){SLIST*p;intn=0:p=h—>next:/******found******/while(p!=___1___){n++;if(p—>data==ch)/******found******/return___2___;elsep=p—>next;}return0;}main(){SLIST*head;intk;charch;chara[N]={′m′,′p′,′g′,′a′,′w′,′x′,′r′,′d′};head=creatlist(a);outlist(head);printf(″Enteraletter:″);scanf(″%c″,&ch);k=fun(___3___);if(k==0)printf(″\nNotfound!\n″);elseprintf(″Thesequencenumberis:%d\n″,k);}SLIST*creatlist(char*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;i<N;i++){q=(SLIST*)malloc(sizeof(SLIST));q—>data=a[i];p—>next=q;p=q;}p—>next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h—>next;if(P==NULL)printf(″\nThelistisNULL!\n″);else{printf(″\nHead″);do{printf(″—>%c″,p—>data);p=p—>next:}while(p!=NULL);printf(″—>End\n″);}標(biāo)準(zhǔn)答案:(1)NULL(2)n(3)head,ch知識(shí)點(diǎn)解析:本題考查:鏈表相關(guān)知識(shí);while循環(huán)語(yǔ)句;函數(shù)返回值。填空1:while循環(huán)語(yǔ)句判斷是否到達(dá)鏈表結(jié)尾,鏈表結(jié)尾結(jié)點(diǎn)指針域是NuLL。填空2:若找到指定字符,則通過(guò)return語(yǔ)句將該結(jié)點(diǎn)在鏈表的順序號(hào)返回給main函數(shù)。填空3:函數(shù)調(diào)用語(yǔ)句,其形式是:函數(shù)名(實(shí)際參數(shù)表),因此根據(jù)函數(shù)定義語(yǔ)句,填入:head,ch。二、程序修改題(本題共1題,每題1.0分,共1分。)2、由N個(gè)有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序中函數(shù)fun的功能是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;否則,返回—1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍low和high(low<high),然后用m與中間位置(mid)上元素的值進(jìn)行比較。如果m的值大于中間位置元素的值,則下一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找范圍落在中間位置之前的元素中。直到low>high,查找結(jié)束。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN10/******found******/voidfun(inta[],intm){intlow=0,high=N—1,mid;while(low<=high){mid=(low+high)/2;if(m<a[mid])high=mid—1;/******found******/elseIf(m>a[mid])low=mid+1;elsereturn(mid);}return(—1);}main(){inti,a[N]={—3,4,7,9,13,45,67,89,100,180},k,m;printf(″a數(shù)組中的數(shù)據(jù)如下:″);for(i=0;i<N;i++)printf(″%d″,a[i]);printf(″Enterm:″);scanf(″%d″,&m);k=fun(a,m);if(k>=0)printf(″m=%d,index=%d\n″,m,k);elseprinff(″Notbefound!\n″);}標(biāo)準(zhǔn)答案:(1)intfun(inta[],intm)或fun(inta[],intm)(2)elseif(m>a[mid])知識(shí)點(diǎn)解析:本題考查:折半查找算法;函數(shù)定義;if…else語(yǔ)句。(1)fun(inta[],intm)函數(shù)的返回值為int類(lèi)型,所以定義函數(shù)時(shí),函數(shù)的返回類(lèi)型不能是void,而是int類(lèi)型。這里int可以省略,若省略函數(shù)類(lèi)型標(biāo)識(shí)符,系統(tǒng)將默認(rèn)為int型。(2)elseIf(m>a[mid])中,關(guān)鍵字if需要區(qū)別大小寫(xiě),大寫(xiě)是錯(cuò)誤的。說(shuō)明:折半查找算法,將數(shù)列按有序化(遞增或遞減)排列,查找過(guò)程中采用跳躍式方式查找,即先以有序數(shù)列的中點(diǎn)位置為比較對(duì)象,如果要找的元素值小于該中點(diǎn)元素,則將待查序列縮小為左半部分,否則為右半部分。通過(guò)一次比較,將查找區(qū)間縮小一半。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,該函數(shù)的功能是:將M行N列的二維數(shù)組中的字符數(shù)據(jù),按列的順序依次放到一個(gè)字符串中。例如,若二維數(shù)組中的數(shù)據(jù)為WWWWSSSSHHHH則字符串中的內(nèi)容應(yīng)是:WSHWSHWSHWSH。注意:請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#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;printf(″Thematrix:\n″);for(i=0;i<M;i++){for(j=0;j<N;j++)printf(″%3c″,w[i][j]);printf(″\n″);}fun(w,a);printt(″TheAstring:\n″);puts(a);printf(″\n″);/****************/wf=fopen(″out.dat″,″w″);fprintf(wf,″%s″,a);fclose(wf);/****************/}標(biāo)準(zhǔn)答案:voidfun(char(*s)[N],char*b){inti,j,k=0;for(i=0;i<N;i++)/*按列的順序依次放到一個(gè)字符串中*/for(j=0;j<M;j++)b[k++]=s[j][
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高鐵建設(shè)項(xiàng)目合作開(kāi)發(fā)協(xié)議
- 農(nóng)業(yè)資源管理實(shí)務(wù)手冊(cè)
- 放射科醫(yī)生雇傭合同
- 養(yǎng)殖場(chǎng)轉(zhuǎn)讓協(xié)議合同
- 汽車(chē)融資租賃合同
- 2025年克孜勒蘇州道路客貨運(yùn)輸從業(yè)資格證b2考試題庫(kù)
- 小學(xué)二年級(jí)下冊(cè)數(shù)學(xué)除法口算題專項(xiàng)訓(xùn)練
- 2025年吉林貨運(yùn)從業(yè)資格證考試題技巧及答案
- 2025年毫州貨運(yùn)上崗證考試考哪些科目
- 電力系統(tǒng)集成合同(2篇)
- API-650-1鋼制焊接石油儲(chǔ)罐
- 職業(yè)危害告知書(shū)(最新版)
- 金融科技課件(完整版)
- 醫(yī)院壓力性損傷患者質(zhì)控標(biāo)準(zhǔn)
- 醫(yī)療機(jī)構(gòu)規(guī)章制度診所診所規(guī)章制度
- 飲品店操作流程圖
- 風(fēng)居住的街道鋼琴二胡合奏譜
- PADS元件封裝制作規(guī)范要點(diǎn)
- 第一講數(shù)字合成技術(shù)概述
- 膠水行業(yè)中最常用的英文術(shù)語(yǔ)
- 《中小學(xué)班主任專業(yè)能力發(fā)展策略的研究》結(jié)題報(bào)告
評(píng)論
0/150
提交評(píng)論