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

下載本文檔

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

文檔簡介

國家二級C語言機試(操作題)模擬試卷7(共9套)(共27題)國家二級C語言機試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:從三個形參a,b,c中找出中間的那個數(shù),作為函數(shù)值返回。例如,當(dāng)a=3,b=5,c=4時,中數(shù)為4。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includeintfun(inta,intb,intC){intt;/**********found***********/t=(a>b)?(b>c?b:(a>c?c:___1___)):((a>c)?___2___:((b>c)?C:____3___));returnt;}main(){inta1=3,a2=5,a3=4,r;r=fun(a1,a2,a3);printf(“\nThemiddlenumberis:%d\n”,r);}標準答案:(1)a(2)a(3)b知識點解析:fun函數(shù)的功能是求得三個數(shù)中間的數(shù)。第一空:語句“(a>b)?(b>c?”表示a>b>c,根據(jù)題目要求,則中間值為b,若只是滿足第一個“?”前面的條件,而c>b,則選擇執(zhí)行“(a>c?c:___1___)”,當(dāng)a>c時取值c,所以ac)?”是對a、c的比較選擇,第三空處的“(b>c)?c”根據(jù)b、c的判斷,題目已經(jīng)給出了c,所以這里應(yīng)該是a。第三空:第三空中對于b、c的判斷選擇缺少b,所以這里填“b”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定函數(shù)MODll.C中函數(shù)fun的功能是:將一個由八進制數(shù)字字符組成的字符串轉(zhuǎn)換為與其面值相等的十進制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進制數(shù)字字符。例如,若輸入:77777,則輸出將是:32767。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#include#includeintfun(char*P){intn;/**********found***********/n=*P一‘O’;p++;while(*P!=0){/**********found***********/n=n*8+*P一’o’;p++;}returnn;}main(){charS[6];inti;intn;printf(“Enterastring(Ocataldiqits):”);gets(s);if(strlen(s)>5){printf(“Error:Stringtoolonger!\n\n”);exit(0);}for(i=0;s[i];i++)if(s[i]<‘0’||s[i]>‘7’){printf(“Error:%cnotisocataldigits!\n\n”,s[i]);exit(0);}printf(“Theoriginalstring:”);puts(s);n=fun(s);Printf(“\n%Sisconveredtointegernumber:%d\n\n”,s,n);}標準答案:(1)n=*p一‘0’;(2)n=n*8+*p一‘0’;知識點解析:函數(shù)功能是實現(xiàn)八進制到十進制的轉(zhuǎn)換。(1)第一個標識下面:語句“n=*p-‘o’;”中的‘0’不是數(shù)字零,而是字母‘o’,根據(jù)前面的分析因此改為:“n=*p—’o’;”。(2)第二個標識下面:語句“n=n*8+*P-’o’”,首先進行同(1)相同的修改,變量P沒有定義,根據(jù)題意要求這里應(yīng)該是“*p一’0’”,所以此句改為:“n=n*8+*一’0’;”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:例如,在主函數(shù)中從鍵盤給n輸入50后,輸出為:s=1.718282。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includedoublefun(intn){}NONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FTLE*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;doub2es;printf(“\nInputn:”);scanf(“%d”,&n);s=fun(n);printf(“\n\ns=%f\n\n”,s);NONO();}標準答案:doubles=0,t=1;inti;for(i=1;i<=n;i++){t*=i;s+=1./t;}returns;知識點解析:該程序功能是計算并輸出多項式值。根據(jù)題干中給出的數(shù)列,首先推出每一項的表達武,然后再對多項式進行累加求和。[解題思路](1)根據(jù)題干中給出的數(shù)列,推出每一項分母是在前一項分母的基礎(chǔ)上乘當(dāng)前項數(shù),第n項的項數(shù)為n。(2)在循環(huán)中求得每一項,然后對其進行累加求和。國家二級C語言機試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中已建立一個帶有頭結(jié)點的單向鏈表,在main函數(shù)中將多次調(diào)用fun函數(shù),每調(diào)用一次fun函數(shù),輸出鏈表尾部結(jié)點中的數(shù)據(jù),并釋放該結(jié)點,使鏈表縮短。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<Stdlib.h>3#defineN84typedefstructlist5{intdata;6struct1ist*next;7}SLIST;8voidfun(SLIST*p)9{SLIST*t,*e;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;iti;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(’’\nnead’’);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’’);outlistIhead);52}53}標準答案:(1)next(2)t->data(3)t知識點解析:fun函數(shù)的功能是輸出鏈表尾部結(jié)點中的數(shù)據(jù),并釋放該結(jié)點,使鏈表縮短。由于鏈表是單向的,找到鏈表尾部結(jié)點需要利用循環(huán)從頭結(jié)點開始查找,直至找到最后一個,找到之后輸出尾部結(jié)點的數(shù)據(jù),然后刪除尾結(jié)點。第一空:fun函數(shù)中的循環(huán)目的是找到尾結(jié)點“while(t->next!=NULL)”,利用結(jié)點變量s和t,s指向當(dāng)前節(jié)點,t不斷指向下一個結(jié)點,因此,第一空處應(yīng)該是“t=t->next;”。第二空:這里是輸出尾結(jié)點中的數(shù)據(jù),已經(jīng)利用循環(huán)找到了尾結(jié)點t,t的數(shù)據(jù)是t->data,因此,第二空處應(yīng)該為“printf(’’%d’’,t->data),”。第三空輸出尾結(jié)點數(shù)據(jù)之后刪除尾結(jié)點,使用free,又因為尾結(jié)點是t,因此,第三空處應(yīng)該為“flee(t);”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。例如,若字符串為abed,則應(yīng)輸出:dcba。請改正程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2/************found************/3fun(chara)4{if(*a)5{fun(a+1);6/************found************/7printf(’’%c’’*a);8}9}10main()11{chars[10]=’’abcd’’;12printf(’’處理前字符串=%s\n處理后字符串=’’,s);13fun(s);printf(’’\n’’);14}標準答案:(1)voidfun(char*a)(2)printf(’’%c’’,*a);知識點解析:本題中函數(shù)的功能是將字符串中的內(nèi)容逆序。題干中給出的fun函數(shù)通過遞歸調(diào)用自身,實現(xiàn)字符串的逆序。(1)主函數(shù)中“fun(s);”語句中的s是數(shù)組名,所以在fun函數(shù)中參數(shù)的定義應(yīng)該是指針型,“fun(chara)”改為“voidfun(char*a)”。(2)printf函數(shù)的調(diào)用形式是:printfif格式字符串,輸出項表),在格式字符串和輸出項表之間有“,”,因此,第二個標識處應(yīng)該是“printf(’’%c’’,*a);”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫一個函數(shù)fun,它的功能是:比較兩個字符串的長度,(不得調(diào)用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若兩個字符串長度相同,則返回第一個字符串。例如,輸入beijing<CR>shanghai<CR>(<CR>為回車鍵),函數(shù)將返回shanghai。注意:部分源程序存在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2char*fun(char*s,char*t)3{4}5main()6{chara[20],b[20];7voidNONO();8printf(’’Input:1thstring:’’);9gets(a);10printf(’’Input2thstring:’’);11gets(b);12printf(’’%s\n’’,fun(a,b));13NONO();14}15voidNONO()16{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/17FILE*fp,*wf;18inti;19chara[20],b[20];20fp=fopen(’’in.dat’’,’’r’’);21wf=fopen(’’out;dat’’,’’w’’);22for(i=0;i<10;i++){23fscanf(fp,’’%s%s’’,a,b);24fprintf(wf,’’%s\n’’,fun(a,b));25}26fclose(fp);27fclose(wf);}標準答案:1inti;2char*p=s,*q=t,3intn=0,m=0;4while(*p)//計算串s的長度n,其中p為臨時指針5{n++;6p++;7}8while(*q)//計算串t的長度m,其中q為臨時指針9{m++;10q++;11}12if(n>=m)//比較m和n的值,設(shè)置p指向較大的指針13p=s;14else15p=t;16returnp;知識點解析:該程序功能是比較兩個字符串的長度。解題過程是首先分別求得兩個字符串的長度,然后對這兩個值進行判斷,實現(xiàn)兩個字符串長度的比較。進入fun函數(shù),根據(jù)前面的分析:(1)首先求得字符串的長度,設(shè)變量n和m分別用來求字符串的長度,初值設(shè)為0,把字符串中的字符逐個訪問,每訪問一個字符,n和m分別加1,直到字符串結(jié)束;(2)使用兩個臨時指針變量p、q分別作為訪問字符串的變量;(3)根據(jù)m和n的值返回串,設(shè)置指針p,指向返回串的開始地址。國家二級C語言機試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在任意給定的9個正整數(shù)中找出按升序排列時處于中間的數(shù),將原數(shù)據(jù)序列中比該中間數(shù)小的數(shù)用該中間數(shù)替換,位置不變,在主函數(shù)中輸出處理后的數(shù)據(jù)序列,并將中間數(shù)作為函數(shù)值返回。例如,有9個正整數(shù):1572387582145按升序排列時的中間數(shù)為:8處理后主函數(shù)中輸出的數(shù)列為:8882387882145請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#inclucte<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+l;j<N;j++)10if(b[k]>b[j])k=j;11if(k!=i)12{13/*********found*********/14t=b[i];b[i]=【1】;15b[k]=t;16}17}18/*********found*********/19mid=b[【2】];20for(i=0;i<N;i++)21/*********found*********/22if(x[i]【3】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ù)組中的9個數(shù)任意排列,要找到按升序排列時處于中間位置的數(shù),應(yīng)首先對數(shù)組進行升序排列。因為只需找到中間位置的數(shù)即可,故不必對整個數(shù)組進行排序,只需要排列出數(shù)組的前半部分。找到中間數(shù)后,遍歷原數(shù)組,將小丁中問數(shù)的冗素進行替換。填空1:利用選擇算法排序,先指定一個元素為最小,用這個數(shù)與其后的所有數(shù)進行比較,若找小于此數(shù),則進行替換。此處考查替換操作。填空2:元素mid存放中間位置的數(shù),數(shù)組長度為9,因此中間元素數(shù)為b[4]。填空3:遍歷數(shù)組,當(dāng)元素小于中間位置的數(shù)(即mid)時,進行替換。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:給定n個實數(shù),輸出平均值,并統(tǒng)計平均值以上(含平均值)的實數(shù)個數(shù)。例如,n=8時,輸入193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763、所得平均值為195.838745,在平均值以上的實數(shù)個數(shù)應(yīng)為5。請改正程序中的錯誤,使其能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdlib.h>2#include<conio.h>3#include<stdio.h>4intfun(floatx[],intn)5/*********found*********/6intj,c=0;floatxa=0.0;7for(j=0;jxa)13c++;14returnc;15}16main()17{floatx[100]={193.199,195.673、195.757、196.051、196.092、196.596,196.579,196.763};18system(’’cls’’);19printf(’’%d\n’’,fun(x,8));20}標準答案:(1){intj,c=0;floatxa=0.0;(2)if(x[j]>=xa)知識點解析:(1)本題著重考查考生對C語言基本語法以及比較運算符的掌握情況。(2)本題中的第一個錯誤:在C語言中,{}應(yīng)成對出現(xiàn),所以程序中的語句”intj,c=0;floatxa=0.0;’’應(yīng)改為’’{intj,c=0;floatxa=0.0;’’或相同作用的語句;本題中的第二個錯誤:在C語言中,判斷大于或等于的運算符應(yīng)為>=,所以程序中的語句’’if(x[j]=>xa)’’應(yīng)改為’’if(x[j]>=xa)’’或相同作用的語句。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將S所指字符串中ASCII碼值為奇數(shù)的字符刪除,剩余字符形成的新串放在t所指數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符A的ASCII碼值為奇數(shù),字符1的ASCII碼值也為奇數(shù),都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDF24”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:1#include<conio.h>2#include<stdio.h>3#include<string.h>4voidfun(char*s,chart[])5{67}8main()9{10chars[100],t[100],Msg[]=’’Pleaseenterstrings:’’;11printf(Msg);12scanf(’’%s’’,s);13fun(s,t);14printf(’’\nTheresuitis:%s\n’’,t);15}標準答案:1voidfun(char*s,chart[])2{3inti,j=0,n;4n=strlen(s);5/*遍歷整個數(shù)組*/6for(i=0;i知識點解析:要刪除ASCII碼值為奇數(shù)的字符,也就是要保留ASCII碼值為偶數(shù)的字符,由于最終是要求出剩余字符形成的新串,所以本題的算法是對原字符串從頭到尾掃描,找出ASCII碼值為偶數(shù)的字符并依次存入數(shù)組。國家二級C語言機試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:把形參a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a所指數(shù)組元素中的次大值放在a[2]中,把a數(shù)組元素中的次小值放在a[3]中;其余以此類推。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:1、4、2、3、9、6、5、8、7,則按規(guī)則移動后,數(shù)據(jù)排列為:9、1、8、2、7、3、6、4、5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個數(shù)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN9/*********found**********/voidfun(int【1】,intn){inti,j,max,min,px,pn,t;/*********found**********/for(i=0;ia[j]){min=a[j];pn=j;}}if(px!=i){t=a[i];a[i]=max;a[px]=t;if(pn==i)pn=px;}if(pn!=i+1){t=a[i+l];a[i+l]=min;a[pn]=t;}}}main(){intb[N]={l,4,2,3,9,6,5,8,7},i;printf("\nTheoriginaldata:\n");for(i=0;i標準答案:(1)*a(2)2(3)i+1知識點解析:第一空:主函數(shù)內(nèi)fun函數(shù)的調(diào)用“fun(b,N);”,其中,b為整型數(shù)組名,故fun函數(shù)的第一參數(shù)為整型指針,又根據(jù)“max=a[j]”可知第一個參數(shù)名為a,故第一空處為“*a”。第二空:根據(jù)題意a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a所指數(shù)組元素中的次大值放在a[2]中,把a數(shù)組元素中的次小值放在a[3]中,升序排序和降序排序的下標變化是每次在前一次的基礎(chǔ)上+2,即a[0]、a[2]、a[4]…降序排序,a[1]、a[3]、a[5]…升序排序,故第二空應(yīng)為“2”。第三空:選擇排序法中的升序排序,首先從數(shù)組中挑選一個最小的元素,把它和第一元素交換,接著從剩下的n-1個元素中再挑出一個最小的元素,把它和第二個元素交換,不斷重復(fù)以上過程,直到比較完最后兩個元素。故內(nèi)層循環(huán)變量j應(yīng)該從i+1開始,因此,第三空處應(yīng)為“i+1”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ课鍌€元素求一個平均值,并將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是5的倍數(shù),多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#defineSIZE20fun(double*s,double*w){intk,i;doublesum;for(k=2,i=0;i標準答案:(1)sum=0.0;(2)if((i+1)%5==0)知識點解析:(1)在第一標識下“sun=0.0;”,根據(jù)題意,這是給sum賦值,而sun沒有定義編譯時會提示錯誤,應(yīng)改為“sum=0.0;”。(2)錯誤標識下的if判斷語句是依順序取5個字符,if中的邏輯表達式語法有誤,由于1%5恒等于1,所以i+1%5也就等價于i+1了,所以將“if(i+1%5==0)”改為“if((i+1)%5==0)”,此處主要注意的是運算符的優(yōu)先級。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#defineN8typedefstruct{charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}main(){STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);for(i=0;ih[j].s){t=h[i];h[i]=h[j];h[j]=t;}for(i=0;i標準答案:inti;doubleave=0.0;*n=0;for(i=0;i知識點解析:(1)首先,通過循環(huán)求總分,然后求得平均分。(2)在循環(huán)中,進行平均分與每個成績進行比較,并將滿足條件的數(shù)據(jù)存入數(shù)組及對其進行累加。國家二級C語言機試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:將形參a所指數(shù)組中的前半部分元素中的值與后半部分元素中的值對換。形參n中存放數(shù)組中數(shù)據(jù)的個數(shù),若n為奇數(shù),則中間的元素不動。例如,若a所指數(shù)組中的數(shù)據(jù)為:1,2,3,4,5,6,7,8,9,則調(diào)換后為:6,7,8,9,5,1,2,3,4。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN9voidfun(inta[],intn){inti,t,p;/*********found*********/p=(n%2==0)?n/2:n/2+【1】;for(i=0;i<n/2;i++){t=a[i];/*********found*********/a[i]=a[p+【2】];/*********found*********/【3】=t;}}main(){intbin]={1,2,3,4,5,6,7,8,9),i;printf("\nTheoriginaldata:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");fun(b,N);printf("\nThedataaftermoving:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");}標準答案:(1)1(2)i(3)a[p+i]或*(a+p+i)知識點解析:條件運算符組成條件表達式的一般形式:表達式17表達式2:表達式3。其求值規(guī)則為:如果表達式1的值為真,則以表達式2的值作為條件表達式的值,否則以表達式3的值作為整個條件表達式的值。填空1:該處是判斷數(shù)組元素的個數(shù)是奇數(shù)還是偶數(shù),為奇數(shù)時要使當(dāng)前位置加1,使p指向數(shù)組中間位置。填空2和填空3:這里是一個比較常見的數(shù)組位置調(diào)換程序,應(yīng)填入i和a[p+i]或*(a+p+i)。變量交換算法:如果變量a、b互換,需借助第3個變量temp完成,即temp=a;a=b;b=temp;。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:把從主函數(shù)中輸入的3個數(shù),最大的數(shù)放在a中,中間的數(shù)放在b中,最小的數(shù)放在c中。例如,若輸入的數(shù)為:551234,輸出的結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,c=12.0。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(float*a,float*b,float*c){/*********found*********/float*k;if(*a<*b){k=*a;*a=*b;*b=k;}/*********found*********/if(*a>*c){k=*c;*c=*a;*a=k;}if(*b<*c){k=*b;*b=*c;*c=k;}}main(){floata,b,c;printf("Inputabc:");scanf("%f%f%f",&a,&b,&c);printf("a=%4.1f,b=%4.1f,C=%4.1f\n\n",a,b,c);fun(&a,&b,&c);printf("a=%4.1f,b=%4.1f,C=%4.1f\n\n”,a,b,c);}標準答案:(1)noatk;(2)if(*a<*c)知識點解析:本題考查:變量定義,根據(jù)給定程序語句確定變量類型;if語句條件表達式。(1)觀察程序中的k,在賦值語句中,k是以變量的形式進行賦值而非指針,所以將k定義為指針是錯誤的。(2)此處if語句是為了將小于*c的值放入*c中,所以改為if(*a<*c)。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組S中,請編寫函數(shù)fun,其功能是:把分數(shù)最高的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中。注意:分數(shù)最高的學(xué)生可能不止一個,函數(shù)返回分數(shù)最高的學(xué)生人數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#inClude<stdio.h>#defineN16typedefStruct{charhum[10];ints;}STREC;intfun(STREC*a,STREC*b){}voidmain(){STRECs[N]={{"GA005",85),{"GA003",76},{"GA002",69),{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64),{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64),{"GA014",91),{"CA011",77),{"C|A017",64},{"GA018",64},{"GA016",72}},STRECh[N];inti,n;n=fun(s,h);printf("The%dhighestscore:\n",n);for(i=0;i<n;i++)printf("%s%4d\n",h[i].num,h[i].s);/*輸出最高分學(xué)生的學(xué)號和成績*/printf("\n");}標準答案:intfun(STREC*a,STREC*b){inti,j=0,max=a[0].s;for(i=0;i<N;i++)if(max<a[i].s)/*找出最大值*/max=a[i].s;for(i=0;i<N;i++)if(max==a[i].s)b[j++]=a[i];/*找出成績與max相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/returnj;/*返回最高成績的學(xué)生人數(shù)*/}知識點解析:本題考查:結(jié)構(gòu)體數(shù)組操作;用循環(huán)判斷結(jié)構(gòu)查找數(shù)組中的最大值。該程序使用兩個循環(huán)判斷語句,第1個循環(huán)判斷語句的作用是找出最大值;第2個循環(huán)判斷語句的作用是找出與max相等的成績(即最高成績)的學(xué)生記錄,并存入b中。對于如何找出數(shù)組中最大值(多個相等)的方法,我們已經(jīng)不陌生。如何對結(jié)構(gòu)體數(shù)組進行類似操作呢?掌握以下語句:for(i=0;i<N;i++)if(max<a[i].s)max=a[i].s;國家二級C語言機試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:從形參ss所指字符串?dāng)?shù)組中,刪除所有串長超過k的字符串,函數(shù)返回剩余字符串的個數(shù)。ss所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN5#defineM10intfun(char(*ss)[M],intk){inti,j=0,len;/*********found*********/for(i=0;i<【1】;i++){len=str1en(ss[i]);/*********found*********/if(1en<=【2】)/*********found*********/strcpy(ss[j++],【3】);}returnj;}voidmain(){charx[N][M]={"Beijing","Shanghai","Tianjin","Nanjing","Wuhan");inti,f;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(x[i]);printf("\n");f=fun(x,7);printf("ThestringwitchlengthislessthanOEequalto7:\n");for(i=0;i<f;i++)puts(x[i]);printf("\n");}標準答案:(1)N(2)k(3)ss[i]知識點解析:本題考查:for循環(huán)語句;if語句條件表達式;字符串復(fù)制函數(shù)strcpy的使用。填空1:for循環(huán)語句的作用是遍歷字符串?dāng)?shù)組中的每一個字符串,所以循環(huán)變量i的循環(huán)條件是i<N。填空2:題目要求刪除串長度大于k的字符串,所以if條件語句的條件表達式是len<=k。填空3:通過字符串復(fù)制函數(shù)將串長不大于k的字符串另存,并記錄個數(shù)。字符串復(fù)制函數(shù)strcpy,其格式為:strcpy(字符數(shù)組名1,字符數(shù)組名2)功能:把字符數(shù)組2中的字符串復(fù)制到字符數(shù)組1中。字符串結(jié)束標識‘\0’也一同復(fù)制。字符數(shù)組名2,也可以是一個字符串常量,這時相當(dāng)于把一個字符串賦予一個字符數(shù)組。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:逐個比較p、q所指兩個字符串對應(yīng)位置上的字符,并把ASCII值大或相等的字符依次存放到c所指的數(shù)組中,形成一個新的字符串。例如,若主函數(shù)中a字符串為“aBCDeFgH”,b字符串為“ABed”,則c中的字符串應(yīng)為“aBcdeFgH”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動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);}標準答案:(1)intk=0;(2)while(*p||*q)知識點解析:本題考查:變量初始化,需要根據(jù)題意確定變量含義,然后對其進行初始化操作;while循環(huán)語句。(1)變量k存放數(shù)組c的下標,因此應(yīng)初始化為0。(2)while循環(huán)語句的循環(huán)條件是判斷兩個字符串是否到達結(jié)尾。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)的*號之外,將串中其他*號全部刪除。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G*******”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“****ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<string.h>#include<stdio.h>#include<conio.h>voidfun(char*a){}main(){chars[81];printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);}標準答案:voidfun(char*a){inti=0;char*p=a;/*單獨處理字符串前綴為’*’的情況*/while(*p&&*p==’*’){a[i]=*p;i++;p++;}/*循環(huán)判斷當(dāng)前指向的字符是否’*’如果不是保存*/while(*p){if(*p!=’*’)/*保存非*的字符串,并將指針移到下一個位置*/{a[i]=’p;i++;}p++;}a[i]=’\0’;}知識點解析:本題考查:指針型變量定義;while循環(huán)語句;if語句條件表達式;字符串結(jié)束標識‘\0’。函數(shù)fun的功能:除了字符串前導(dǎo)的*號之外,將串中其他*號全部刪除。解答本題,首先定義一個臨時指針p,初始指向原串首地址;其次利用循環(huán)語句把字符串前導(dǎo)*號復(fù)制到原串;然后繼續(xù)移動指針,把串中和串尾的非*號字符復(fù)制到原串;最后為修改后的字符串賦結(jié)束字符‘\0’。要刪除字符串中的指定字符,通常采用保留非指定字符的方法。可以將非指定字符保留在原串,即將需要保留的字符從原串的起始位置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字符。國家二級C語言機試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的作用是:不斷從終端讀入整數(shù),由變量a統(tǒng)計大于0的個數(shù),用變量c來統(tǒng)計小于0的個數(shù),當(dāng)輸入0時結(jié)束輸入,并通過形參pa和pb把統(tǒng)計的數(shù)據(jù)傳回主函數(shù)進行輸出。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(int*px,int*py){/**********found**********/int【1】;scanf("%d",&k);/**********found**********/while【2】{if(k>0)a++;if(k<0)c++;/**********found**********/【3】;}*px=a;*py=c;}main(){intx,y;fun(&x,&y);printf("x=%dy=%d\n",x,y);}標準答案:(1)a=0,c=0,k(2)(k!=0)(3)scanf("%d",&k);知識點解析:第一空:“int(1);”這一空出現(xiàn)在fun函數(shù)最開始的定義階段,我們可以看到這里定義的是int整型數(shù)據(jù),而在這下面的一步為“scanf("%d",&k);”即讓我們輸入k的數(shù)據(jù),再根據(jù)題意,就可以知道這里的k是我們不斷輸入的整數(shù),而整個程序也僅僅需要這一個數(shù)據(jù)的輸入,所以這一空定義的就是我們需要輸入的數(shù)據(jù)k,同時下面出現(xiàn)在a,c也都沒有定義,所以這一空應(yīng)該填“a=0,c=0,k”。第二空:“while(2);”這一空出現(xiàn)在fun函數(shù)中的while循環(huán)中,是要給出while循環(huán)的條件語句。根據(jù)題意我們就可以知道,這里循環(huán)是只要數(shù)字不0就一直進行,而while循環(huán)內(nèi)部也能看到k>0和k<0時的統(tǒng)計步驟,所以這里while循環(huán)應(yīng)該就是while循環(huán)的終止條件,k不等于即可,即這一空應(yīng)該填“(k!=0)”(注意這里應(yīng)該加上條件語句應(yīng)有的括號)。第三空:“……(3);……”這一空在while循環(huán)中,此while循環(huán)是數(shù)字的判定函數(shù)。這一空前面已經(jīng)有了對于數(shù)字大于0或者小于0的判斷,也有相應(yīng)的a++和c++來進行個數(shù)統(tǒng)計,但是我們會發(fā)現(xiàn)這里功能已經(jīng)齊全,只不過沒有達到題目要求的不斷的輸入,所以這里循環(huán)還要繼續(xù)輸入k的值才能實現(xiàn)題目所達到的要求,所以這一空應(yīng)該填的是“scanf("%d",&k);”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序modil.c的主函數(shù)中,將a、b、c三個結(jié)點鏈成一個單向鏈表,并給各結(jié)點的數(shù)據(jù)域賦值,函數(shù)fun()的作用是:累加鏈表結(jié)點數(shù)據(jù)域中的數(shù)據(jù)作為函數(shù)值返回。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#includetypedefstructlist{intdata;structlist*next;}LTST;intfun(LIST*h){LTST*p;/**********found**********/intt;p=h;/**********found**********/while(*p){/**********found**********/t=t+p.data;p=(*p).next;}returnt;}main()(LISTa,b,c,*h;a.data=34;b.data=51;c.clara=87;c.next=’\0’;h=&a;a.next=&b;b.next=&c;printf("總和=%d\n",fun(h));}標準答案:(1)intt改為intt=0;(2)while(*p)改為while(p)(3)t=t+p.data;改t=t+(*p).data知識點解析:(1)第一個錯誤在定義t時,t是數(shù)據(jù)結(jié)果,但是在一開始定義時,t應(yīng)該定義為0的,這樣才不會影響后面的數(shù)據(jù)結(jié)果,以免程序出現(xiàn)不必要的錯誤所以這里應(yīng)該講intt改為“intt=0”。(2)第二個錯誤在fun函數(shù)中執(zhí)行while條件時while的條件語句。這里用“*p”,我們都知道這是指針的形式,而“*p”的意義是指針變量p所指向的變量的值,所以這里“*p”是一個具體的變量,而while(*p)的意義是“*p”不為空時就一直執(zhí)行,但是這里根據(jù)題意我們需要的鏈表的地址來進行題目需要的鏈表的計算,而單向鏈表的結(jié)束的標志就是鏈尾,鏈尾的特征則是指向為空,這里指向為空指的是地址比阿娘,所以這里的終止條件不應(yīng)該是p所指向的值為0,而是p的地址為空,所以“while(*p)”應(yīng)該改為“while(p)”。(3)第三個錯誤在fun()函數(shù)中的計算。我們都知道,鏈表與結(jié)構(gòu)體是緊密相連的,這一題同樣用到了,而且我們進行的也是鏈表結(jié)點的運算,自然要用到結(jié)構(gòu)體成員變量的運算。但是在“t=t+p.data”這個運算時,“p.data”的意義是“p.data”這個指針變量,也就是說這是指針變量的運算,指針變量是跟結(jié)點變量不同的,我們需要的是結(jié)點的數(shù)據(jù),而不是指向它的指針的數(shù)據(jù),所以這里的運算是完全錯誤的,為了符合題意,我們應(yīng)該要使用結(jié)點的結(jié)構(gòu)體變量。即“=t+p.data”應(yīng)該改為“t=t+(*p).data”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是分別統(tǒng)計形參t所指二維數(shù)組中字母A和C的個數(shù)。注意:部分源程序存在PROG1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。#include#include#defineM14voidNONO();voidfun(char(*t)[M],int*a,int*c){}voidget(char(*s)[M])(inti,j;for(i=0;i標準答案:voidfun(char(*t)[M],int*a,int*c){inti,j;*a=0;*c=0;for(i=0;i知識點解析:本題首先需要一個二維數(shù)組,二維數(shù)組的大小在程序開始就進行了定義“define=14”,這個大小比較合適,然后利用gets函數(shù)得到數(shù)組,然后數(shù)據(jù)就可以進入fun函數(shù)中進行處理應(yīng)用。進入fun函數(shù),fun函數(shù)首先肯定需要for循環(huán)語句將二維數(shù)組中的數(shù)據(jù)進行排序使用,然后需要條件語句進行判斷處理,這兩步是一體,見程序第9~11行,for循環(huán)保證全部使用了二維數(shù)組中數(shù)據(jù),并且是依次使用,if語句判斷了字母是否為A或者C或者都不是,并且進行了統(tǒng)計相加得到了A的個數(shù)a,C的個數(shù)c,這樣循環(huán)完成后,A和C的個數(shù)a、c就能繼續(xù)返回主函數(shù)進行輸出了,見程序26行,最終得到結(jié)果。國家二級C語言機試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(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é)果。注意:源程序存放在考生文件夾下的BLANK1C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;/**********found**********/p=___1___;while(P){/**********found**********/q=___2___;while(q){/**********found**********/if(p->data____3___q->data){t=p->data;P->data=q->data;q->data=t;)q=q->next;}p=p->next;}}NODE*creatlist(inta[]){NODE*h,*P,*q;inti;h=(NODE*)malloc(sizeof(NODE));h->next=NULL;for(i=0;idata=a[i];q->next=NULL;if(h->next==NULL)h->next=p=q;else(p->next=q;P=q;)}returnh;}voidoutlist(NODE*h){NODE*P;p=h->next;if(p==NULL)printf("ThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",P->data);p=p->next;)while(P!=NULL);printf("->End\n");}}main(){NODE*head;inta[N]={0,10,4,2,8,6};head=creatlist(a);printf("\nTheoriginallist:\n");outlist(head);fun(head);printf("\nThelistaftersorting:\n");outlist(head);)標準答案:(1)h->next(2)p->next(3)>=知識點解析:函數(shù)fun的功能是將帶頭節(jié)點的單向鏈表結(jié)點數(shù)據(jù)域中的數(shù)據(jù)從小到大排序,在fun函數(shù)內(nèi)采用的是選擇法排序。第一空:由審題分析可知,q從h的下一個元素開始尋找最小值,故第一空為“h->next”。第二空:由審題分析可知,while循環(huán)是在剩下的元素當(dāng)中找最小值,剩下的結(jié)點是由q指向的鏈表,q從p的后一個結(jié)點開始,故第二空處應(yīng)為“p->next”。第三空:“if(p->data__3__q->data)”是比較p結(jié)點和q結(jié)點數(shù)據(jù)的大小,如果p結(jié)點的數(shù)據(jù)比q結(jié)點的數(shù)據(jù)大,那么應(yīng)該將p結(jié)點和q結(jié)點的數(shù)據(jù)進行交換,故第三空處應(yīng)為“>=”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C是建立一個帶頭結(jié)點的單向鏈表,并用隨機函數(shù)為各結(jié)點數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結(jié)點(不包括頭結(jié)點)數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includetypedefstructaa{intdata;struct,aa*next;}NODE;intfun(NODE*h){intmax=-1;NODE*p;/**********found**********/p=h;while(P){if(P->data>max)max=p->data;/**********found**********/p=h->next;}returnmax;}outresult(ints,F(xiàn)ILE*pf){fprintf(pf,"\nThemaxinlink:%dkn",s);}NODE*creatlink(inth,intm){NODE*h,*P,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;for(i=l;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;P->next=s;p=p->next;}P->next=NULL;returnh;}outlink(NODE*h,F(xiàn)ILE*pf){NODE*P;p=h->next;fprintf(pf,"\nTHELIST:\n\nHEAD");while(P){fprintf(pf,"->%d",p->data);p=p->next;)fprintf(pf,"\n");}main(){NODE*head,intm,head=creatlink(12,100);optlink(head,stdout);m=fun(head);printf("\nTHERESULT:\n"),outresult(m,stdout);}標準答案:(1)p=h->next;(2)p=p->next;知識點解析:函數(shù)功能是求單向鏈表結(jié)點(不包括頭結(jié)點)數(shù)據(jù)域中的最大值。其中,單鏈表查找最大值及最小值的方法主要是對單鏈表的遍歷,并在遍歷過程中將初始化的最大值、最小值與鏈表中的每一個結(jié)點的數(shù)據(jù)域進行比較。(1)根據(jù)題干中求得除了頭結(jié)點之外的結(jié)點數(shù)據(jù)域中的最大值,頭指針h,工作指針p指向頭結(jié)點的下一個結(jié)點,所以第一個標識下的“p=h;”指向頭結(jié)點應(yīng)該改為指向下一個結(jié)點“p=h->next;”。(2)工作指針p,利用p實現(xiàn)對鏈表的遍歷,p表示指向鏈表的當(dāng)前結(jié)點,所以指向下一個結(jié)點應(yīng)該是“p=p->next;”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,二維數(shù)組中的數(shù)據(jù)為:333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)是:333333334444444455555555。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(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;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標準答案:inti,j;for(i=0;i知識點解析:該程序功能是將M行、N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中。本題中首先要清楚數(shù)組元素在通常情況下是按行存放的,而如果要實現(xiàn)按行存放,其對應(yīng)關(guān)系應(yīng)為:s[0][0],s[0][1],s[0][2],…,s[0][M-1],s[1][0],s[][1],…,s[N-1][M-1]。國家二級C語言機試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:統(tǒng)計出帶有頭結(jié)點的單向鏈表中結(jié)點的個數(shù),存放在形參n所指的存儲單元中。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行。也不得更改稗序的結(jié)構(gòu)!#include#include#defineN8typedefstruct1ist{intdata;struct1ist*next;)SLIST;SLIST*creatlist(int*a);voidoutlist(SLIST*);voidfun(SLIST*h,int*n){SLIST*P;/**********found**********/___1___=0;P=h->next;while(P){(*n)++;/**********fo

溫馨提示

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

評論

0/150

提交評論