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

下載本文檔

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

文檔簡介

國家二級C語言機試(操作題)模擬試卷6(共9套)(共27題)國家二級C語言機試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是輸出a所指數(shù)組中的前n個數(shù)據(jù),要求每行輸出5個數(shù)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的文件blank1.c中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<stdlib.h>3voidfun(int*a,intn)4{inti;5for(i=0;i<n;i++)6{7/*********found*********/8if(<u>【1】</u>==0)9/*********found*********/10printf("<u>【2】</u>");11/*********found*********/12printf("%d",<u>【3】</u>);13}14}15main()16{inta[100]={0),i,n;17n=22;18for(i=0;i<n;i++)19a[i]=rand()%21;20fun(a,n);21printf("\n");22}標準答案:(1)i%5(2)\n(3)a[i]知識點解析:填空1:題目要求輸出數(shù)組a中前n個數(shù),每行輸出5個,即當下標能整除5時換行。故空1處應該填i%5。填空2:輸出函數(shù)printf()的輸出換行符為\n。故空2處應該填\n。填空3:使用函數(shù)printf()輸出數(shù)組元素。數(shù)組元素為a[i]。故空3處應該填a[i]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項目中包含一個源程序文件modil.c。在此程序中,fun()函數(shù)的功能是在任意給定的N個正整數(shù)中,從左到右依次取3個數(shù)作為一組,按值大小找出該組數(shù)的中值,用該中值替換與該組數(shù)對應的原3個數(shù)中中間位置的數(shù)。處理后原數(shù)列中首尾2個數(shù)不變。處理后的數(shù)列在主函數(shù)中輸出。例如,有10個正整數(shù)如下。初始數(shù)列為657231858214538。第1組數(shù)為657;中值為6;替換后的數(shù)列為<u>667</u>231858214538。第2組數(shù)為5723;中值為7;替換后的數(shù)列為6<u>6723</u>1858214538。第3組數(shù)為72318;中值為18;替換后的數(shù)列為66<u>71818</u>58214538。第4組數(shù)為23185;中值為18;替換后的數(shù)列為667<u>18185</u>8214538。第5組數(shù)為1858;中值為8;替換后的數(shù)列為66718<u>1888</u>214538。第6組數(shù)為5821;中值為8;替換后的數(shù)列為6671818<u>8821</u>4538。第7組數(shù)為82145;中值為21;替換后的數(shù)列為66718188<u>82145</u>38。第8組數(shù)為214538;中值為38;替換后的數(shù)列為667181888<u>213838</u>。最終結(jié)果為667181888213838。請改正程序中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#defineN103intfindmid(infa,intb,infc)4{intt;5t=(a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));6/*********found*********/7returnb;8}9voidfun(intx[])10{inti,a,b,c,t[N];11/*********found*********/12for(i=0,i<N;i++)t[i]=x[i]13for(i=0,i<N-2;i++)14{a=t[i];b=t[i+1];c=t[i+2];15/*********found*********/16t[i+1]=findmid(a,b,c);17}18}19main()20{inti,x[N]={6,5,7,23,18,5,8,21,45,38};21for(i=0;i<N;i++)22printf("%d",x[i]);23printf("\n");24fun(x);25for(i=0;i<N;i++)26printf("%d",x[i]);27printf("\n");28}標準答案:(1)returnt;(2)for(i=0;i<N;i++)t[i]=x[i];(3)x[i+1]=findmid(a,b,c);知識點解析:(1)函數(shù)findmid()的功能是找到變量a、b、c這3個數(shù)中的中間數(shù),并將其存放在變量t中。因此應返回變量t。(2)語法錯誤,句末缺少分號。(3)本程序是對數(shù)組x進行操作,數(shù)組t只是用來暫時存放數(shù)組x中的元素,因此此處應為x[i+1]=findmid(a,b,c)。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)fun(),函數(shù)的功能是查找x在s所指數(shù)組中下標的位置,并將其作為函數(shù)值返回,若x不存在,則返回-1。注意:部分源程序在文件progl.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<stdlib.h>3#defineN154voidNONO();5intfun(int*s,intx)6{78}9main()10{inta[N]={29,13,5,22,10,9,3,18,22,25,14,15,2,7,27},i,x,index;11printf("a數(shù)組中的數(shù)據(jù):\n");12for(i=0;i<N;i++)13printf("%4d",a[i]);14printf("\n");15printf{"給x輸入待查找的數(shù):");16scanf("%d",&x);17index=fun(a,x);18printf("index=%d\n",index};19NONO();20}21voidNONO()22{/*本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)用函數(shù)、輸出數(shù)據(jù)及關(guān)閉文件*/23FILE*fp,*wf;24inti,j,a[10],x,index;25fp=fopen("in.dat","r");26wf=fopen("out.dat","w");27for(i=0;i<10;i++){28for(j=0;j<10;j++){29fscanf(fp,"%d",&a[j]);30}31fscanf(fp,"%d",&x);32index=fun(a,x);33fprintf(wf,"%d\n",index);34}35fclose(fp);36fclose(wf);37}標準答案:1intfun(int*s,int×)2{inti;3for(i=0;i<N,i++)4if(x==s[i])retlarni;5return-1:6}知識點解析:要找出數(shù)組中指定數(shù)據(jù)的下標,首先定義變量i用于存放數(shù)組下標,然后使用循環(huán)語句對數(shù)組進行遍歷,依次取出一個數(shù)組元素與指定的數(shù)進行比較,若相等,則返回該元素的下標,否則繼續(xù)判斷下一個元素,直到數(shù)組結(jié)束。若數(shù)組結(jié)束時仍沒有找到與指定數(shù)相等的元素,則返回-1。國家二級C語言機試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是在任意給定的9個正整數(shù)中找出按升序排列時處于中間的數(shù),將原數(shù)據(jù)序列中比該中間數(shù)小的數(shù)用該中間數(shù)替換,位置不變,在主函數(shù)中輸出處理后的數(shù)列,并將中間數(shù)作為函數(shù)值返回。例如,有9個正整數(shù):1572387582145按升序排列時的中間數(shù):8處理后主函數(shù)中輸出的數(shù)列:8882387882145請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的文件blank1.c中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#defineN93intfun(intx[])4{inti,j,k,t,mid,b[N];5for(i=0;i<N;i++)6b[i]=x[i];7for(i=0;i<=N/2;i++)8{k=i;9for(j=i+1;j<N;j++)10if(b[k]>b[j])k=j;11if(k!=i)12{13/*********found*********/14t=b[i];b[i]=<u>【1】</u>;15b[k]=t;16}17}18/*********found*********/19mid=b[<u>【2】</u>];20for(i=0;i<N;i++)21/*********found*********/22if(x[i]<u>【3】</u>mid)x[i]=mid;23returnmid;24}25main()26{inti,x[N]={1,5,7,23,87,5,8,21,45};27for(i=0;i<N;i++)28printf("%d",x[i]);29printf("\nThemiddatais:%d\n",fun(x));30for(i=0;i<N;i++)31printf("%d",x[i]);32printf("\n");33}標準答案:(1)b[k](2)4或N/2(3)<知識點解析:數(shù)組x中9個元素任意排列,要找到按升序排列時處于中間位置的數(shù),應首先對數(shù)組進行升序排列。因為只需找到中間位置的數(shù)即可,所以不必對整個數(shù)組進行排序,只需排列出數(shù)組的前半部分。找到中間數(shù)后,遍歷原數(shù)組,對小于中間數(shù)的元素進行替換。填空1:利用選擇算法排序。先指定一個元素為最小,用這個數(shù)與其后的所有數(shù)進行比較,若小于此數(shù),則進行替換。此處考查替換操作。故空1處應該填b[k]。填空2:元素mid存放中間位置的數(shù),數(shù)組長度為9,因此中間元素數(shù)為b[4]。故空2處應該填4或N/2。填空3:遍歷數(shù)組,當元素小于中間位置的數(shù)(mid)時,進行替換。故空3處應該填<。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modil.c。在此程序中,fun()函數(shù)的功能是刪除b所指數(shù)組中小于10的數(shù)據(jù)。在主函數(shù)中輸出刪除后數(shù)組中余下的數(shù)據(jù)。請改正函數(shù)fun()中指定部位的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件modil.c中。不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<stdlib.h>3#defineN204intfun(int*b)5{6/*********found*********/7intt[N],i,num8for(i=0;i<N;i++)9if(b[i]>=10)10/*********found*********/11t[++num]=b[i];12/*********found*********/13for{i=0;i<nun;i++)14b[i]=t[i];15return{num);16}17main()18{inta[N],i,num;19printf("a數(shù)組中的數(shù)據(jù):\n");20for(i=0;i<N;i++)21{a[i]=rand()%21;22printf("%4d",a[i]);}23printf("\n");24nunl=fun(a);25for(i=0;i<hum;i++)26printf("%4d",a[i]);27printf("\n");28}標準答案:(1)intt[N],i,num=0;(2)t[num++]=b[i];或{t[num]=b[i];num++:}(3)for(i=0;i<num;i++)知識點解析:要刪除數(shù)組b中小于10的數(shù),應遍歷數(shù)組依次取出數(shù)組b中的元素與10進行比較,若不小于10,則將其存入數(shù)組t中,遍歷完成后,數(shù)組t中的元素即為所求,再將數(shù)組t中的元素保存到數(shù)組b中即可。(1)元素num存放不小于10的元素的個數(shù),應將其初始化為0。(2)將數(shù)組b中不小于10的元素存入數(shù)組t中,同時使數(shù)組t的下標加1。(3)語法錯誤,沒有nun這個變量,應改為num。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)fun(),其功能是統(tǒng)計s所指字符串中的數(shù)字字符個數(shù)。并將其作為函數(shù)值返回。例如,s所指字符串中的內(nèi)容是2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11。注意:部分源程序在文件progl.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2voidNONO();3intfun(char*s)4{56}7main()8{char*s="2def35adh253kjsdf7/kj8655x";9printf("%s\n",s);10printf("%d\n",fun(s));11NONO();12}13voidNONO{)14{/*本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)用函數(shù)、輸出數(shù)據(jù)及關(guān)閉文件*/15FILE*fp,*wf;16inti;17chars[256];18fp=fopen("in.dat","r");19wf=fopen("out.dat","W");20for(i=0;i<10;i++){21fgets{s,255,fp);22fprintf(wf,"%d\n",fun(s));23}24fclose(fp);25fclose(wf);標準答案:1intfun(char*s)2{intn=0;3chax*p;4for(p=s;p!='\0';p++)5if((*p>='0')&&('p<='9'))6n++;7returnn;8}知識點解析:要統(tǒng)計字符串中數(shù)字字符的個數(shù),首先應定義變量n,并將其初始化為0,然后遍歷字符串,逐個判斷字符是否為數(shù)字字符。判斷條件為該元素的ASCⅡ值在字符0到9的ASCⅡ值之間,若判斷條件成立,則使n的值加1,否則繼續(xù)判斷下一個字符,直到字符串結(jié)束。國家二級C語言機試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是在形參s所指字符串中的每個數(shù)字字符之后插入一個"s"。例如,形參s所指的字符串為"def35adh3kjsdf7",執(zhí)行后結(jié)果為"def3*5*adh3*kjsdt7*"。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2voidfun{char*s)3{4inti,j,n;5for(i=0;s[i]!='\0';i++)6/*********found*********/7if(s[i]>='0'<u>【1】</u>s[i]<='9')8{9n=0;10/*********found*********/11while(s[i+1+n]!=<u>【2】</u>)12n++:13for(j=i+n+1;j>i;j--)14/*********found*********/15s[j+1]=<u>【2】</u>;16s[j+1]='*';17i=i+1;18}19}20main()21{22chars[60]="def35adh3kjsdf7";23printf("\nTheoriginalstringis:%s\n",s),24fun(s);25printf("\nTheresultis:%s\n",s);26}標準答案:(1)&&(2)0或'\0'(3)s[j]或*(s+j)知識點解析:填空1:if語句中的表達式用來判斷是否為數(shù)字字符。數(shù)字字符的條件是大于等于’0',同時小于等于'9',因此需要使用邏輯與"&&"來連接。故空1處應該填&&。填空2:while語句用來判斷是否到達字符串的結(jié)尾。故空2處應該填0(或字符串結(jié)束標志"\0")。填空3:for語句使數(shù)字后的字符全都后移一個單位,因此要使s[j+1]=s[j];。故空3處應該填s[j]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項目中包含一個源程序文件modil.c。在此程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計算如下公式的值:例如,若m的值為5,則應輸出1.463611。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<conio.h>2#include(stdio.h>3doublefun(intm)4{5doubley=1.0;6inti;7/*********found*********/8for(i=2;i<m;i++)9/*********found*********/10y+=1/(i*i);11return(y);12}13main()14{15intn=5;16printf("\nTheresultis%1f\n",fun(n));17}標準答案:(1)for(i=2;i<=m;i++)(2)y+=1.0/(i}i);或y+=(double)1/(i*i);知識點解析:(1)根據(jù)公式可以知道for循環(huán)語句中變量i的取值范圍應該包括m。(2)變量y是一個double型變量,而i是整型變量,所以要進行類型轉(zhuǎn)換,改為y+=1.0/(i*i);或y+=(double)1/(i*i);。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)fun(),其功能是實現(xiàn)B=A+AT,即將矩陣A加上A的轉(zhuǎn)置,結(jié)果存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。舉例如下。輸入如下的矩陣:注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4voidfun(inta[3][3],intb[3][3])5{67}8voidmain()9{10inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];11inti,j;12system("CLS");13fun(a,t);14for(i=0;i<3;i++)15{16for(j=0;j<3;j++)17printf("%7d",t[i][j]);18printf("\n");19}20)標準答案:1voidfun(inta[3][3],intb[3][3])2{3inti,j;4for(i=0;i<3;i++)5for(j=0;j<3;j++)6b[i][j]=a[i][j]+a[j][i];7/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中*/8}知識點解析:行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對應原矩陣的第j行第i列。本題使用兩層循環(huán)實現(xiàn)矩陣的轉(zhuǎn)置,并將計算結(jié)果存入矩陣b中,外層循環(huán)控制矩陣的行下標,內(nèi)層循環(huán)控制矩陣的列下標。國家二級C語言機試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。程序的功能是調(diào)用fun函數(shù)建立班級通信錄。通信錄中記錄每位學生的編號、姓名和電話號碼。班級人數(shù)和學生信息從鍵盤讀入,每個人的信息作為一個數(shù)據(jù)塊寫到名為myfile5.dat的二進制文件中。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN5typedefstruct{intnum;charname[10];chartel[10];)STYPE;voidtheck();/*********found*********/intfun(【1】*std){/*********found*********/【2】*fp;inti;if((fp=fopen("myfile5.dat","wb"))==NULL)return(0);printf("\nOutputdatatofile!\n");for(i=0;i<N;i++)/*********found*********/fwrite(&std[i],sizeof(STYPE),1,【3】);fclose(fp);reeturn(1);}main(){STYPEs[10]={{1,"aaaaa","111111"},{1,"bbbbb","222222"},{1,"ccccc","333333"},{1,"ddddd","444444"),{1,"eeeee","555555"}};intk;k=fun(s);if(k==1){printf("Succeed!");check();)elseprintf("Fail!");}voidcheck(){FILE*fp;inti;STYPEs[10];if((fp=fopen("myfile5.dat","rb"))==NULL){printf("Fail!\n");exit(0);)printf("\nReadfileandoutputtoscreen:\n");printf("\nnumnametel\n");for(i=0;i<N;i++){fread(&s[i],sizeof(STYPE),1,fp);printf("%6d%s%s\n",s[i].num,s[i].name,s[i].tel);}fclose(fp);}標準答案:(1)STYPE(2)FILE(3)fp知識點解析:填空1:根據(jù)主函數(shù)中的調(diào)用函數(shù)可知,函數(shù)的形參應為結(jié)構(gòu)體類型,因此填入STYPE。填空2:fp是指向文件類型的指針變量,因此填入FILE。填空3:函數(shù)fwrite調(diào)用的一般形式為“fwrite(buffer,size,count,fp);”。buffer:是一個指針變量,在fread函數(shù)中它存放輸入數(shù)據(jù)的首地址,在fwrite函數(shù)中,它存放輸出數(shù)據(jù)的首地址。size:表示數(shù)據(jù)塊的字節(jié)數(shù)。count:表示要讀寫的數(shù)據(jù)塊數(shù)。fp:表示文件指針。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:先將字符串s中的字符按正序存放到字符串t中,然后把s中的字符按逆序連接到字符串t的后面。例如,當s中的字符串為“ABCDE”時,則t中的字符串應為“ABCDEEDCBA”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,char*t){inti,s1;s1=strlen(s);/*********found*********/for(i=0;i<=s1;i++)t[i]=s[i];for(i:0;i<s1;i++)t[s1+i]=s[s1-i-1];/*********found*********/t[s1]=’\0’;}voidmain(){chars[100],t[i00];system("CLS");printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("Theresultis:%s\n",t);}標準答案:(1)for(i=;i<sl;i++)(2)t[2*sl]=’\0’;知識點解析:(1)字符串長度為sl,但數(shù)組下標從0~sl-1,因此不包括sl。(2)正序和逆序字符串都加入了t串中,此時t串中最后一個元素的下標為2*sl-1,所以在2*sl下標處加入字符串結(jié)束標識’\0’。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,函數(shù)fun的功能是:將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的千位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。例如,當a=45,b=12時,調(diào)用該函數(shù)后c=4152。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){inta,b;longc;printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%d\n",c);}標準答案:voidfun(inta,intb,long*c){/*b%10獲取b的個位,a/10獲取a的十位,a%10獲取a的個位,b/10獲取b的十位*/*c=b%10+(a%10)★10+(b/10)★100+(a/10)★1000;}知識點解析:本題中主要的問題是如何取出a和b的個位數(shù)和十位數(shù),取出后如何表示成c中相應的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。得到后對應乘以1000、100、10、1,就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個位數(shù)。注意使用c時要進行指針運算。國家二級C語言機試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序的功能是:從鍵盤輸入若干行文本(每行不超過80個字符),寫到文件myfile4.txt中,用-1作為字符串輸入結(jié)束的標志。然后將文件的內(nèi)容讀出顯示在屏幕上。文件的讀寫分別由自定義函數(shù)ReadText和WfiteText實現(xiàn)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<string.h>#include<stdlib.h>voidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen("myfile4.txt","w"))==NULL){printf("openfail!!\n");exit(0);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt","r"))=:NULL){printf("openfail!!\n");exit(0);}ReadText(fp);fclose(fp);}/**********found**********/voidWriteText(FILE___1___){charstr[81];printf("\nEnterstringwith-1toend:\n");gets(str);while(strcmp(str,"-1")!=0){/**********found**********/fputs(___2___,fw);fputs("\n",fw);gets(Str);}}voidReadText(FILE*fr){charstr[81];printf("\nReadfileandoutputtoscreen:\n");fgets(str,81,fr);while(!feof(fr)){/**********found**********/printf("%s",___3___);fgets(str,81,fr);}}標準答案:(1)*fw(2)str(3)str知識點解析:本題要求是把一段文本寫到文件myfile4.txt中,用-1作為字符串輸入結(jié)束的標志。然后將文件的內(nèi)容讀出顯示在屏幕上。主要考查文件操作以及fputs和fgets函數(shù)的使用。第一空:此處是補充函數(shù)參數(shù)名,參數(shù)類型己知是FILE文件指針,“fputs("\n"”,fw)”是將字符“\n”寫入文件,可知fw是文件指針名,因此,第一空處應該是“voidWriteText(FILE*fw)”。第二空:“while(strcmp(str,"-1”)!=0)”循環(huán)的結(jié)束標志是str字符串等于“-1”時循環(huán)退出,如果str不等于“-1”,執(zhí)行循環(huán)體內(nèi)容:用fputs函數(shù)將str字符串寫入文件。fputs函數(shù)的調(diào)用形式是:“fputs(s,fp)”,其中,s是指向字符串的指針或字符串數(shù)組名,fp是指向?qū)⒁粚懭氲奈募奈募羔?,因此,第二處應該是“fputs(str,fw)”。第三空:“while(!feof(fr)”循環(huán)的作用是不斷讀取文件直到到達文件尾,每次最多讀81個,將讀到的數(shù)據(jù)放在str字符串里,并用printf輸出到屏幕,因此,第三處應該是“printf("%s",str)”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當S中的數(shù)為:7654321時,t中的數(shù)為:7531。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>/**********found**********/voidfun(1longs,longt){longs1=10;*t=s%10;while(s>0){s=s/100;*t=s%10*s1+*t;/**********found**********/s1=s1*100;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld”,&s);fun(s,&t);printf("Theresultis:%ld\n",t);}標準答案:(1)voidfun(longs,long*t)(2)s1=s1*10;知識點解析:本題中函數(shù)的功能是依次取出奇數(shù)位上的數(shù)。該題的解題思路主要是找出數(shù)字中的奇數(shù)位上的數(shù)。(1)根據(jù)“*t=s%10”判斷,t應該是個指針變量,所以“voidfun(longs,longt)”語句中的t只需改為“voidfun(longs,long*t)”。(2)分析函數(shù)內(nèi)的循環(huán)過程可知s1的用途是每次將母t擴大,記錄每次得到的奇數(shù)位的數(shù)字的權(quán)值,s1的權(quán)值每次增加1位,因此,第二個標識下應該是“s1=s*10;”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把分數(shù)最低的學生數(shù)據(jù)放在b所指的數(shù)組中,注意:分數(shù)最低的學生可能不止一個,函數(shù)返回分數(shù)最低的學生的人數(shù)。注意:部分源程序在文件PROG1.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include<stdio.h>#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b){}main(){STRECs[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",91},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh[N];inti,n;FILE*out;n=fun(s,h);printf("The%dlowestscore:\n",n);for(i=0;i<n;i++)printf("%s%4d\n”,h[i].num,h[i].s);printf("\n");out=fopen("out.dat","w’);fprintf(out,"%d\n",n);for(i=0;i<n;i++)fprintf(out,"%4d\n",h[i].s);fclose(out);}標準答案:inti,j=0,min=a[0].s;for(i=0;i<N;i++){if(min>a[i].s){j=0;b[j++]=a[i];min=a[i].s;}elseif(min==a[i].s)b[j++]=a[i];}returnj;知識點解析:該程序功能是把分數(shù)最低的學生數(shù)據(jù)放在b所指的數(shù)組中。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進行比較,求得最小值。然后將最小值與所有值進行比較,求得所有的最小值。(1)要把最低分數(shù)的學生數(shù)據(jù)放在數(shù)組中,首先求出最低分數(shù),再使用一個for循環(huán)把所有的成績進行比較,找出最低的分數(shù)來。(2)找出所有與最低分數(shù)相等的學生,并將最低分數(shù)的人數(shù)累加。國家二級C語言機試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將不帶頭節(jié)點的單向鏈表節(jié)點數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表節(jié)點數(shù)據(jù)域從頭至尾的數(shù)據(jù)為10、4、2、8、6,排序后鏈表節(jié)點數(shù)據(jù)域從頭至尾的數(shù)據(jù)為2、4、6、8、10。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN6typeclefstructnode{intdata;structrlode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;p=h;while(p){/*********found*********/q=【1】;/*********found*********/while(【2】){if(p﹣>data>q﹣>data){t=p﹣>data;p﹣>data=q﹣>data;q﹣>data=t;}q=q﹣>next;}/*********found*********/p=【3】;}}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]={0,10,4,2,8,6};head=creatlist(a);printf("\nTheoriginallist:\n");outlist(head);fun(head);printf("\nThelistafterinverting:\n");outlist(head);}標準答案:(1)p﹣>next(2)q(3)p﹣>next知識點解析:填空1:從第2個while循環(huán)可知,q的初值應該為p的next,故此空應該填寫p﹣>next。填空2:第2個while循環(huán)表示的是每次從鏈表剩下的樹中找出最小的數(shù),因此此空應該以q是否為空來判斷循環(huán)是否結(jié)束,所以此空應該填寫q。填空3:當找到一個最小的數(shù)時p應該向后移,因此此空應該填寫p﹣>next。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(如“Z”轉(zhuǎn)化為“A”,“z”轉(zhuǎn)化為“a”),其他字符不變。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#include<ctype.h>#include<conio.h>voidfun(char*s){/*********found*********/while(*s!=’@’){if(*s>=’A’&&*s<=’Z’||*s>=’a’&&*s<=’z’){if(:*s==’Z’)*s=’A’;elseif(*s==’z’)*s=’a’;else*s+=1;}/*********found*********/(*s)++;}}voidmain(){chars[80];system("CLS");printf("\nEnterastringwithlength<80:\n\n");gets(s);printf("\nThestring:\n\n");puts(s);fun(s);printf("\n\nTheCords:\n\n");puts(s);}標準答案:(1)while(*s)或while(*s!=’\0’)(2)s++;知識點解析:(1)通過while語句可對字符串所有字符進行遍歷,循環(huán)條件是對當前字符進行判斷,若當前字符不是字符串結(jié)尾,則對其進行其他操作。(2)因為該循環(huán)通過指針s的移動遍歷字符串,所以每循環(huán)一次要使指針向后移動一個位置,而不是將指針所指的元素加1。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,其功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標從0~P(含P,P小于等于n﹣1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內(nèi)容為:1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數(shù)組中的內(nèi)容應為:5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){inta[N]={1,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");}標準答案:voidfun(int*w,intp,intn){intx,j,ch;for(x=0;x<=p;x++){ch=w[0];for(j=1;j<n;j++)/*通過for循環(huán)語句,將p+1到n﹣1(含n﹣1)之間的數(shù)細元素依次向前移動p+1個存儲單元*/{w[j﹣1]=w[j];}w[n﹣1]=ch;/*將0到p個數(shù)組元素逐一賦給數(shù)組w[n﹣1]*/}}知識點解析:本題要求把下標從0~p(含p,p小于等于n﹣1)的數(shù)組元素平移到數(shù)組的最后,可以根據(jù)輸入的p值,通過for循環(huán)語句,將p+1~n﹣1(含n﹣1)之間的數(shù)組元素依次向前移動p+1個存儲單元,即w[j﹣1]=w[j];,同時將0~p個數(shù)組元素逐一賦給數(shù)組w[n﹣1],也就是通過語句w[n﹣1]=ch;來實現(xiàn)此操作的。國家二級C語言機試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),作為函數(shù)值返回;并將大于平均值的數(shù)放在形參y所指數(shù)組中,在主函數(shù)中輸出。例如,有10個正數(shù):4630324061745154826,平均值為:30.500000主函數(shù)中輸出:4632404548請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdlib.h>#include<stdio.h>#defineN10doublefun(doublex[],double*y){inti,j;doubleav;/**********found**********/av=___1___;/**********found**********/for(i=0;i<N;i++)av=av+___2___;for(i=j=0;i<N;i++)/**********found**********/if(x[i]>av)y[___3___]=x[i];y[j]=-1;returnav;}main(){inti;doublex[N],y[N];for(i=0;i<N;i++){x[i]=rand()%50;printf("%4.of",x[i]);}printf("\n");printf("\nTheaverageis:%f\n",fun(x,y));for(i=0;y[i]>=0;i++)printf("%5.1f",y[i]);printf("\n");}標準答案:(1)0(2)x[i]/N(3)j++知識點解析:函數(shù)fun的功能是計算形參x所指數(shù)組中N個數(shù)的平均值,同時利用傳址參數(shù)傳回平均值。第一空:“returnav;”可知變量aV保存了平均值,故第一空處av初始化應為0,即第一空處應填“0”。第二空:“for(i=0;i<N;i++)av=av+___2___;”后面的循環(huán)就是比較比平均值大的元素,因此,這個循環(huán)結(jié)束后av中的值就是平均值。由“av=(x[0]+x[1]+…x[N-1])/N=x[0]/N+x[1]/N+…+x[N-1]/N”可知,第二空處應為“x[i]/N”。第三空:“if(x[i]>av)y[___3___]=x[i];”是將x[i]保存在y所指的數(shù)組中,i是循環(huán)變量,i初始化為0,故y[]的計數(shù)變量為j,故第三空處應為“j++”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m,計算如下公式的值。例如,若m=2000,則應輸出:0.000160。請改正程序中的語法錯誤,使它能計算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>/**********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);}main(){intn=2000;printf("\nTheresultis%lf\n",fun(n));}標準答案:(1)doublefun(intm)(2)for(i=100;i<=m;i+=100)知識點解析:函數(shù)為累計相加,計算公式的值。(1)第一個標識下的fun函數(shù)的定義,根據(jù)題干中給出的公式中的分數(shù)部分,可知應該具有double類型返回值。所以應將“fun(intm)”改為“doublefun(intm)”。(2)第二個標識下的for循環(huán)過程是實現(xiàn)對公式的求解,C語句中for循環(huán)中的多個循環(huán)條件表達式是以分號為分隔符,所以第二個標識下“for(i=100,i<=m,i+=100)”改為“for(i=100;i<=m;i+=100)”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、已知學生的記錄由學號和學習成績構(gòu)成,N名學生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最低的學生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最低分)。注意:部分源程序存在文件PROG1.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include<stdio.h>#include<string.h>#defineN10typedefstructss{charnum[10];ints;}STU;voidfun(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;VOidNONO();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("Thelowest:%s,%d\n",m.num,m.s);NONO();}voidNONO(){/*本函數(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,"Thelowest:%s,%d\n",m.num,m.s);fclose(rf);fclose(wf);}標準答案:inti,min=a[0].s,j=0;for(i=1;i<N;i++)if(min>a[i].s){/*如果最低分min仍大于當前分*/j=i;/*記住位置*/min=a[i].s;/*把當前分賦值給min*/}*s=a[j];知識點解析:(1)首先指定第一個成績?yōu)樽畹头謹?shù)。(2)再使用一個for循環(huán)把所有的成績進行比較,找出最低的分數(shù)來。國家二級C語言機試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是建立一個N×N的矩陣。矩陣元素的構(gòu)成規(guī)律是:最外層元素的值全部為1;從外向內(nèi)第2層元素的值全部為2;第3層元素的值全部為3,……依此類推。例如,若N=5,生成的矩陣為1111112221123211222111111請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN7/*********found*********/voidfun(int(*a)【1】){inti,j,k,m;if(N%2==0)m=N/2;elsem=N/2+1;for(i=0;i<m;i++){/*********found*********/for(j=【2】;j<N﹣i;j++)a[i][j]=a[N﹣i﹣1][j]=i+1;for(k=i+1;k<N﹣i;k++)/*********found*********/a[k][i]=a[k][N﹣i﹣1]=【3】;}}main(){intx[N][N]={0),i,j;fun(x);printf("\nTheresultis:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n");}}標準答案:(1)[N](2)i(3)i+1知識點解析:填空1:本題考查了形參的確定。參數(shù)傳遞時將實參的值賦給形參,實參和形參是一一對應的,因此該空應該填寫[N]。填空2:第二重for循環(huán)中a[i][j]和a[N﹣i﹣1][j]表示第一行和最后一行數(shù)組a[N][N]的值,因而此空應該填寫i。填空3:第三重for循環(huán)代表的是a[N][N]中每一列的值,因此此空應該填寫i+1。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:將十進制正整數(shù)m轉(zhuǎn)換成k(2≤k≤9)進制數(shù),并按位輸出。例如,若輸入8和2,則應輸出1000(即十進制數(shù)8轉(zhuǎn)換成二進制表示是1000)。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件NODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<conio.h>/*********found*********/voidfun(intm,intk);{intaa[20],i;for(i=0;m;i++){/*********found*********/aa[i]=m/k;m/=k;}for(;i;i﹣﹣)/*********found*********/printf("%d",aa[i]);}main(){intb,n;printf("\nPleaseenteranumbetandabase:\n");scanf("%d%d",&n,&b);fun(n,b);printf("\n");}標準答案:(1)voidfun(intm,intk)(2)aa[i]=m%k;(3)printf("%d",aa[i﹣1]);知識點解析:(1)函數(shù)定義的格式錯誤,不應帶有";"。(2)將十進制正整數(shù)轉(zhuǎn)換為任意進制的數(shù)與十進制正整數(shù)轉(zhuǎn)換成二進制的數(shù)的方法是一樣的。從整數(shù)n譯出它的各位k進制數(shù)值,需采用除k取余的方法,即求n除k的余數(shù),得到它的k進制的個位數(shù),接著將n除以k。在n不等于0的狀況下循環(huán),能順序求出n的k進制的各個位上的數(shù)。(3)在進行for(i=0;m;i++)循環(huán)結(jié)束時,i已經(jīng)多加了一個1,所以這里要減去1。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫一個函數(shù),其功能是:從傳入的num個字符中找出最長的一個字符串,并通過形參指針max傳回該串地址(用****作為結(jié)束輸入的標識)。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>char*fun(char(*a)[81],intnum,char*max){}voidmain(){FILE*wf;charss[10][81],*ps=NULL;chars[3][81]={"abcd","deg","diegns"),*p=NULL;inti=0,n;system("CLS");printE("輸入若干個字符串:");gets(ss[i]);puts(ss[i]);while(!strcrnp(ss[i],"****")==0)/*用4個星號作為結(jié)束輸入的標志*/{i++;gets(ss[i]);puts(ss[i]);}n=i;ps=fun(ss,n,ps);printf("\nmax=%s\n",ps);/*********found*********/wf=fopen("out.dat","w");P=fun(s,3,p);fprintf(wf,"%s",p);fclose(wf);/*********found*********/}標準答案:char*fun(char(*a)[81],intnum,char*max){inti=0;max=a[0];for(i=0;i<num;i++)/*找出最長的一個字符串*/if(strlen(max)<strlen(a[i]))max=a[i];returnmax;/*傳回最長字符串的地址*/}知識點解析:解答本題之前,首先應該明白ss是一個指向一維數(shù)組的指針變量,max是指向指針的變量,所以引用變量時要注意加上木。本程序使用循環(huán)語句遍歷字符串數(shù)組,使用條件語句判斷該字符串是否最長。國家二級C語言機試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是將帶頭節(jié)點的單向鏈表逆置,即若原鏈表中從頭至尾節(jié)點數(shù)據(jù)域依次為2、4、6、8、10,逆置后,從頭至尾節(jié)點數(shù)據(jù)域依次為10、8、6、4、2。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論