版權(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ī)試(操作題)模擬試卷65(共9套)(共27題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)遞增有序鏈接。函數(shù)fun的功能是:把形參x的值放入一個(gè)新結(jié)點(diǎn)并插入到鏈表中,插入后各結(jié)點(diǎn)數(shù)據(jù)域的值仍保持遞增有序。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<stdlib.h>3#defineN84typedefstruetlist5{intdata;6struetlist;*next;7}SLIST;8voidfun(SLIST*h,intx)9{SLTST*p,*q,*s;10s=(SLIST*)malloc(sizeof(SLIST)),11/**********found**********/12s->data=____1___;13q=h;14p=h->next;;15while(p!=NULL&&x>p->data){16/**********found**********/17q=___2___;18p=p->next;;19}20s->rlext=p;21/**********found**********/22q->next=___3___;23}24SLTST*creatlist(int*a)25{SLIST*h,*p,*q;inti;26h=p=(SLIST*)malloc(sizeof(SLIST));27for(i=0;i<N;i++)28{q=(SLIST*)malloc(sizeof(SLIST));29q->data=a[i];p->next=q;p=q;30}31p->next=0;32returnh;33}34voidoutlist(SLTST*h)35{SLIST*p;36p=h->next;37if(p==NULL)printf(’’\nThelistisNULL!\n’’);38else39{printf(’’\nHead’’);40do{printf(’’->%d’’,p->data);p=p->next;}while(p!=NULL);41print=f(’’->End\n’’);42}43}44main()45{SLIST*head;intx;46inta[N]=47{11,12,15,18,19,22,25,29};48head=creatlist=(a);49printf(’’\nThelistbeforeinserting:\n’’);outlist(head);50printf(’’\nEnteranumber:’’);soanf(’’%d’’,&x);51fun(head,x);52printf(’’\nThelistafterinserting:\n’’);outlist:(head);53}標(biāo)準(zhǔn)答案:(1)x(2)p(3)s知識(shí)點(diǎn)解析:函數(shù)fun的功能是把形參x的值放入一個(gè)新結(jié)點(diǎn)并插入到鏈表中,插入后各結(jié)點(diǎn)數(shù)據(jù)域的值仍保持遞增有序。利用循環(huán)搜索鏈表,找到插入位置,將新結(jié)點(diǎn)插入到鏈表當(dāng)中。第一空:“s=(SLIST*)malloc(sizeof(SLIST));”顯然s是一個(gè)新結(jié)點(diǎn),第一空處是給新結(jié)點(diǎn)的數(shù)據(jù)域賦值x,因此,第一空處應(yīng)該是“s->data=x;”。第二空:循環(huán)“while(p!=NULL&&x>p->data)”是用來(lái)尋找插入位置,當(dāng)鏈表沒有結(jié)束且x仍然大于p所指向的結(jié)點(diǎn)的數(shù)據(jù)時(shí),就不斷的向鏈表后面搜索。在循環(huán)體內(nèi),語(yǔ)句“p=p->next;”是找到下一個(gè)結(jié)點(diǎn)的地址,變量q用來(lái)保存當(dāng)前結(jié)點(diǎn)的地址,因此,第二空處應(yīng)該是“q=p;”。第三空:“s->next=p;”將s插入鏈表當(dāng)中,s指向p,此時(shí)s結(jié)點(diǎn)已經(jīng)指向需要插入位置的下一個(gè)節(jié)點(diǎn),因此,在需要插入s結(jié)點(diǎn)的位置的上一個(gè)結(jié)點(diǎn)需要指向s結(jié)點(diǎn),故第三處應(yīng)該為“q->next=s;”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算正整數(shù)num的各位上的數(shù)字之積。例如,若輸入:252,則輸出應(yīng)該是:20。若輸入:202,則輸出應(yīng)該是:0。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2longfun(longnum)3{4/**********found**********/5longk;6do7{k*=num%10;8/************found************/9num\=10;10}while(num);11return(k);12}13main()14{longn;15printf(’’\nPleaseenteranumber:’’)scanf(’’%1d’’;,&n);16printf(’’\n%id\n’’,fun(n));}標(biāo)準(zhǔn)答案:(1)lonqk=1;(2)num/=10;知識(shí)點(diǎn)解析:(1)本題中函數(shù)的功能是計(jì)算正整數(shù)num各個(gè)位上的數(shù)字之積。首先要對(duì)正整數(shù)進(jìn)行截取,取得該正整數(shù)的各個(gè)位上的數(shù)字,然后對(duì)求得的數(shù)進(jìn)行累積。(2)從已給定源程序的main主函數(shù)入手,通過(guò)鍵盤輸入一個(gè)正整數(shù)n,語(yǔ)句“printf(’’\n%1d\n”,fun(n));”調(diào)用fun函數(shù)求得n各個(gè)位上的數(shù)字之積。(1)第一個(gè)錯(cuò)誤標(biāo)識(shí)下的k是函數(shù)的返回值,子函數(shù)fun中在執(zhí)行“k*=num%10;”之前,只進(jìn)行了定義,卻沒有賦初值,編譯時(shí)會(huì)警告變量在使用之前沒有初始化k。k代表了各個(gè)位上的數(shù)字之積,其初值應(yīng)為1。因此,第一個(gè)標(biāo)識(shí)下的“l(fā)ongk;”改為“l(fā)ongk=1;”。(2)第二個(gè)標(biāo)識(shí)下的符號(hào)“\”是非法字符,根據(jù)題意,這里應(yīng)該是進(jìn)行除法運(yùn)算,所以“num\=10;”應(yīng)該改為“num/=10;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:計(jì)算n門課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。例如:若有5門課程的成績(jī)是:90.5,72,80,61.5,55。則函數(shù)的值為:71.80。注意:部分源程序存在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。1#include<stdio.h>2floatfun(float*a,intn)3{4}5main()6{floatscore[30]={90.5,72,80,61.5,55},aver;7voidNONO();8aver=fun(Score,5);9printf(’’\nAveragescoreis:%5.2f\n’’,aveE);10NONO();11}12voidNONO()13{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/14FILE*fp,*wf;15inti,j;16floataver,score[5];17fp;fopen(’’in.dat’’,¨r");18wf=fopen(’’out.dat’’,’’w’’);19for(i=0;i<10;i++){20for(j=0;j<5;j++)21fscanf(fp,’’%f,’’,&score[j]);22aver=fun(score,5);23fprintf(wf,’’%5.2f\n’’,aver);24}25fclose(fp);26fclose(wf);}標(biāo)準(zhǔn)答案:1inti;2floatave=0.0;3for(i=0;i<n;i++)ave=ave+a[i];4ave=ave/n;5returnave;知識(shí)點(diǎn)解析:該程序功能是計(jì)算n門課程的平均分,求解過(guò)程首先統(tǒng)計(jì)n門課的總分,然后根據(jù)總分求得平均分。(1)在函數(shù)中首先定義平均分的變量,并將其初始化值置為0。(2)然后在for循環(huán)中,求得所有成績(jī)的總分,并在總分的基礎(chǔ)上求得平均分。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共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#in02ude#defineN5typedefstructnode{intdata;structnode*next;;}NODE;voidfun(NODE*h){NODE*p,*q,*r;/**********iound**********/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*crearlist(inta[]){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h->hext=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;}voidOHtlist(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]={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)0或NULL(3)r知識(shí)點(diǎn)解析:函數(shù)fun的功能是將帶頭結(jié)點(diǎn)的單向鏈表逆置。第一空:“p=h->_____1_____;”對(duì)結(jié)點(diǎn)p進(jìn)行初始化,由審題分析可知,p初始化為鏈表的第二個(gè)結(jié)點(diǎn),即p->next,故第一空處應(yīng)為“next”。第二空:“if(p==2)retum;”如果鏈表只有一個(gè)結(jié)點(diǎn),無(wú)需逆置,即第二空處為“0”或“\0”或“NULL”。第三空:循環(huán)內(nèi)完成結(jié)點(diǎn)的指針指向前一個(gè)結(jié)點(diǎn),“r=q->next;”r已經(jīng)指向q的下一個(gè)結(jié)點(diǎn),“q->next=p;”將q結(jié)點(diǎn)指向鏈表的前一個(gè)結(jié)點(diǎn),“p=q;”是將p結(jié)點(diǎn)往后移動(dòng)一個(gè)結(jié)點(diǎn)位置,第三空處是q結(jié)點(diǎn)往后移動(dòng)一個(gè)結(jié)點(diǎn)位置,即第三空處為“r”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算s所指字符串中含有t所指字符串的數(shù)目,并作為函數(shù)值返回。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN80intfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){p=s;/************found************/r=p;while(*r)if(*r==*P){r++;p++;)elsebreak;/*********found**********/if(*r=0)n++;s++;}returnn;}main(){chara[N],b[N];intm;printf(”\nPleaseenterstringa:");gets(a);pr2ntf("\npleaseentersubstringb:");gets(b);m=fun(a,b);printf("\nThereaultis:m=%d\n",m);}標(biāo)準(zhǔn)答案:(1)r=t;(2)if(*r==0)知識(shí)點(diǎn)解析:函數(shù)的功能是計(jì)算字符串中含有某子串的數(shù)目。(1)根據(jù)“while(*r)if(*r=:=*p){r++;p++;}”可知該循環(huán)是比較r和p指向的字符串是否相等,本題的要求是計(jì)算字符串中含有某子串的數(shù)目,p指向的源字符串s,所以r應(yīng)指向的是字符串t,故第一標(biāo)識(shí)下應(yīng)改成“r=t;”。(2)根據(jù)題意第二標(biāo)識(shí)下“if(*r=0)”應(yīng)該是判斷r是否指向字符串尾,在C語(yǔ)言中,等于是用“==”標(biāo)識(shí),因此第二標(biāo)識(shí)下應(yīng)改成“if(*r==0)”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個(gè)字符串(每串的長(zhǎng)度不超過(guò)N),按順序合并組成一個(gè)新的字符串。例如,字符串?dāng)?shù)組中的M個(gè)字符串為AAAABBBBBBBCC則合并后的字符串的內(nèi)容應(yīng)是:AAAABBBBBBBCC。提示:strcat(a,b)的功能是將字符串b復(fù)制到字符串a(chǎn)的串尾上,成為一個(gè)新串。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。#include#include#defineM3#defineN20voidfun(chara[M][N],char*b){}main(){charw[M][N]={"AAAA","BBBBBBB","CC"),a[100];inti;voidNONO();printf("Thestring:\n");for(i=0;i標(biāo)準(zhǔn)答案:inti,j,k=0;for(i=0;i知識(shí)點(diǎn)解析:(1)二維字符數(shù)組第i行j列元素a[i][j],就是指針形式的*(*(a+i)+j)。因此,如果字符*(*(a+i)+j)是串的結(jié)束符,則說(shuō)明該字符串已經(jīng)結(jié)束。(2)當(dāng)一維字符數(shù)組存放完字符串中各字符后,必須在一維字符數(shù)組的尾字符處加一個(gè)結(jié)束符’\0’,才能把字符數(shù)組變成字符串。否則,字符數(shù)組就只能是非字符串的一般字符數(shù)組。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將a所指4×3矩陣中第k行的元素與第0行元素交換。例如,有下列矩陣:123456789101112若k為2,程序執(zhí)行結(jié)果為:789456123101112請(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=0ji<【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("Thearraybeforemov一ing:\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ù)體中沒有定義,肯定是在函數(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、下列給定程序中,函數(shù)fun的功能是:讀入一個(gè)字符串(長(zhǎng)度<20),將該字符串中的所有字符按ASCII碼值升序排序后輸出。例如,若輸入"edcba",則應(yīng)輸出"abcde"。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MOD11.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<string*h>#include<stdio*h>voidfun(chart[]){charc;inti,j;/*********found*********/for(i=str1en(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=str1en(t)一1;i;l一一)或for(i=str1en(t)一1;i>0;1一一)(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ù)組就是有序的。str1en函數(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、請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入"abc4Efg",則應(yīng)輸出"aBc4EFg"。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(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=;ss[i]!=’\0’;i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫*/if(i%2==1&&ss[i]>=’a’&&ss[i]<=’z’)ss[i]=ss[i]一32;}知識(shí)點(diǎn)解析:該題要求將給定字符串中奇數(shù)位置的字母轉(zhuǎn)換為大寫,需要先判斷奇數(shù)位置以及是否是小寫字母,如果是再通過(guò)其轉(zhuǎn)換方法進(jìn)行轉(zhuǎn)換。從C語(yǔ)言的學(xué)習(xí)中知道,只要將小寫字母減去32即轉(zhuǎn)成大寫字母,將大寫字母加上32即轉(zhuǎn)成小寫字母。本程序用if語(yǔ)句實(shí)現(xiàn)轉(zhuǎn)換功能。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將一副撲克牌編號(hào)為1,2,3,…,53,54,以某種特定的方式洗牌,這種方式是將這副牌分成兩半,然后將它們交叉,并始終保持編號(hào)為1的牌在最上方,如第一次這樣洗牌后的結(jié)果為:1,28,2,29,…,53,27,54。兩次洗牌后的結(jié)果為:1,41,28,15,2,42…,53,40,27,14,54。程序的功能是:輸出經(jīng)過(guò)n次這樣洗牌后的結(jié)果。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容,并把下畫線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.c中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inclucte<stdio.h>voidfun(inta[55],intn){inti,k;/*********found*********/int【1】[55];for(i=0;i<n;i++){for(k=1;k<=27;k++){b[2*k-1]=a[k];/*********found*********/b[【2】*k]=a[k+27];}for(k=1;k<=54;k++)/*********found*********/a[k]=【3】;}}main(){intm,a[55],i;for(i=1;i<55;i++)a[i]=i;printf("請(qǐng)輸入洗牌次數(shù):");scarlf("%d",&m);fun(a,m);for(i=1;i<55;i++)printf("%d,",a[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)b(2)2(3)b[k]知識(shí)點(diǎn)解析:填空1:for循環(huán)中使用了一個(gè)數(shù)組b,用來(lái)臨時(shí)存放交換位置后的撲克牌,C語(yǔ)言中變量需要先聲明后使用,所以填空(1)處需要聲明一個(gè)數(shù)組b。答案為b。填空2:第二個(gè)for循環(huán)是將數(shù)組a中前一半元素(即1-27編號(hào)的撲克牌)放入數(shù)組b的奇數(shù)位置,將數(shù)組a中的后一半元素(即28~54編號(hào)的撲克牌)放入數(shù)組b的偶數(shù)位置,實(shí)現(xiàn)撲克牌的交叉洗牌。所以填空(2)處是數(shù)組b的起始值為2的偶數(shù)下標(biāo)2k,答案為2。填空3:由于數(shù)組b屬于函數(shù)中的臨時(shí)變量,所以將數(shù)組a的元素交叉存儲(chǔ)到數(shù)組b后,還需要將數(shù)組b的元素依次賦值給數(shù)組a,第三個(gè)for循環(huán)實(shí)現(xiàn)的功能是將數(shù)組b賦值給數(shù)組a,所以填空(3)處需要填入對(duì)應(yīng)下標(biāo)為k的數(shù)組b的元素,答案為b[k]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n=8時(shí),輸入193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763、所得平均值為195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為5。請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>intfun(floatx[],intn)/*********found*********/intj,c=0;floatxa=0.0;for(j=0;j<n;j++)xa+=x[j]/n;printf("ave=%f\n",xa);for(j=0;j<n;j++)/*********found*********/if(x[j]=>xa)c++;returnc;}main(){floatx[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};system("cls");printf("%d\n",fun(x,8));}標(biāo)準(zhǔn)答案:(1){intj,c=0;floatxa=0.0;(2)if(x[j]>=xa)知識(shí)點(diǎn)解析:(1)本題著重考查考生對(duì)C語(yǔ)言基本語(yǔ)法以及比較運(yùn)算符的掌握情況。(2)本題中的第一個(gè)錯(cuò)誤:在C語(yǔ)言中,{}應(yīng)成對(duì)出現(xiàn),所以程序中的語(yǔ)句"intj,c=0;floatxa=0.0;"應(yīng)改為"{intj,c=0;floatxa=0.0;"或相同作用的語(yǔ)句;本題中的第二個(gè)錯(cuò)誤:在C語(yǔ)言中,判斷大于或等于的運(yùn)算符應(yīng)為>=,所以程序中的語(yǔ)句"if(x[j]=>xa)"應(yīng)改為"if(x[j]>=xa)"或相同作用的語(yǔ)句。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫一個(gè)函數(shù)voidfun(intm,intk,intxx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所指的數(shù)組中。例如,若輸入17,5,則應(yīng)輸出19、23、29、31、37。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>voidfun(intm,intk,intxx[]){}voidmain(){FILE*wf;intm,n,zz[1000];system("CLS");printf("\nPleaseentertwointegers:");scanf("%d%d",&m,&n);fun(m,n,zz);for(m=0;m<n;m++)printf("%d",zz[m]);printf("\n");/*********found*********/wf=fopen("out.dat","w");fun(17,5,zz);for(m=0;m<5;m++)fprintf(wf,"%d",zz[m]);fclose(wf);/*********found*********/}標(biāo)準(zhǔn)答案:voidfun(intm,intk,intxx[]){inti,j,n;for(i=m+1,n=0;n<k;i++)/*找大于m的素?cái)?shù),循環(huán)k次,即找出緊靠m的k個(gè)素?cái)?shù)*/{for(j=2;j<i;j++)/*判斷一個(gè)數(shù)是否為素?cái)?shù),如果不是,跳出此循環(huán),判斷下一個(gè)數(shù)*/if(i%j==0)break;if(j>=i)/*如果是素?cái)?shù),放入數(shù)組xx中*/xx[n++]=i;}}知識(shí)點(diǎn)解析:本題主要考查素?cái)?shù)的判定方法,如果一個(gè)數(shù)不能被除了1和其自身以外的數(shù)整除,則這個(gè)數(shù)為素?cái)?shù)。本程序使用循環(huán)語(yǔ)句控制需要判斷的數(shù),在循環(huán)體中判斷該數(shù)是否為素?cái)?shù),若是則存入數(shù)組xx中。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將形參給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符方式從此文本文件中逐個(gè)讀入并顯示在終端屏幕上。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:#include<stdio.h>voidfun(char*s,inta,doublef){/******found******/___1___fp;charch;fo=fopen("file1.txt","w");fprintf(fp,"%s%d%f\n",s,a,f);fclose(fp);fp=fopen("file1.txt","r");printf("\nTheresult:\n\n");ch=fgetc(fp);/******found******/while(!feof(___2___)){/******found******/putchar(___3___);ch=fgete(fp);}putchar(’\n’);fclose(fp);}main(){chara[10]="Hello!";intb=12345;doublec=98.76:fun(a,b,c);}標(biāo)準(zhǔn)答案:(1)FILE*(2)fp(3)ch知識(shí)點(diǎn)解析:填空1:由語(yǔ)句fopen("fle1.txt","r")可知,fp應(yīng)該是文件類型指針,因此本空應(yīng)該填寫FILE*。填空2:feof函數(shù)只能對(duì)文件類型數(shù)據(jù)進(jìn)行操作,因此本空填寫fp。填空3:putclaar()代表輸入一個(gè)字符,從ch=fgetc(fp)可以看出本題應(yīng)該填寫ch。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從高到低的順序找出前m(m≤10)名學(xué)生來(lái),并將這些學(xué)生的數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<string.h>#include<stdio.h>#include<malloc.h>#defineN10typedefstruetss{charnum[10];ints;}STU;STU*fun(STUa[],intm){STUb[N],*t;inti,j,k;/******found******/*t=calloe(m,sizeof(STU));for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++){for(i=j=0;i<N;i++)if(b[i].s>b[j].s)j=i;/******found******/t[k].num=b[j].num;t[k].s=b[j].s;b[j].s=0;}returnt;}outresuh(STUa[],F(xiàn)ILE*pf){inti;for(i=0;i<N;i++)fprintf(pf,"No=%sMark=%d\n",a[i].num,a[i].s);fprintf(pf,"\n、n");}voidmain(){STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}};STU*pOrder;inti,m;system("CLS");printf("*****THERESULT*****\n");outresult(a,stdout);printf("\nGivethenumberofthestudentswhohavebetterscore:");scanf("%d",&m);while(m>10){printf("\nGivethenumberofthestudentswhohavebetterscore:");seanf("%d",&m);}pOrder=fun(a,m);printf("*****THERESULT*****\n");printf("Thetop:\n");for(i=0;i<m;i++)printf("%s%d\n",pOrder[i].num,pOrder[i].8);free(porder);}標(biāo)準(zhǔn)答案:(1)t=(STU*)calloc(m,sizeof(STU));(2)t[k].num=b[j].num改為t[k]=b[j]知識(shí)點(diǎn)解析:(1)calloc函數(shù)用于分配內(nèi)存空間。其調(diào)用形式為(類型說(shuō)明符*)caLlloc(n,size),功能:在內(nèi)存動(dòng)態(tài)存儲(chǔ)區(qū)中分配n塊長(zhǎng)度為“size”字節(jié)的連續(xù)區(qū)域,函數(shù)的返回值為該區(qū)域的首地址,(類型說(shuō)明符*)用于強(qiáng)制類型轉(zhuǎn)換。calloc函數(shù)與malloc函數(shù)的區(qū)別在于calloc函數(shù)一次可以分配n塊區(qū)域。例如,ps=(structstu*)calloc(2,sizeof(structstu));,其中的sizeof(structstu)是求stu的結(jié)構(gòu)長(zhǎng)度。該語(yǔ)句的意思是:按stu的長(zhǎng)度分配兩塊連續(xù)區(qū)域,強(qiáng)制轉(zhuǎn)換為stu類型,并把其首地址賦予指針變量ps。在本題中不用考慮那么復(fù)雜,根據(jù)定義類型STUb[N],*t;就可以看出*t=calloc(m,sizeof(STU))中的錯(cuò)誤。(2)t[k].num=b[j].num的錯(cuò)誤旨在考查對(duì)結(jié)構(gòu)體概念的掌握和靈活應(yīng)用程度。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:找出成績(jī)最高的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最高分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#inelude<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#deftneN10typedefstructss/*定義結(jié)構(gòu)體*/{charnum[10];ints;}STU;fun(STUa[],STU*s){}voidmain(){FILE*wf;STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;inti;system("CLS");printf(*"*****Theoriginaldata*****");for(i=0;i<N;i++)printf("No=%sMark=%d\n",a[i].num,a[i].s);fu,n(a,&m);printf("*****THERESULT*****\n");printf("Thetop:%s,%d\n",m.num,m.s);/****************/wf=fopen("out.dat","w");fprintf(wf,"%s,%d",m.num,m.s);fclose(wf);/****************/}標(biāo)準(zhǔn)答案:fun(STUa[],STU*s){inti:*s=a[0];for(i=0;i<N;i++)/*找出成績(jī)最高的學(xué)生記錄*/if(s->s<a[i].s)*s=a[i];}知識(shí)點(diǎn)解析:本題考查:成績(jī)最高的學(xué)生記錄查找;for循環(huán)語(yǔ)句;if條件語(yǔ)句。本題的流程是先使s指向第1名學(xué)生,利用循環(huán)語(yǔ)句遍歷所有學(xué)生的成績(jī),利用條件語(yǔ)句判斷當(dāng)前學(xué)生成績(jī)是否最高,所以if語(yǔ)句的條件是s->s<a[i].s。此外,做題時(shí)應(yīng)該熟練掌握“指向運(yùn)算符”和“成員運(yùn)算符”的相關(guān)知識(shí),題中“s->s”等價(jià)于“(*s).s”。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)遞增有序鏈接。函數(shù)fun的功能是:把形參X的值放入一個(gè)新結(jié)點(diǎn)并插入到鏈表中,插入后各結(jié)點(diǎn)數(shù)據(jù)域的值仍保持遞增有序。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;VOidfun(SLIST*h,intx){SLIST*P,*q,*s;s=(SLIST*)malloc(sizeof(SLIST));/**********found***********/s一>data=___1____;q=h;p=h一>next;while(P!=NULL&&x>p一>data){/**********found***********/q=____2____;p=P一>next;}s一>next=p;/**********found***********/q一>rlext=___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;intX;inta[N]=(11,12,15,18,19,22,25,29);head=creat]jst(a);printf(“\nThelistbeforeinserting:\n”);outlist(head);printf(“\nEnteranumber:”);Scanf(“%d”,&x);fun(head,X);printf(“\nThelistafterinserting:\n”);outliSt(head);}標(biāo)準(zhǔn)答案:(1)x(2)p(3)s知識(shí)點(diǎn)解析:函數(shù)fun的功能是把形參x的值放入一個(gè)新結(jié)點(diǎn)并插入到鏈表中,插入后各結(jié)點(diǎn)數(shù)據(jù)域的值仍保持遞增有序。利用循環(huán)搜索鏈表,找到插入位置,將新結(jié)點(diǎn)插入到鏈表當(dāng)中。[解題思路]第一空:“s=(SLIST*)malloc(sizeof(SLIST));”顯然s是一個(gè)新結(jié)點(diǎn),第一空處是給新結(jié)點(diǎn)的數(shù)據(jù)域賦值x,因此第一空處應(yīng)該是“s-,data=x:”。第二空:循環(huán)“while(p!=NULL&&x>p->data)”是用來(lái)尋找插入位置,當(dāng)鏈表沒有結(jié)束且x仍然大于p所指向的結(jié)點(diǎn)的數(shù)據(jù)時(shí),就不斷的向鏈表后面搜索。在循環(huán)體內(nèi),語(yǔ)句“p=p一>next;”是找到下一個(gè)結(jié)點(diǎn)的地址,變量q用來(lái)保存當(dāng)前結(jié)點(diǎn)的地址,因此第二空處應(yīng)該是“q=p;”。第三空:“s->next=p;”將s插入鏈表當(dāng)中,s指向p,此時(shí)s結(jié)點(diǎn)已經(jīng)指向需要插入位置的下一個(gè)節(jié)點(diǎn),因此在需要插入s結(jié)點(diǎn)的位置的上一個(gè)結(jié)點(diǎn)需要指向s結(jié)點(diǎn),故第三處應(yīng)該為“q一>next=s;”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.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)!#includedoublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********found***********/t=1.0—1/i;/**********found***********/_____;}main(){intm;printf(“\nPleaseenterlintegernumbers:\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、編寫函數(shù)fun,它的功能是:利用以下所示的簡(jiǎn)單迭代方法求方程:cos(x)-x=0的一個(gè)實(shí)根。xn+1=cos(Xn)迭代步驟如下:(1)取x1初值為0.0;(2)x0=x1,把x1的值賦給x0;(3)x1=cos(x0),求出一個(gè)新的x1;(4)若x0.x1的絕對(duì)值小于0.000001,執(zhí)行步驟(5),否則執(zhí)行步驟(2);(5)所求x1就是方程cos(x)一x=0的一個(gè)實(shí)根,作為函數(shù)值返回。程序?qū)⑤敵鼋Y(jié)果Root=0.739086。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若下語(yǔ)句。#include#includedoublefun(){}main(){voidNONO();printf(“Root=%f\n”,fun());NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FTLE*wf;wf=fopen(“out.dat”,“w”);fprintf(wf,“%f\n”,fun());fclose(wf);}標(biāo)準(zhǔn)答案:floatx0,x1=0.0;do{x0=x1;x1=cos(x0);}while(fabs(x0一x1)>0.000001);returnx1;知識(shí)點(diǎn)解析:該程序功能是利用簡(jiǎn)單迭代方法求方程的一個(gè)實(shí)根。牛頓迭代法的求解思想是從一個(gè)初始值開始,逐步逼近所求方程的根。其具體過(guò)程是:將初始值代入迭代公式,得到一個(gè)迭代輸出值。再次迭代時(shí),將上一次的迭代輸出值當(dāng)作本次的迭代輸入。不斷重復(fù)以上過(guò)程,直到滿足題目要求為止。牛頓迭代公式為:Xn+1=Xn一f(x)/f’(x)。其求解過(guò)程在題干中已經(jīng)給出。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將帶頭節(jié)點(diǎn)的單向鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、6、8、10。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(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);}標(biāo)準(zhǔn)答案:(1)h一>next(2)p一>next(3)>=知識(shí)點(diǎn)解析:函數(shù)fun的功能是將帶頭節(jié)點(diǎn)的單向鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大排序,在fun函數(shù)內(nèi)采用的是選擇法排序。第一空:由審題分析可知,q從h的下一個(gè)元素開始尋找最小值,故第一空為“h->next”。第二空:由審題分析可知,while循環(huán)是在剩下的元素當(dāng)中找最小值,剩下的結(jié)點(diǎn)是由q指向的鏈表,q從p的后一個(gè)結(jié)點(diǎn)開始,故第二空處應(yīng)為“p->next”。第三空:“if(p->data【3】q->data)”是比較p結(jié)點(diǎn)和q結(jié)點(diǎn)數(shù)據(jù)的大小,如果p結(jié)點(diǎn)的數(shù)據(jù)比q結(jié)點(diǎn)的數(shù)據(jù)大,那么應(yīng)該將p結(jié)點(diǎn)和q結(jié)點(diǎn)的數(shù)據(jù)進(jìn)行交換,故第三空處應(yīng)為“>=”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includetypedefstructaa{intdata;structaa*next;}NODE;intfun(NODE*h){intmax=-l;NODE*p;/***********found**********/p=h;while(p){if(p->data>max)max=p->data;/***********found**********/p=h->next;}returnmax;}outresult(ints,FILE*pf){fprintf(pf,"\nThemaxinlink:%d\n",s);}NODE*creatlink(intn,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,FILE*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);outlink(head,stdout);m=fun(head);printf("\nTHERESULT:\n");outresult(m,stdout);}標(biāo)準(zhǔn)答案:(1)p=h一>next;(2)p=p一>next;知識(shí)點(diǎn)解析:函數(shù)功能是求單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值。其中,單鏈表查找最大值及最小值的方法主要是對(duì)單鏈表的遍歷,并在遍歷過(guò)程中將初始化的最大值、最小值與鏈表中的每一個(gè)結(jié)點(diǎn)的數(shù)據(jù)域進(jìn)行比較。(1)根據(jù)題干中求得除了頭結(jié)點(diǎn)之外的結(jié)點(diǎn)數(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)編寫函數(shù)劬,函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。例如,二維數(shù)組中的數(shù)據(jù)為:333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)是:333333334444444455555555。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。#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<n;i++)printf("%3d",a[i]);printf("\n\n");NONO();}voidNONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*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標(biāo)準(zhǔn)答案:inti,j;for(i=0;i知識(shí)點(diǎn)解析:該程序功能是將M行、N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中。本題中首先要清楚數(shù)組元素在通常情況下是按行存放的,而如果要實(shí)現(xiàn)按行存放,其對(duì)應(yīng)關(guān)系應(yīng)為:s[0][0],s[0][1],s[0][2],…,s[0][M—1],s[1][0],s[1][1],…,s[N-1][M-1]。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:計(jì)算x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過(guò)形參返回給主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,并在主函數(shù)中輸出。例如,有10個(gè)正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為30.500000。主函數(shù)中輸出m=30。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#defineN10doublefun(doublex[],double*av){inti,j;doubled,s;s=0;for(i=0;i<N;i++)s=s+x[i];/*********found*********/【1】=s/N;d=32767;for(i=0;i<N;i++)if(x[i]<*av&&av-x[i]<=d){/*********found*********/d=*av-x[i];j=【2】;}/*********found*********/return【3】;}main(){inti;doublex[N],av,m;for(i=0;i<N;i++){x[i]=rand()%50;printf("%4.0f",x[i]);}printf("\n");m=fun(x,&av);printf("\nTheaVerageis:%f\n",av);printf("m=%5.1f",m);printf("\n");}標(biāo)準(zhǔn)答案:(1)*av(2)i(3)x[j]知識(shí)點(diǎn)解析:填空1:從原程序中可以看出*av代表的是平均值,而s/N表示的就是平均值,因此本空應(yīng)該填*av。填空2:if語(yǔ)句來(lái)判斷找最接近平均值的數(shù),因而此空應(yīng)該填i。填空3:題目要求將小于平均值且最接近平均值的數(shù)作為函數(shù)返回,而j表達(dá)的是最接近平均值的數(shù)在數(shù)組中的下標(biāo),因而本空應(yīng)該填寫x[j]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:先從鍵盤上輸入一個(gè)3行、3列的矩陣的各個(gè)元素的值,然后輸出主對(duì)角線元素之和。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(){inta[3][3],sum;inti,j;/*********found*********/sum=1;for(i=0;i<3;i++){for(j=0;j<3;j++)/*********found*********/scanf("%d",a[i][j]);}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%d\n",sum);}voidmain(){fun();}標(biāo)準(zhǔn)答案:(1)sum=0;(2)scanf("%dt",&a[i][j]);知識(shí)點(diǎn)解析:該題考查對(duì)循環(huán)語(yǔ)句的掌握和對(duì)數(shù)組概念的理解。本題的解題思路為:先從鍵盤輸入一個(gè)3×3矩陣,然后循環(huán)累加,執(zhí)行循環(huán)語(yǔ)句中的sum=sum+a[i][i];。因?yàn)樽兞縮um用來(lái)存放累加后的結(jié)果,所以應(yīng)對(duì)其初始化為0。第二處錯(cuò)誤考查標(biāo)準(zhǔn)輸入函數(shù)scanf的格式,被賦值的變量前要加上取地址符"&"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編函數(shù)fun,其功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換成與其面值相同的長(zhǎng)整型整數(shù)。可調(diào)用strlen函數(shù)求字符串的長(zhǎng)度。例如:在鍵盤輸入字符串2345210,函數(shù)返回長(zhǎng)整型數(shù)2345210。注意:部分源程序存在PROG1.C中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun指定的部位填入所編寫的若干語(yǔ)句。試題程序:#include<stdio.h>#include<string.h>voidNONO();longfun(char*s){}main(){chars[10];longr;printf("請(qǐng)輸入一個(gè)長(zhǎng)度不超過(guò)9個(gè)字符的數(shù)字字符串:");gets(s);r=fun(s);printf("r=%ld\n",r);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti;longr;chars[10],*p;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fgets(s,10,fp);P=strchr(s,’\n’);if(p)*p=0;r=fun(s);fprintf(wf,"%ld\n",r);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:longfun(char*s){inti,len;longsum=0;len=strlen(s);for(i=0;i<len;i++){sum=sum*10+*s-’0’;s++;}returnsum;}知識(shí)點(diǎn)解析:要把一個(gè)數(shù)字字符轉(zhuǎn)為相應(yīng)的數(shù)字,只要用它的ASCII碼減去48即可。要把數(shù)字字符串轉(zhuǎn)為相應(yīng)的數(shù)字,則要從左到右依次取出字符轉(zhuǎn)為相應(yīng)數(shù)字,乘10再加上下一位數(shù)字。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、人員的記錄由編號(hào)和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號(hào)唯一。函數(shù)fun的功能是:找出指定編號(hào)人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號(hào)不存在,返回?cái)?shù)據(jù)中的編號(hào)為空串。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN8typedefstruct{charnum[10];intyear,month,day;}STU;/*********foun
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年服裝設(shè)計(jì)(時(shí)尚服裝設(shè)計(jì))試題及答案
- 2026年美甲設(shè)計(jì)(漸變案例)試題及答案
- 2025年中職園林技術(shù)(綠化工程施工)試題及答案
- 2025年大學(xué)藥物制劑(藥物制劑理論)試題及答案
- 2025年高職電工電子技術(shù)(電路故障排查)試題及答案
- 2025年大學(xué)農(nóng)業(yè)(農(nóng)業(yè)生態(tài)學(xué))試題及答案
- 2026年寫字樓物業(yè)(辦公設(shè)施維護(hù))試題及答案
- 中央醫(yī)院科普大賽
- 送女朋友的520祝福語(yǔ)參考
- 近十年北京中考數(shù)學(xué)試題及答案2025
- 大數(shù)據(jù)分析在供熱中的應(yīng)用方案
- 污泥安全管理制度范本
- 開題報(bào)告范文基于人工智能的醫(yī)學(xué)像分析與診斷系統(tǒng)設(shè)計(jì)
- 大黃附子細(xì)辛湯課件
- 《人間充質(zhì)基質(zhì)細(xì)胞來(lái)源細(xì)胞外囊泡凍干粉質(zhì)量要求》(征求意見稿)
- 中潤(rùn)盛和(孝義)新能源科技 孝義市杜村鄉(xiāng)分散式微風(fēng)發(fā)電項(xiàng)目可行性研究報(bào)告
- 入團(tuán)申請(qǐng)書教學(xué)課件
- 2026年中國(guó)農(nóng)業(yè)銀行秋季校園招聘即將開始考試筆試試題(含答案)
- 山東濟(jì)南2019-2024年中考滿分作文87篇
- (2025年標(biāo)準(zhǔn))sm調(diào)教協(xié)議書
- 醫(yī)院急救應(yīng)急體系構(gòu)建與實(shí)施
評(píng)論
0/150
提交評(píng)論