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

下載本文檔

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

文檔簡介

國家二級C語言機(jī)試(操作題)模擬試卷43(共9套)(共27題)國家二級C語言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共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。請?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN5typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*P,*q,*r;/*********found*********/P=h->【1】;/*********found*********/if(p==【2】)return;q=P->next;P->next=NULL;while(q){r=q->next;q->next=p;/*********found*********/p=q;q=【3】;}h->next=P;}NODE*creatlist(inta[]){NODE*h,*P,*q;inti;h=(NODE*)malloc(sizeof(NODE));h->next=NULL;for(i=0;i<N;i++){q=(NODE*)malloc(sizeof(NODE));q->data=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("\nttead");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);fun(head);printf("\nThelistafterinverting:\n");outlist(head);}標(biāo)準(zhǔn)答案:(1)next(2)NULL(3)r知識點(diǎn)解析:填空1:本空考查了為p賦初值,根據(jù)題目的要求是將帶頭結(jié)點(diǎn)的單向鏈表逆置可知,p的初值應(yīng)該為h->next。填空2:if判斷語句表明當(dāng)p等于什么時(shí)就要返回,因此只能當(dāng)p等于NULL時(shí)返回,不用做后面的鏈表的逆置了。填空3:把q的指針向后移動(dòng),才能實(shí)現(xiàn)將帶頭結(jié)點(diǎn)的單向鏈表逆置。因此本空填寫r。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。A1=1,A2=,…,An=例如,若n=10,則應(yīng)輸出0.617977。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdlib.h>2#include<conio.h>3#include<stdio.h>4/*********found*********/5intfun(intn)6{floatA=1;inti;7/*********found*********/8for(i=2;i<n;i++)9A=1.0/(1+A);10returnA;11}12voidmain()13{intn;14system("CLS");15printf("\npleaseentern:");16scanf("%d",&n);17printf("A%d=%lf\n",n,fun(n));18}標(biāo)準(zhǔn)答案:(1)floatfun(intn)(2)for(i=2;i<=n;i++)知識點(diǎn)解析:(1)根據(jù)函數(shù)的返回值可知,函數(shù)應(yīng)定義為float型。(2)該題中函數(shù)fun的作用是計(jì)算數(shù)列前n項(xiàng)的和,而數(shù)列的組成方式是:第n項(xiàng)的分母是1加第n一1項(xiàng)的值,分子為1,如果循環(huán)累加按for(i=2;i<n;i++)執(zhí)行,當(dāng)輸入n=2時(shí)循環(huán)不會(huì)執(zhí)行,程序?qū)⒌貌坏较胍慕Y(jié)果,因此循環(huán)變量的取值范圍應(yīng)包括2,循環(huán)的條件為i<=n。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。試題程序:#include<stdio.h>#clefineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voidfun(STREC*a){}voidmain(){STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5);inti;fun(&s);printf("The%s’sstudentdata:\n",s.num);for(i=0;i<N;i++)printf("%4.1f\n",s.s[i]);printf("\nave=%7.3f\n",s.a(chǎn)ve);}標(biāo)準(zhǔn)答案:voidfun(STREC*a){inti;a->ave=0.0;for(i=0;i<N;i++)a->aVe=a->aVe+a->s[i];/*求各門課程成績的總和*/a->ave=a->ave/N;/*求平均分*/}知識點(diǎn)解析:本題考查自定義形參的相關(guān)知識點(diǎn),程序流程為:在fun函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC*a,此時(shí),引用成員的方式可以使用指向運(yùn)算符,即a->ave和a->s[i],也可用(*a).a(chǎn)ve和(*a).s[i]。國家二級C語言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共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é)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<stdlib.h>3#defineN84typedefstructlist5{intdata;6structlist*next;7}SLIST;8voidfun(SLIST*p)9{SLIST*t,*s;10t=p->next;s=p;11while(t->next!=NULL)12{s=t;13/**********found**********/14t=t->__1__;15}16/**********found**********/17printf(’’%d’’,__2___);18s->next=NULL;19/**********found**********/20free(__3__);21}22SLIST*creatlist(int*a)23{SLIST*h,*p,*q;inti;24h=p(SLIST*)malloc(sizeof(SLIST));25for(i=0;i<N;i++)26{q=(SLIST*)malloc(sizeof(SLIST));27q->data=a[i];p->next=q;p=q;28}29p->next=0;30returnh;31}32voidoutlist(SLIST*h)33{SLIST*p;34p=h->next;35if(p==NULL)printf(’’\nThelistisNULL!\n’’);36else37{printf(’’\nHead’’);38do{printf(’’->%d’’,p->data);p=p->next;}while(p!=NULL);39printf(’’->End\n’’);40}41}42main()43{SLIST*head;44inta[N]={11,12,15,18,19,22,25,29};45head=creatlist(a);46printf(’’\nOutputfromhead:\n’’);outlist(head);47printf(’’\nOutputfromtail:\n’’);48while(head->next!=NULL){49fun(head);50printf(’’\n\n’’);51printf(’’\nOutputfromheadagain:\n’’);outlist(head);52}53}標(biāo)準(zhǔn)答案:(1)next(2)t->data(3)t知識點(diǎn)解析:第一空:fun函數(shù)中的循環(huán)目的是找到尾結(jié)點(diǎn)“while(t->next!=NULL)”,利用結(jié)點(diǎn)變量s和t,s指向當(dāng)前節(jié)點(diǎn),t不斷指向下一個(gè)結(jié)點(diǎn),因此第一空處應(yīng)該是“t=t->next;”。第二空:這里是輸出尾結(jié)點(diǎn)中的數(shù)據(jù),已經(jīng)利用循環(huán)找到了尾結(jié)點(diǎn)t,t的數(shù)據(jù)是t->data,因此第二空處應(yīng)該為“printf(’’%d’’,t->data);”。第三空:輸出尾結(jié)點(diǎn)數(shù)據(jù)之后刪除尾結(jié)點(diǎn),使用free,又因?yàn)槲步Y(jié)點(diǎn)是t,因此第三空處應(yīng)該為“free(t);”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中fun函數(shù)的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。例如,若主函數(shù)中輸入5,則應(yīng)輸出-0.283333。請改正函數(shù)fun中的錯(cuò)誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能計(jì)算出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2doublefun(intm)3{4doublet=1.0;5inti;6for(i=2;i<=m;i++)7/**********found**********/8t=1.0-1/i;9/**********found**********/10_____;11}12main()13{14intm;15printf(’’\nPleaseenter1integernumbers:\n’’);16scanf(’’%d’’,&m);17printf(’’\n\nTheresultis%1f\n’’,fun(m));18}標(biāo)準(zhǔn)答案:(1)t=t-1.0/i;或t-=1.0/i;或t-=(double)1/i;(2)returnt;知識點(diǎn)解析:函數(shù)的功能是計(jì)算公式的值。(1)第一個(gè)標(biāo)識下的“t=1.0-1/i;”語句對題干中給出的多項(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)識下的填空應(yīng)該是“returnt;”返回多項(xiàng)式的值。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,注意:分?jǐn)?shù)最高的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù)。注意:部分源程序在文件PROG1.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2#defineN163typedefstruct4{charnum[10];5ints;6}STREC;7intfun(STREC*a,STREC*b)8{910}11main()12{STRECs[N]={{’’CA05’’,85},{’’GA03’’,76},{’’GA02’’,69},{’’GA04’’,85),{’’GA01’’,91},{’’GA07’’,72},{’’GA08’’,64},{’’GA06’’,87},{’’CA015’’,85},{’’CA013’’,91},{’’GA012’’,64},{’’GA014’’,91},{’’GA011’’,77},{’’GA017’’,64},{’’GA018’’,64},{’’GA016’’,72}};13STRECh[N];14inti,n;FILE*out;15n=fun(s,h);16printf(’’The%dhighestscore:\n’’,n);17for(2=0;i<n;i++)18printf(’’%s%4d\n’’,h[i].num,h[i].s);19printf(’’\n’’);20out=fopen(’’out.dat’’,’’w’’);21fprintf(out,’’%d\n’’,n);22for(i=0;i<n;i++)23fprintf(out,’’%4d\n’’,h[i].s);24fclose(out);25}標(biāo)準(zhǔn)答案:1inti,max=a[0].s,n=0;2for(i=1;i<N;i++)3if(max<a[i].s)max=a[i].s;/*找出最高成績*/4for(i=0;i<N;i++)5if(max==a[i].s)b[n++]=a[i];/*找相等的最高成績并存入數(shù)組b中*/6returnn;/*返回符合條件的人數(shù)*/知識點(diǎn)解析:程序功能是把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中。(1)要把最高分?jǐn)?shù)的學(xué)生數(shù)據(jù)放在數(shù)組中,首先求出最高分?jǐn)?shù),再使用一個(gè)for循環(huán)把所有的成績進(jìn)行比較,找出最高的分?jǐn)?shù)來。(2)找出所有與最高分?jǐn)?shù)相等的學(xué)生,并將最高分?jǐn)?shù)的人數(shù)累加。國家二級C語言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共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,11,13,17,19,23,……。函數(shù)fun的作用是:用篩選法找出所有小于等于n的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)作為函數(shù)值返回。請?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>intfun(intn){inta[10000],i,j,count=0;for(i=2;i<=n;i++)a[i]=i;i=2;while(i<n){/******found******/for(j=a[i]*2;j<=n;j+=___1___)a[j]=0;i++;/******found******/while(___2___==0)i++:}pfinff("\nTheprimenumberbetween2to%d\n",n);for(i=2;i<=n;i++)/******found******/if(a[i]!=___3___){count++:pfinff(count%157"%5d":"\n%5d".a(chǎn)[i]);}returncount;}main(){intn=20,r;r=fun(n);printf("\nTnemumberofprimeis:%d\n",r);}標(biāo)準(zhǔn)答案:(1)a[i](2)a[i](3)0知識點(diǎn)解析:填空1:因?yàn)楸绢}的方法是首先從素?cái)?shù)2開始,將所有2的倍數(shù)的數(shù)從中刪去(把數(shù)表中相應(yīng)位置置零),可知本空應(yīng)填a[i]。填空2:while循環(huán)表示接著從數(shù)表中找下一個(gè)非零數(shù),并從表中刪去該數(shù)的所有倍數(shù),此空填a[i]。填空3:因?yàn)橐y(tǒng)計(jì)表中素?cái)?shù)個(gè)數(shù),因而只需把置零的數(shù)排除開來,此空填寫0。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到C所指數(shù)組中,過長的剩余字符接在C所指的數(shù)組的尾部。例如,當(dāng)a所指字符串中的內(nèi)容為"abcdefg",b所指字符串中的內(nèi)容為"1234"時(shí),C所指數(shù)組中的內(nèi)容應(yīng)為"a4b3c2dlefg";而當(dāng)a所指字符串中的內(nèi)容為"1234",b所指字符串的內(nèi)容為"abcdefg"時(shí),C所指數(shù)組中的內(nèi)容應(yīng)該為"1g2f3e4dcba"。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>voidfun(char*a,char*b,char*c){inti,j;charch;i=0;j=strlen(b)-1;/******found******/while(i>j)}ch=b[i];b[i]=b[j];b[j]=ch;i++;j--;}while(*a||*b){/******found******/If(*a){*c=*a;c++;a++;}if(*b){*c=*b;c++;b++;}}*c=0:}main(){chars1[100],s2[100],t[200];printf("\nEnters1string1");scanf("%s",s1);printf("\nEnters2string:");scanf("%s",s2);fun(s1,s2,t);printf("\nTheresultis:%s\n",t);}標(biāo)準(zhǔn)答案:(1)while(i<j)(2)if(*a)知識點(diǎn)解析:(1)由i和j定義的初始值可知,此處應(yīng)該判斷i是否小于j,所以應(yīng)改為while(i<j)。(2)此處將if錯(cuò)寫成If,這個(gè)錯(cuò)誤比較簡單,但往往不容易發(fā)現(xiàn)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:將一組得分中,去掉一個(gè)最高分和一個(gè)最低分,然后求平均值,并通過函數(shù)返回。函數(shù)形參a指向存放得分的數(shù)組,形參n中存放得分個(gè)數(shù)(n>2)。例如,若輸入9.98.57.68.59.39.58.97.88.68.4十個(gè)得分,則輸出結(jié)果為8.687500。注意:請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>voidNONO();doublefun(doublea[],intn){}main(){doubleb[10],r;inti;printf("輸入10個(gè)數(shù)放入b數(shù)組中:");for(i=0;i<10;i++)scanf("%lf",&b[i]);printf("輸入的10個(gè)數(shù)是:");for(i=0;i<10;i++)printf("%4.1lf",b[i]);printf("\n");r=fun(b,10);printf("去掉最高分和最低分后的平均分:%f\n",r);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{FILE*fp,*wf;inti,j;doubleb[10],r;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j<10;j++){fscanf(fp,"%lf",&b[j]);}r=fun(b,10);fprintf(wf,"%f\n",r);}fclose(fp);felose(wf);}標(biāo)準(zhǔn)答案:doublefun(doublea[],intn){doublesum=0,max,min;inti;max=min=a[0];for(i=0;i<n;i++){sum=sum+a[i];if(max<a[i])max=a[i].if(min>a[i])min=a[i];}sum=sum-max-min;return(sum/(n-2));}知識點(diǎn)解析:設(shè)定三個(gè)變量:sum存放和值,max存放最大值,min存放最小值。max和min都被賦予數(shù)組中第一個(gè)元素的值。利用循環(huán)將數(shù)組中元素累加到sum中,并找出最大值和最小值,sum值減去最大值和最小值,最后函數(shù)返回sum除以元素個(gè)數(shù)n-2的平均值。國家二級C語言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(char*s,inta,doublef){1—fp;charstr[100],strl[100],str2[100];intal;doublef1;fp=fopen("file1.txt","w");fprintf(fp,"%s%d%f\n",s,a,f);____2____;fp=fopen("file1.txt","r");fscanf(____3____,"%s%s%s",str,strl,str2);fclose(fp);al=atoi(str1);f1=atof(str2);printf("\nTheresult:\ri\nOoS%doof\n",str,a1,}main(){chara[10]="Hello!";intb=12345;doublec=98.76;fun(a,b,c);}標(biāo)準(zhǔn)答案:(1)FILE*(2)fclose(fp)(3)fp知識點(diǎn)解析:本題中函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。第一空:“fp=fopen("filel.txt","w");”可知fp是文件型指針,故第一空處fp的定義應(yīng)為“FILE*”。第二空:第二處的后面一句是“fp=fopen("filel.txt","r");”再次打開filel.txt,因此在第二次打開filel.txt之前必須將文件關(guān)閉,故第二處是關(guān)閉文件,即“fclose(fp)”。第三空:fscanf的調(diào)用形式是:fscanf(fp,格式字符串,輸入列表),因此第三空處應(yīng)為“fp”,從文件中讀出字符串、整數(shù)、浮點(diǎn)數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:對N名學(xué)生的學(xué)習(xí)成績,按從高到低的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。請改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#include#defineN10typedefstructss{charnum[10];ints;}STU;STU*fun(STUa[],intm)inti,j,k;t=(STU*)calloc(sizeof(STU),m)}returnt;}outresult(STUa[],F(xiàn)ILE*pf){inti;fprintf(pf,"No=%sMark=%d\n",a[i].num,a[i].s)ffprintf(pf,"\n\n");}main(){"A03",66J,{"A04"r87},{"A05",77},{"A09",80},{"Al0",71}};STU*pOrder;inti,m;printf("*****TheOriginaldataoutresult(a,stdout);printf"\nGivethenumberofthestudentswhohavebetterscore:");scanf("%d",&m);while(m>10){printf"\nGivethenumberofthestudentswhohavebetterscore:");scanf("%d",&m);pOrder=fun(a,m);printf("*****THERESULT*****\n");printf("Thetop:\n");printf("%s%d\n",pOrder[i]num,pOrder[i].s);free(pOrder);}標(biāo)準(zhǔn)答案:(1)t=(STU*)ca11oc(sizeof(STU),m);(2)t[k]____b[j];知識點(diǎn)解析:本題中函數(shù)的功能是按學(xué)習(xí)成績從高到低的順序找出前m(m≤10)名學(xué)生。利用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)對定義的結(jié)構(gòu)體中的成績域進(jìn)行排序。(1)題干中要求結(jié)構(gòu)體STU類型的m個(gè)學(xué)生放在動(dòng)態(tài)分配的連續(xù)存儲區(qū)中,“t=(STU*)ca11oc(sizeof(STU),m)”語句沒有使用分號“;”結(jié)束,因此需要在語句結(jié)尾處加分號。ca11oc函數(shù)是C語言的動(dòng)態(tài)分配函數(shù),分配存儲空間。(2)第二個(gè)標(biāo)識下是將b數(shù)組拷貝到t數(shù)組,在C語言中,數(shù)組元素的訪問使用中括號“[]”而不是元括弧“()”,因此第二標(biāo)識下應(yīng)改成“t[k]=b[j];”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,函數(shù)的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。例如,一維數(shù)組中的數(shù)據(jù)是:2223445666677899101010。刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910。注意:部分源程序在文件PROG1.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#defineN80intfun(inta[],intn){}main(){inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},1,n=20;voidNONO();printf("Theoriginaldata:\n");for(i=0;i標(biāo)準(zhǔn)答案:1inti,七,j=0,*p=a;2t=p[01;//設(shè)置臨時(shí)變量t初值指向第一數(shù)組值3for(i=0;i<=n;i++)4if(t==p[i])//當(dāng)臨時(shí)變量與數(shù)組中的某個(gè)值相同則跳出,比較下一個(gè)元素5;6else//如果臨時(shí)變量與數(shù)組中值不同,則對臨時(shí)變量重新賦值7{a[j]=tj8t=p[i];9j++;)10if(i>=n)a[j]=t;11returnj;知識點(diǎn)解析:該程序功能是刪去一維數(shù)組中所有相同的數(shù),使之只剩一個(gè)。解題思路是,首先在函數(shù)中定義臨時(shí)變量指向每一個(gè)元素,然后在循環(huán)過程中將臨時(shí)值和其他元素進(jìn)行比較,如果相同,那么跳過相同字符。(1)首先,設(shè)置一個(gè)臨時(shí)變量,初值設(shè)置為一維數(shù)組的第一個(gè)元素。(2)然后,依次將數(shù)組的元素與臨時(shí)變量比較,如果相同,則繼續(xù)取數(shù)組下一個(gè)元素與臨時(shí)變量比較:如果不同,則將臨時(shí)變量的值賦值到數(shù)組的第一個(gè)元素,同時(shí)將此與臨時(shí)變量不同的數(shù)組元素賦值給臨時(shí)變量。(3)循環(huán)執(zhí)行,直到所有的數(shù)據(jù)處理完畢。國家二級C語言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:統(tǒng)計(jì)形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,形參s所指的字符串為:abcdef35adgh3kjsdf7。輸出結(jié)果為:4。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2voidfun(char*s,int*t)3{inti,n;4n=0;5/**********found**********/6for(i=0;__1__!=0;i++)7/**********found**********/8if(s[i]>=’0’&&s[i]<=__2__)n++;9/**********found**********/10__3__;11}12main()13{chars[80]=’’abcdef35adgh3kjsdf7’’;14intt;15printf(’’\nTheoriginalstringis:%s\n’’,s);16fun(s,&t)’17printf(’’\nTheresultis:%d\n’’,t);}標(biāo)準(zhǔn)答案:(1)s[i](2)’9’(3)*t=n知識點(diǎn)解析:搜索整個(gè)字符串,判斷s[i]>=’0’且s[i]<=’9’,滿足該條件后,計(jì)數(shù)變量加1,因此第一空:循環(huán)終止條件是達(dá)到了字符串的尾部,字符串以“\0”(或NULL)結(jié)束,故第一空處應(yīng)為s[i]。第二空:數(shù)字字符的判斷是s[i]>=’0’且s[i]<=’9’,故第二空處應(yīng)為“’9’”。第三空:這里是將數(shù)字字符出現(xiàn)的次數(shù)存放在形參t里,n記錄了數(shù)字字符的個(gè)數(shù),而形參t是指針變量,故第三處應(yīng)為“*t=n”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中fun函數(shù)的功能是:將p所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫。(這里的“單詞”是指由空格隔開的字符串)。例如,若輸入“Iamastudenttotaketheexamination.”,則應(yīng)輸出“IaMAstudenTtOtakEthEexamination.”。請修改程序中的錯(cuò)誤之處,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得刪行,也不得更改程序的結(jié)構(gòu)!1#include<ctype.h>2#include<stdio.h>3#include<string.h>4voidfun(char*p)5{6intk=0;7for(;*p;p++)8if(k)9{10/**********found**********/11if(p==’’)12{13k=0;14/**********found**********/15(p)=toupper(*(p-1))16}17}18else19k=1;20}21main()22{23charchrstr[64];24intd;2526printf(’’\nPleaseenteranEnglishsentencewithin63letters:’’);27gets(chrstr);28d=strlen(chrstr);29chrstr[d]=’’;30chrstr[d+1]=0;31printf(’’\n\nBeforechanging:\n%s’’,chrstr);32fun(chrstr);33printf(’’\nAfterchanging:\n%s’’,chrstr);34}標(biāo)準(zhǔn)答案:(1)if(*p==’’)(2)*(p-1)=toupper(*(p-1));知識點(diǎn)解析:函數(shù)的功能是將每個(gè)單詞的最后一個(gè)字母改成大寫。(1)第一個(gè)錯(cuò)誤標(biāo)識下的if語句應(yīng)該是判斷字符串中的字符是否是空格,根據(jù)“for(;*p;p++)”語句中for循環(huán)條件中p的定義應(yīng)該為字符型指針變量,*p是取p所指存取單元的值,所以“if(p==’’)”應(yīng)該改為“if(*p==’’)”。(2)題干中要求是將每個(gè)單詞的最后一個(gè)字母改成大寫,所以它的位置應(yīng)該是挨著空格的前一個(gè)字符,應(yīng)該是指針p指向字符的前一個(gè)位置,“*p=toupper(*(p-1))”是將改動(dòng)的值賦給了p所指的空格,所以應(yīng)該改為“*(p-1)=toupper(*(p-1));”且語句未尾應(yīng)有分號。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,函數(shù)的功能是:刪去一維數(shù)組電所有相同的數(shù),使之只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。例如,一維數(shù)組中的數(shù)據(jù)是:2223445666677899101010。刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910。注意:部分源程序在文件PROG1.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2#defineN803intfun(inta[],intn)4{5{6}7main()8{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;voidNONO();9printf(’’Theoriginaldata:\n’’);10for(i=0;i<n;i++)printf(’’%3d’’,a[i]);11n=fun(a,n);12printf(’’\n\nThedataafterdeleted:\n’’);13for(i=0;i<n;i++)printf(’’%3d’’,a[i]);printf(’’\n\n’’);14NONO();15}16voidNONO()17{/*請?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/18FILE*rf,*wf;inta[N],n,i,j;19rf=fopen(’’in.dat’’,’’r’’);20wf=fopen(”out.dat”,”w”);21for(i=0;i<5;i++){22fscanf(rf,’’%d’’,&n);23for(j=0;j<n;j++)fscanf(rf,’’%d’’,&a[j]);24n=fun(a,n);25for(j=0;j<n;j++)fprintf(wf,’’%4d’’,a[j]);26fprintf(wf,’’\n’’);27}28fclose(rf);fclose(wf);29}標(biāo)準(zhǔn)答案:1inti,t,j=0,*p=a;2t=p[0];//設(shè)置臨時(shí)變量t初值指向第一數(shù)組值3for(i=0;i<=n;i++)4if(t==p[i])//當(dāng)臨時(shí)變量與數(shù)組中的某個(gè)值相同則跳出,比較下一個(gè)元素5}6else//如果臨時(shí)變量與數(shù)組中值不同,則對臨時(shí)變量重新賦值7{a[j]=t;8t=p[i];9j++;}10if(i>=n)a[j]=t;11returnj;知識點(diǎn)解析:(1)首先,設(shè)置一個(gè)臨時(shí)變量,初值設(shè)置為一維數(shù)組的第一個(gè)元素。(2)然后,依次將數(shù)組的元素與臨時(shí)變量比較,如果相同,則繼續(xù)取數(shù)組下一個(gè)元素與臨時(shí)變量比較;如果不同,則將臨時(shí)變量的值賦值到數(shù)組的第一個(gè)元素,同時(shí)將此與臨時(shí)變量不同的數(shù)組元素賦值給臨時(shí)變量。(3)循環(huán)執(zhí)行,直到所有的數(shù)據(jù)處理完畢。國家二級C語言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是建立一個(gè)NxN的矩陣。矩陣元素的構(gòu)成規(guī)律是:最外層元素的值全部為1;從外向內(nèi)第2層元素的值全部為2;第3層元素的值全部為3,…依次類推。例如,若N=5,生成的矩陣為:1111112221123211222111111請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#nclude#defineN7/**********found**********/voidfun(int(*a)___1___)(inti,j,k,m;if(N%2==0)n=N/2;elsem=N/2+1;for(i=0;i標(biāo)準(zhǔn)答案:(1)[N](2)i(3)i+1知識點(diǎn)解析:函數(shù)fun的功能是按照指定的規(guī)律建立一個(gè)NxN的矩陣。第一空:第一空處是補(bǔ)充函數(shù)定義,在主函數(shù)內(nèi)fun的調(diào)用形式是:fun(x),x是二維數(shù)組名,因此fun函數(shù)的參數(shù)是一個(gè)二維數(shù)組指針,故第一空處應(yīng)為“[N]”。第二空:i等于0時(shí),此時(shí)第二空下的循環(huán)內(nèi)a[0][j]=a[N-1][i]=1,顯然這是對最外圍的兩列賦值為1;i等于1時(shí),對外向內(nèi)第2列元素的值全部賦值為2,依此類推,故第二空處i的初值應(yīng)為“i”。第三空:“a[k][i]=a[k][N-i-1]=__3__;”是對矩陣的兩行進(jìn)行操作,題干要求矩陣每一圈上的值都相等,故這里和上一個(gè)循環(huán)的列上的值相同,也為“i+1”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將十進(jìn)制正整數(shù)m轉(zhuǎn)換成k(2≤k≤9)進(jìn)制數(shù),并按高位到低位順序輸出。例如,若輸入8和2,則應(yīng)輸出1000(即十進(jìn)制數(shù)8轉(zhuǎn)換成二進(jìn)制表示是1000)。請改正fun函數(shù)中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(intm,intk){intaa[20],i;for(ii=0;m;i++){/**********found**********/aa[i]=m/k,m/=k;}for(;i;i--)/**********found**********/printf("%d",aa[i]);}main(){intb,n;printf("\nPleaseenteranumberandabase:\n"),scanf("%d%d",&n,&b);fun(n,b);printl~("\n");}標(biāo)準(zhǔn)答案:(1)aa[i]=m%k;(2)printf("%d",aa[i-1]);知識點(diǎn)解析:函數(shù)的功能是將十進(jìn)制正整數(shù)m轉(zhuǎn)換成k(2≤k≤9)進(jìn)制數(shù)。(1)第二個(gè)標(biāo)識下的“aa[i]m/k;”是進(jìn)制的轉(zhuǎn)換,應(yīng)該是取余,所以第二個(gè)標(biāo)識下“aa[i]m/k;”.應(yīng)該改為“aa[i]=m%k;”。(2)數(shù)制轉(zhuǎn)換處理過程中所得的結(jié)果,和實(shí)際要輸出的結(jié)果順序是相反的,所以必須對存放余數(shù)的數(shù)組反向輸出。原題中“printf("%d",aa[i]);”的下標(biāo)有誤。因?yàn)橄聵?biāo)i的起始值為0,故反向輸出時(shí)應(yīng)該從i-1開始,因此改為“printf("%d",aa[i-1]);”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫一個(gè)函數(shù),從num個(gè)字符串中找出最長的一個(gè)字符串,并通過形參指針max傳回該串地址。(注意:主函數(shù)中用****作為結(jié)束輸入的標(biāo)志。)注意:部分源程序在文件PROG1.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char(*a)[81],intnum,char**max){}main(){charss[10][81],*ps;voidNONO();intn,i=0;printf("輸入若干個(gè)字符串:"),gets(ss[i]);puts(ss[i]);while(!strcmp(ss[i],"****")==0){i++;gets(ss[i]);puts(ss[i]);}n=i;fun(ss,n,&ps);printf("\nmax=%sin",ps);NONO();}VOidNONO(){/*請?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/charss[20][81],*ps;intn,i=0;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen{"out.dat","w");fgets(ss[i],81,rf);while(!strncmp(ss[i],"****",4)==0){i++;fgets(SS[i],81,rf);}n=i;fun(ss,n,&ps);fprintf(wf,"%s",ps);fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,k=0,maxlen;/*k為a數(shù)組中最長串所在元素的下標(biāo),初始為0,maxlen為其串長*/maxlen=strlen(a[k]);for(i=1;imaxlen){maxlen=strlen(a[i]);k=i;}}*max=a[k];知識點(diǎn)解析:該程序功能是找出最長的一個(gè)字符串。解題思路,首先指定第一個(gè)字符串為長度最大的字符串,然后在循環(huán)過程中將其與其他的所有串的長度進(jìn)行比較,求出最長的串。國家二級C語言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按數(shù)據(jù)域遞增有序鏈接。函數(shù)fun的功能是:刪除鏈表中數(shù)據(jù)域值相同的結(jié)點(diǎn),使之只保留一個(gè)。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#inolude#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h){SLIST*P,*q;p=h一>next;if(P!=NULL){q=p->next;while(q!=NULL){if(P一>data==q一>data){P一>next=q一>next;/**********found***********/free(___1____);/**********found***********/q=p一>___2___;}elSe{p=q;/**********found***********/q=q一>____3_____;}}}}SLIST*creatlist(int*a){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(“\nThelistisNULL!\n”);else{printf(“\nHead”);do{printf(“一>%d”,P一>data);p=p一>next;)while(P!=NULL);printf(“一>End\n”);}}main(){SLIST*head;inta[N]={1,2,2,3,4,4,4,5};head=crearlist(a);printf("\nThelistbeforedeleting:\n");outlist(head);fun(head);printf(“\nThelistafterdeleting:\n”);outlist(head);}標(biāo)準(zhǔn)答案:(1)q(2)next(3)next知識點(diǎn)解析:函數(shù)fun的功能是刪除鏈表中數(shù)據(jù)域值相同的結(jié)點(diǎn),只保留一個(gè)。第一空:p和q是兩個(gè)SLIST結(jié)構(gòu)體指針,分別指向兩個(gè)相鄰的結(jié)點(diǎn)?!癷f(p->data==q一>data)”成立則應(yīng)該刪除其中一個(gè)結(jié)點(diǎn),“p->next=q一>next;”p指向q的下一個(gè)結(jié)點(diǎn),那么q結(jié)點(diǎn)就可以刪除了,因此第一一空處應(yīng)該為“free(q);”。第二空:在第一空處,q指向的結(jié)點(diǎn)已經(jīng)被刪除,如果要繼續(xù)循環(huán)搜索數(shù)據(jù)域值相同的結(jié)點(diǎn),那么q需要重新指向p的下一個(gè)結(jié)點(diǎn),因此第二空處應(yīng)該為“q=p->next;”。第三空:如果“if(p->data==q->data)”不成立,那么p和q都向結(jié)點(diǎn)尾移動(dòng)一個(gè)結(jié)點(diǎn)位置,因此第三空處應(yīng)該是“q=q->next;”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:計(jì)算正整數(shù)nUN的各位上的數(shù)字之秘。例如,若輸入:252,則輸出應(yīng)該是:20。若輸入:202,則輸出應(yīng)該是:0。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includelongfun(10ngnum){/**********found***********/longk;dO{k*=num%10;/**********found***********/num\=10;}while(num);return(k);}main(){longn;printf(“\nPleaseenteranumber:”);Scanf(“%1d”,&n);printf(“\n%id\n”,fun(n));}標(biāo)準(zhǔn)答案:(1)l。ngk:=1;(2)num/=10;知識點(diǎn)解析:(1)本題中函數(shù)的功能是計(jì)算正整數(shù)num各個(gè)位上的數(shù)字之積。首先要對正整數(shù)進(jìn)行截取,取得該正整數(shù)的各個(gè)位上的數(shù)字,然后對求得的數(shù)進(jìn)行累積。(2)從已給定源程序的main主函數(shù)入手,通過鍵盤輸入一個(gè)正整數(shù)n,語句“printf\n%ld\n”,fun(n));”調(diào)用fun函數(shù)求得n各個(gè)位上的數(shù)字之積。[解題思路](1)第一個(gè)錯(cuò)誤標(biāo)識下的k是函數(shù)的返回值,子函數(shù)fun中在執(zhí)行“k*=num%10;”之前,只進(jìn)行了定義,卻沒有賦初值,編譯時(shí)會(huì)警告變量在使用之前沒有初始化k。k代表了各個(gè)位上的數(shù)字之積,其初值應(yīng)為1。因此,第一個(gè)標(biāo)識下的“l(fā)ongk;”改為“l(fā)ongk=1:”。(2)第二個(gè)標(biāo)識下的符號“\”是非法字符,根據(jù)題意,這里應(yīng)該是進(jìn)行除法運(yùn)算,所以“num\=10:”應(yīng)該改為“num/=10:”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫一個(gè)函數(shù),函數(shù)的功能是刪除字符串中的所有空格。例如,主函數(shù)中輸入“asdafaaz67”,則輸出為“asdafaz67”。注意:部分源程序在文件PROG1.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includeVOidfun(char*str){}main(){charstr[81];voidNONO();printf(“Inputastring:”);gets(str);puts(str);fun(str);printf("***str:%s\n",str);NONO();}voidNONO(){/*請?jiān)诖撕瘮?shù)內(nè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;知識點(diǎn)解析:該程序功能是刪除字符串中的所有空格。本題的解題思路是首先利用一個(gè)指向字符串的指針,查找不是空格的字符,然后將不是空格的字符賦值到字符串,如果是空格,則跳過該字符,這樣就實(shí)現(xiàn)了空格字符的刪除。國家二級C語言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。請?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>voidfun(char*s,inta,doublef){/*********found*********/【1】fp;charstr[100],str1[100],sir2[100];inta1;doublef1;fp=fopen("file1.txt","w");fprintf(fp,"%s%d%f\n",s,a,f);/*********found*********/【2】;fp=fopen("filel.txt","r");/*********found*********/fscanf(【3】,"%s%s%s",str,str1,str2);fclose(fp);a1=atoi(str1);f1=atof(str2);printf("\nTheresult:\n\n%s%d%f\n",str,a1,f1);}main(){chara[10]="Hello!";intb=12345;doublec=98.76;fun(a,b,c);}標(biāo)準(zhǔn)答案:(1)FILE*(2)flzlose(fp)(3)fp知識點(diǎn)解析:填空1:從使用fp=fopen("filel.txt","w")可知fp應(yīng)該是文件類型指針,因此本空應(yīng)該填寫FILE*。填空2:當(dāng)對fp作打開操作的時(shí)候,并進(jìn)行不同的操作前,應(yīng)該對其關(guān)閉,因?yàn)樵诘谝淮未蜷_時(shí)是對fp進(jìn)行寫操作,而在第二次打開后進(jìn)行的是讀操作,因此應(yīng)該先對fp進(jìn)行關(guān)閉,本空填fclose(fp)。填空3:fscanf()是把文本文件輸出,因此本空只能填寫fp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:逐個(gè)比較P、q所指兩個(gè)字符串對應(yīng)位置上的字符,并把ASCII值大或相等的字符依次存放到e所指的數(shù)組中,形成一個(gè)新的字符串。例如,若主函數(shù)中a字符串為“aBCDeFgH”,b字符串為“ABed”,則c中的字符串應(yīng)為“aBcdeFgH”。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>voidfun(char*p,char*q,char*c){/*********found*********/intk=1;/*********found*********/while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*P;if(*P)P++;if(*q)q++;k++;}}main(){chara[10]="aBCDeFgH",b[10]="ABcd",c[80]={’0’};fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);}標(biāo)準(zhǔn)答案:(1)intk=0;(2)while(*p‖*q)知識點(diǎn)解析:(1)變量k存放數(shù)組c的下標(biāo),因此應(yīng)初始化為0。(2)while循環(huán)語句的循環(huán)條件是判斷兩個(gè)字符串是否到達(dá)結(jié)尾。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:求出1~1000之間能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序給出如下:,請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(int=}=a,int*n){)voidmain(){intaa[1000],n,k;system("CLS");fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0){printf("%5d",aa[k]);printf("\n");)/*一行寫9個(gè)數(shù)*/elseprintf("%5d",aa[k]);}標(biāo)準(zhǔn)答案:voidfun(int*a,int*n){inti,j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除但不能同時(shí)被7和11整除的所有整數(shù),并放入數(shù)組a中*/if((i%7==0‖i%11==0)&&i%77!=0)a[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/}知識點(diǎn)解析:本題考查:if語句,用來判斷能被7整除或者能被11整除,但又不能同時(shí)被7和11整除的數(shù),此處需充分理解“邏輯與”和“邏輯或”的區(qū)別;for循環(huán)語句的循環(huán)條件用來控制循環(huán)變量取值范圍。該題需要運(yùn)用循環(huán)判斷結(jié)構(gòu)來實(shí)現(xiàn),其中循環(huán)語句比較容易,只要確定循環(huán)變量的范圍即可,下面來看判斷語句。題目要求找出能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),能同時(shí)被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除的數(shù),因而,可得出程序中的if語句。注意(i%7==0‖i%11==0)兩邊必須要有小括號。國家二級C語言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、人員的記錄由編號和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號唯一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論