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

下載本文檔

版權(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ī)試(操作題)模擬試卷63(共9套)(共27題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:把形參a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a(bǔ)所指數(shù)組元素中的次大值放在a[2]中,把a(bǔ)數(shù)組元素中的次小值放在a[3]中;其余以此類推。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:1、4、2、3、9、6、5、8、7,則按規(guī)則移動(dòng)后,數(shù)據(jù)排列為:9、1、8、2、7、3、6、4、5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個(gè)數(shù)。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#irlclude#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+1];a[i+1]=min;a[pn]=t;)}}main(){intb[N]={1,4,2,3,9,6,5,8,7),i;printf(“\nTheoriginaldata:\n”);for(o=0;i標(biāo)準(zhǔn)答案:(1)*a(2)2(3)j+1知識(shí)點(diǎn)解析:本題中函數(shù)的功能是將數(shù)組中的元素下標(biāo)為偶數(shù)的元素按照從大到小排序,下標(biāo)為奇數(shù)的元素按照從小到大排序,相當(dāng)于2個(gè)排序過(guò)程。在fun函數(shù)中,采用選擇排序法進(jìn)行排序,分別用max和min存儲(chǔ)每次尋找的最大值和最小值,px和pn記錄每次查找到的最大值和最小值的下標(biāo)位置。[解題思路]第一窄:主函數(shù)內(nèi)fun函數(shù)的調(diào)用“fun(b,N);”,其中b為整型數(shù)組名,故fun函數(shù)的第一參數(shù)為整型指針,又根據(jù)“max=a[j]”可知第一個(gè)參數(shù)名為a,故第一空處為“*a”。第二空:根據(jù)題意a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a(bǔ)所指數(shù)組元素中的次大值放在a[2]中,把a(bǔ)數(shù)組元素中的次小值放在a[3]中,升序排序和降序排序的下標(biāo)變化是每次在前一次的基礎(chǔ)上+2,即a[0]、a[2]、a[4]…降序排序,a[1]、a[3]、a[5]…升序排序,故第二空應(yīng)為“2”。第三空:選擇排序法中的升序排序,首先從數(shù)組中挑選一個(gè)最小的元素,把它和第一元素交換,接著從剩下的n-1個(gè)元素中再挑出一個(gè)最小的元素,把它和第二個(gè)元素交換,不斷重復(fù)以上過(guò)程,直到比較完最后兩個(gè)元素。故內(nèi)層循環(huán)變量i應(yīng)該從i+1開(kāi)始,因此第三空處應(yīng)為“i+1”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODII.C中函數(shù)fun的功能是:在字符串的最前端加入n個(gè)*號(hào),形成新串,并且覆蓋原串。注意:字符串的長(zhǎng)度最長(zhǎng)允許為79。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(chars[],intn){chara[80],*P;inti;/**********found***********/S=P;for(i=0;i標(biāo)準(zhǔn)答案:(1)p=s;(2)while(*p++);知識(shí)點(diǎn)解析:在字符串的最前端加入n個(gè)“*”號(hào),形成新串,并且覆蓋原串。然后通過(guò)“printf(“\nThestringafterinsert:\"%s\"\n”,s);”函數(shù)直接輸出結(jié)果。[解題思路](1)變量初始化應(yīng)是將形參數(shù)組地址s傳給工作指針p。因此,應(yīng)將“s=p;”改為“p=s;”。(2)dowhile循環(huán)的目的是把p指向的字符串內(nèi)容拷貝到a字符串的后面,但第二標(biāo)識(shí)下while語(yǔ)句沒(méi)有使用分號(hào),故第二標(biāo)識(shí)下應(yīng)改成“while(*p++):”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:求出1到1000之間能被7或11整除、但不能同時(shí)被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#inCludevoidfun(int*a,int*n){}msin(){intaa[1000],n,k;VOidNONO();fun(aa,&n);for(k=0;k標(biāo)準(zhǔn)答案:inti;*n=0;for(i=7;i<1000;i++)if(((i%7)==0||(i%11)==0)&&(i%77)!=0)a[(*n)++]=i;知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),判斷是否被7整除→判斷是否被11整除→并且不被77整除→按要求返回計(jì)算結(jié)果,首先,*n置0,設(shè)置為累計(jì)器,計(jì)算符合條件的數(shù)的個(gè)數(shù)。然后,通過(guò)循環(huán),判斷小于1000的每一個(gè)整數(shù)是否符合題干中的要求。其中的判斷條件能否被7或者被11整除為i%7==0‖i%11==0,不能被11和7同時(shí)整除為i%77!=0,它們之間的并關(guān)系就用&&連接,最后結(jié)果即為(i%7==0‖i%11=0)&&i%77!=0。最后,將符合條件的整數(shù)存入數(shù)組a中,同時(shí)對(duì)*n進(jìn)行自加,返回結(jié)果。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:有N×N矩陣,以主對(duì)角線為對(duì)稱線,對(duì)稱元素相加并將結(jié)果存放在左下三角元素中,右上三角元素置為0。例如,若N=3,有下列矩陣:123456789計(jì)算結(jié)果為10065010149請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN4/**********found**********/voidfun(int(*t)_____1_____){inti,j;for(i=1;i標(biāo)準(zhǔn)答案:(1)[N](2)t[i][j](3)t[j][i]知識(shí)點(diǎn)解析:第一空:在主函數(shù)中fun函數(shù)的調(diào)用形式是“fun(t);”,t是數(shù)組名,故fun函數(shù)的參數(shù)是指針,因此第一空處應(yīng)為“[N]”。第二空:“_____1_____=t[i][j]+t[i][i];”是將對(duì)稱元素相加存放在左下三角元素中,左下三角元素可表示為t[i][j],故第二二空處應(yīng)為“t[i][i]”。第三空:“_____3_____=0;”是將右上三角元素置0,右上三角元素可表示為tD][i],故第三空為“t[j][i]”二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算函數(shù)(x,y,z)=(x+y)/(x.y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。例如,當(dāng)x的值為9、y的值為11、z的值為15時(shí),函數(shù)值為-3.50。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#include#include/**********found**********/#defineFU(m,n)(m/n)floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a—b)+FU(c+b,C—b);/**********found**********/Return(Value);}main(){floatx,y,z,sum;printf("Inputxyz:");scanf("%f%f%f",&x,&y,&z);printf("x=%f,y=%f,z=%f\n",x,y,z);if(x==y||y==z){printf("Dataerror!\n");exit(0);}sum=fun(x,y,z);printf("Theresultis:%5.2f\n",sum);}標(biāo)準(zhǔn)答案:(1)#defineFU(m,n)((m)/(n))(2)return(value);知識(shí)點(diǎn)解析:(1)函數(shù)fun兩次調(diào)用宏FU來(lái)計(jì)算“value=FIJ(a+b,a-b)+FU(c+b,c-b);”。檢查宏的定義是否正確,可以用實(shí)參代入宏進(jìn)行展開(kāi):(a+b/a-b),由此看到,F(xiàn)U(a+b,a-b)進(jìn)行的計(jì)算不是(a+b)/(a-b),而是(a+b/a-b),因?yàn)椤?”的優(yōu)先級(jí)高于“+”或“-”,所以要使用括號(hào)限定計(jì)算優(yōu)先順序。所以將“#defineFU(m,n)(rn/n)”改為“#defineFU(m,n)((m)/(n))”。(2)第二個(gè)標(biāo)識(shí)下返回語(yǔ)句的關(guān)鍵字有誤。所以,第二個(gè)標(biāo)識(shí)下“Return(value);”應(yīng)該改為“retum(value);”,C語(yǔ)言中沒(méi)有“Retum”這個(gè)關(guān)鍵字。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、規(guī)定輸入的字符串只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和尾部的*號(hào)不刪除。例如,字符串中的內(nèi)容為:********A*BC*DEF*G****,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*DEF*G****。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#includevoidfun(char*a){}main(){charS[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thesiririgafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(0ut,"%s\n",s);}fclose(in);fclose(out);標(biāo)準(zhǔn)答案:intj=0;char*p=a;while(*p==’*’)p++;while(*p){a[j++]=*p;p++;}a[j]=’\0;;知識(shí)點(diǎn)解析:(1)首先,使用一個(gè)指針p指向串的起始位置,然后對(duì)指針p指向的字符進(jìn)行判斷,并且如果是“*”,那么跳過(guò)該字符,這樣確定了由頭開(kāi)始的第一個(gè)非“*”的位置。(2)然后,在循環(huán)過(guò)程中將第一個(gè)非“*”字符起始到串尾的字符拷貝到字符串a(chǎn)。(3)最后,在新生成的字符串尾加’\0’。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將帶頭結(jié)點(diǎn)的單向鏈表逆置。即若原鏈表中從頭至尾結(jié)點(diǎn)數(shù)據(jù)域依次為:2、4、6、8、10,逆置后,從頭至尾結(jié)點(diǎn)數(shù)據(jù)域依次為:10、8、6、4、2。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#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,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(pffi=NULL)printf("ThelistisNULL!\n");else(printf("inHead"),do{printf("->%d",P->data);P=P->next;}while(P!=NULL);printf("->Endin");}}main(){NODE*head;inta[N]={2,4,6,8,10);head=creatlist(a);printf("inTheoriginallist:in");outlist(head);fun(head);printf("\nThelistafterinverting:in");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__)return;”如果鏈表只有一個(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(*17=0)n++;s++;}returnn;}main(){chara[N],b[N];intm;printf("\nPleaseenterstringa:");gets(a);printzf("\nPleaseentersubstringb:");gets(b);m=fun(a,b);printf("\nTheresult:is:m=%d\n",n);}標(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)編寫(xiě)函數(shù)fun,函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個(gè)字符串(每串的長(zhǎng)度不超過(guò)N),按順序合并組成一個(gè)新的字符串。例如,字符串?dāng)?shù)組中的M個(gè)字符串為AAAABBBBBBBCC則合并后的字符串的內(nèi)容應(yīng)是:AAAABBBBBBBCC。提示:streat(a,b)的功能是將字符串b復(fù)制到字符串a(chǎn)的串尾上,成為一個(gè)新串。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#include#include#defineM3#defineN20voidfun(chara[M][N],char*b){}main(){charw[M][N]=["AAAA","BBBBBBB","CC"},a[100];int:i;voidNONO();printf("Thestrincj:\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ī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來(lái)從高位到低位的順序組成一個(gè)新數(shù),作為函數(shù)值返回。例如,從主函數(shù)輸入一個(gè)整數(shù)27638496,則函數(shù)返回值為26846。請(qǐng)?jiān)诔绦虻南庐?huà)線處填入正確的內(nèi)容并將下畫(huà)線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>unsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;/*********found*********/i=【1】;/*********found*********/while(【2】){t=s%10;if(t%2==0){/*********found*********/x=x+t*i;i=【3】;}s=s/10;}returnx;}main(){unsignedlongn=-1;while(n>99999999‖n<0){printf("Pleaseinput(0<n<100000000):");scanf("%ld",&n);}printf("\nTheresultis:%ld\n",fun(n));}標(biāo)準(zhǔn)答案:(1)1(2)s>0(3)i*10知識(shí)點(diǎn)解析:填空1:變量i用來(lái)控制被取出的偶數(shù)在新數(shù)中的位置,應(yīng)賦初值1。填空2:while語(yǔ)句的循環(huán)條件是s>0。填空3:變量i用來(lái)標(biāo)識(shí)個(gè)位、百位和千位等。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:從s所指字符串中,找出t所指字符串的個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)s所指字符串中的內(nèi)容為“abcdabfab”,t所指字符串的內(nèi)容為“ab”,則函數(shù)返回整數(shù)3。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>intfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){p=s;r=t;while(*r)/*********found*********/if(*r=*p){r++;p++}elsebreak;/*********found*********/if(r==’\0’)n++;s++;}returnnj}voidmain(){chars[100],t[100];int:m;system("CLS");printf("\npleaseenterstrings:");Scanf("%s",s);printf("\nPleaseentersubstringt:");scanf("%s",t);m=fun(s,t);printf("\nTheresultis:m=%d\n",m);}標(biāo)準(zhǔn)答案:(1)if(*r==*p){r++;p++;)(2)if(*r==’\0’)知識(shí)點(diǎn)解析:本題考查:if語(yǔ)句,考生需要根據(jù)題意確定if語(yǔ)句的判斷條件;字符串結(jié)束標(biāo)識(shí),所有的字符串都要以‘\0’結(jié)尾,上機(jī)考試??贾R(shí)點(diǎn),考生一定要牢記;復(fù)合賦值運(yùn)算,常用于循環(huán)控制和變量的累加、累乘。從字符串s中找出子串t的方法是:從第1個(gè)字符開(kāi)始,對(duì)字符串進(jìn)行遍歷,若s串的當(dāng)前字符等于t串的第1個(gè)字符,兩個(gè)字符串的指針自動(dòng)加1,繼續(xù)比較下一個(gè)字符;若比較至字符串t的結(jié)尾,則跳出循環(huán);若s串的字符與t串的字符不對(duì)應(yīng)相同,則繼續(xù)對(duì)s串的下一個(gè)字符進(jìn)行處理。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,其功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0~P(含P,P小于等于n—1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內(nèi)容為:1、2、3、4、5、6、7、8、9、10;P的值為3。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為:5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#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("\nThedataaftermouing:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");}標(biāo)準(zhǔn)答案:Voidfun(int*w,intp,intn){intx,j,ch;for(x=0;x<=p;x++){ch=w[0];for(j=1;j<n;j++)/*通過(guò)for循環(huán)語(yǔ)句,將p+1到n—1(含n一1)之間的數(shù)組元素依次向前移動(dòng)p+1個(gè)存儲(chǔ)單元*/{w[j一1]=w[j];}w[n—1]=ch;/*將0到p個(gè)數(shù)組元素逐一賦給數(shù)組w[n一1]*/}}知識(shí)點(diǎn)解析:本題要求把下標(biāo)從0~p(含p,p小于等于n—1)的數(shù)組元素平移到數(shù)組的最后,可以根據(jù)輸入的p值,通過(guò)for循環(huán)語(yǔ)句,將p+1~n—l(含n—1)之間的數(shù)組元素依次向前移動(dòng)p+1個(gè)存儲(chǔ)單元,即w[j一1]=w[j];,同時(shí)將0~p個(gè)數(shù)組元素逐一賦給數(shù)組w[n—1],也就是通過(guò)語(yǔ)句w[n一1]=ch;來(lái)實(shí)現(xiàn)此操作的。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:有N×N矩陣,將矩陣的外圍元素順時(shí)針旋轉(zhuǎn)。操作順序是:首先將第一行元素的值存入臨時(shí)數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,最后一列成為最后一行,臨時(shí)數(shù)組中的元素成為最后一列。例如,若N=3,有下列矩陣:123456789計(jì)算結(jié)果為741852963請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN4voidfun(int(*t)[N]){intj,r[N];for(j=0;j=0;_____2_____)t[N一1][N一1一j]=t[j][N一1];for(j=N一1;j>=0;j--)/**********found**********/t[j][N一1]=r[_____3_____];}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("\nTheoriginalarray:\n");for(i=0;i標(biāo)準(zhǔn)答案:(1)0(2)j--(3)j知識(shí)點(diǎn)解析:第一空:由審題分析可知,此處是使第一列成為第一行,即把第一列元素移動(dòng)到第一行,第一列元素是t[j][0],第一行元素是t[0][N-j-1],故第一空處應(yīng)為“0”。第二空:第四個(gè)循環(huán)是最后一列成為最后一行,即將最后一列移動(dòng)到最后一行,“for(j=N-1;j>=0;___2___)”循環(huán)變量j從N-1開(kāi)始,到0結(jié)束,共循環(huán)N次,故j每次減一,第三空處是“i--”。第三空:最后一個(gè)循環(huán)將臨時(shí)數(shù)組中的元素成為最后一列,即t[j][N-1]=r[j],故第三空處應(yīng)為“j”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將m(1≤m≤10)個(gè)字符串連接起來(lái),組成一個(gè)新串,放入pt所指存儲(chǔ)區(qū)中。例如:把3個(gè)串:"abc","CD","EF"連接起來(lái),結(jié)果是"abcCDEF"。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(charstr[][10],intm,char*pt){/************found************/Intk,q,i;for(k=0;k標(biāo)準(zhǔn)答案:(1)intk,q,i;(2)pt[i]=str[k][i];知識(shí)點(diǎn)解析:(1)第一標(biāo)識(shí)下是整型變量k、q和i的定義,根據(jù)C語(yǔ)言中整型變量的定義方式,第一標(biāo)識(shí)下應(yīng)為“intk,q,i;”。(2)第二個(gè)標(biāo)識(shí)下的“pt[i]=str[k,i];”語(yǔ)句應(yīng)該將str中的字符依次拷貝到pt中,根據(jù)C語(yǔ)言中對(duì)二維數(shù)組每一位的取值,應(yīng)該是str[k][i],所以“pt[i]=str[k,i];”改為“pt[i]=str[k][i];”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較長(zhǎng)的字符串。若兩個(gè)字符串長(zhǎng)度相同,則返回第一個(gè)字符串。請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較長(zhǎng)的字符串。若兩個(gè)字符串長(zhǎng)度相同,則返回第一個(gè)字符串。例如,輸入beijingshanghai(為回車鍵),函數(shù)將返回shanghai。注意:部分源程序存在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#includechar*fun(char*s,char*t){}main(){chara[20],b[20];voidNONO();printf("Input1thstring:");gets(a);printf("Input2thstring:");gets(b);printf("%s\n",fun(a,b));NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti;chara[20],b[20];fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%s%s",a,b);fprintf(wf,"%s\n",fun(a,b));}fcclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:inti;char*p=s,*q=t;intn=0,m=0;while(*p)//計(jì)算串s的長(zhǎng)度n,其中p為臨時(shí)指針{n++;p++;}while(*q)//計(jì)算串t的長(zhǎng)度m,其中q為臨時(shí)指針{m++;q++;}if(n>=m)//比較m和n的值,設(shè)置p指向較大的指針p=s;elsep=t;returnp;知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:(1)首先求得字符串的長(zhǎng)度,設(shè)變量n和m分別用來(lái)求字符串的長(zhǎng)度,初值設(shè)為0,把字符串中的字符逐個(gè)訪問(wèn),每訪問(wèn)一個(gè)字符,n和m分別加1,直到字符串結(jié)束。(2)使用兩個(gè)臨時(shí)指針變量p、q分別作為訪問(wèn)字符串的變量。(3)根據(jù)m和n的值返回串,設(shè)置指針p,指向返回串的開(kāi)始地址。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的最小值放在元素a[0]中,接著把a(bǔ)所指數(shù)組中的最大值放在a[1]元素中;再把a(bǔ)所指數(shù)組元素中的次小值放在a[2]中,把a(bǔ)所指數(shù)組元素中的次大值放在a[3],依此類推。例如,若a所指數(shù)組中的數(shù)據(jù)最初排列為:9,1,4,2,3,6,5,8,7;則按規(guī)則移動(dòng)后,數(shù)據(jù)排列為:1,9,2,8,3,7,4,6,5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個(gè)數(shù)。規(guī)定fun函數(shù)中的max存放當(dāng)前所找的最大值,px存放當(dāng)前所找最大值的下標(biāo)。請(qǐng)?jiān)诔绦虻南庐?huà)線處填入正確的內(nèi)容并將下畫(huà)線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN9voidfun(inta[],intn){inti,j,max,min,pxr,pn,t;for(i=0;i<n-1;i+=2){/*********found*********/max=min=【1】px=pn=i;for(j=i+1;j<n;j++){/*********found*********/if(max<【2】){max=a[j];px=j;)/*********found*********/if(min>【3】){min=a[j];pn=j;)}if(pn!=i)‘{t=a[i];a[i]=min;a[pn]=t;if(px==i)px=pn;}if(px!=i+1){t=a[i+1];a[i+1]=max;a[px]=t;)}}voidmain(){intbin]={9,1,4,2,3,6,5,8,7},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");}標(biāo)準(zhǔn)答案:(1)a[i](2)a[j](3)a[j]知識(shí)點(diǎn)解析:填空1:for循環(huán)語(yǔ)句循環(huán)體中將數(shù)組元素a[i]賦值給變量max和變量min。填空2:通過(guò)一次for循環(huán),找到數(shù)組中的最大值,if語(yǔ)句的條件表達(dá)式是max<a[j]。填空3:同理,此處if語(yǔ)句的條件表達(dá)式是min>a[i]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,fun函數(shù)的功能是:分別統(tǒng)計(jì)字符串中大寫(xiě)字母和小寫(xiě)字母的個(gè)數(shù)。例如,給字符串s輸入:AAaaBBbb123CCcccd,則應(yīng)輸出:upper=6,lower=8。請(qǐng)改正程序中的錯(cuò)誤,使它得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>/*********found*********/voidfun(char*s,inta,intb){while(*s){if(*s>=’A’&&*s<=’Z’)/*********found*********/*a=a=a+1;if(*s>=’a’*&&s<=’z’)/*********found*********/*b=b+1;s++;}}main(){chars[100];intupper=0,lower=0;printf("\nPleaseastring:");gets(s);fun(s,&upper,&lower);printf("\nupper=%dlower=%d\n",upper,lower);}標(biāo)準(zhǔn)答案:(1)voidfun(char*s,int*a,int*b)(2)*a=*a+1;(3)*b=*b+1;知識(shí)點(diǎn)解析:(1)由主函數(shù)中調(diào)用fun函數(shù)的語(yǔ)句fun(s,&upper,&lower)可知,函數(shù)的后兩個(gè)變量為指針的形式,所以用*a和*b。(2)*a的作用是用來(lái)記錄大寫(xiě)字母的個(gè)數(shù),此處的作用是對(duì)*a累加1,所以此處應(yīng)改為*a=*a+1。(3)*b的作用是用來(lái)記錄小寫(xiě)字母的個(gè)數(shù),此處的作用是對(duì)*b累加1,所以此處應(yīng)改為*b=*b+1。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫(xiě)函數(shù)fun,其功能是:根據(jù)以下公式計(jì)算S,并將計(jì)算結(jié)果作為函數(shù)值返回,n通過(guò)形參傳入。例如,若n的值為11時(shí),函數(shù)的值為1.833333。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){intn;floats;system("CLS");printf("\nPleaseenterN:");scanf("%d“,&n);s=fun(n);printf("Theresultis:%f\n",s);}標(biāo)準(zhǔn)答案:floatfun(intn){inti,s1=0;floats=0.0;for(i=1;i<=n;i++){s1=s1+i;/*求每一項(xiàng)的分母*/s=s+1.0/s1;/*求多項(xiàng)式的值*/}returns;}知識(shí)點(diǎn)解析:此類計(jì)算表達(dá)式值的程序,首先需要根據(jù)題意分析表達(dá)式的規(guī)律,得出通項(xiàng),然后再完成程序語(yǔ)句。本題中表達(dá)式的規(guī)律是1+2+…+n的倒數(shù)之和,那么可以通過(guò)for循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)第1項(xiàng)到第n項(xiàng)的變化。其實(shí)就是累加算法,方法是先根據(jù)題目要求定義變量,注意該變量的數(shù)據(jù)類型,然后對(duì)其進(jìn)行初始化操作,因?yàn)樵撟兞康淖饔檬抢奂悠?,所以初始值?yīng)為0(或0.0,根據(jù)變量數(shù)據(jù)類型來(lái)確定),再通過(guò)for循環(huán)語(yǔ)句來(lái)完成累加過(guò)程。本題中s1用來(lái)表示每一項(xiàng)的分母,每一項(xiàng)的分母都是由前一項(xiàng)分母加項(xiàng)數(shù)。注意,由于s1定義成一個(gè)整型,所以在s=國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計(jì)算形參x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指數(shù)組中大于平均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動(dòng)后的數(shù)據(jù)。例如,有10個(gè)正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為30.500000。移動(dòng)后的輸出為:46、32、40、45、48、30、6、17、15、26。請(qǐng)?jiān)诔绦虻南庐?huà)線處填入正確的內(nèi)容并把下畫(huà)線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#defineN10doublefun(double*x){inti,j;doubles,av,y[N];s=0;for(1=0;i<N;i++)s=s+x[i];/*********found*********/if(x[i]!=【3】)y[j++]=x[i];for(i=0;i<N;i++)x[i]=y[i];returnav;}main(){intifdoublex[N];{x[i]=rand()%50;printf("%4.Of",x[i]);}printf("\n");printf("\nTheaverageis:%f\n",fun(x));printf("\nTheresult:\n",fun(x));for(i=0;i<N;i++)printf("005.0f",x[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)s/N(2)j++(3)-1知識(shí)點(diǎn)解析:填空1:由原程序可知,av代表的是平均值,而平均值的求法是所有數(shù)的總和除以數(shù)的個(gè)數(shù),因而本空應(yīng)該填寫(xiě)s/N。填空2:y數(shù)組代表暫時(shí)存放x數(shù)組,if(x[i]>av)表達(dá)的是當(dāng)x數(shù)組中的數(shù)大于平均值時(shí),應(yīng)該把這些大于平均值的數(shù)放在y數(shù)組的前半部分,因而此空應(yīng)該填y[j++]。填空3:此空表明當(dāng)x[i]不等于什么時(shí),x[i]中的數(shù)要賦值給y數(shù)組,由題意可知此空只能填寫(xiě)-1。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序的功能是:讀入一個(gè)英文文本行,將其中每個(gè)單詞的第一個(gè)字母改成大寫(xiě),然后輸出此文本行(這里”單詞”是指由空格隔開(kāi)的字符串)。例如,若輸入"Iamastudenttotaketheexamination",則應(yīng)輸出"IAmAStudentToTakeTheExamination"。請(qǐng)改正程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)nwn函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<string.h>#include<conio.h>#include<ctype.h>#include<stdio.h>#include<string.h>/*********found*********/voidupfst(charp){intk=0;for(;*p;p++)if(k){if(*P!==’’)k=0;}else{if(*P!=’’){k=1;*p=toupper(*p);}}}voidmain(){charchrstr[81];system("CLS");printf("\nPleaseenteranEnglishtextline:");gets(chrstr);printf("\nBoforechanging:\n%s",chrstr);upfst(chrstr);printf"’\nAfterchanging:\n%s\n",chrstr);}標(biāo)準(zhǔn)答案:voidupfst(char*p)知識(shí)點(diǎn)解析:主函數(shù)中fun函數(shù)的調(diào)用方式說(shuō)明函數(shù)fun的參數(shù)應(yīng)為指針類型。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為:0127919745238314568259141則返回主程序后s的值應(yīng)為3.375。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5doublefun(intw[][N]){}voidmain(){FILE*wf;inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};inti,j;doubles;system("CLS");printf("***Thearray***\n");{printf("%4d",a[i][j]);}printf("\n");}s=fun(a);printf("***THERESULT***\n");printf("Thesumis:%lf\n",s);/******************/wf=fopen("out.dat","w");fprintf(wf,"%lf",s);fclose(wf);/******************/}標(biāo)準(zhǔn)答案:doublefun(intw[][N]){inti,j,k=0;doublesum=0.0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1)1*只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素*/{sum=sum+W[i][j];/*將周邊元素求和*/k++;}returnsum/k;/*求周邊元素的平均值*/}知識(shí)點(diǎn)解析:本題要求計(jì)算二維數(shù)組周邊元素的平均值,for循環(huán)語(yǔ)句控制循環(huán)過(guò)程,if條件語(yǔ)句根據(jù)數(shù)組元素的下標(biāo)判斷該元素是否為二維數(shù)組的周邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標(biāo)中有一個(gè)是0或N-1,所以只要下標(biāo)中有一個(gè)為0或N-1,那么它一定是周邊元素。計(jì)算周邊元素個(gè)數(shù)的方式是當(dāng)給sum累加一個(gè)值時(shí),k也加1。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。若形參ch中是數(shù)字字符’0’~’9’,則’0’轉(zhuǎn)換成’9’,’1’轉(zhuǎn)換成’8’,’2’轉(zhuǎn)換成’7’,……,’9’轉(zhuǎn)換成’0’;若是其他字符則保持不變:并將轉(zhuǎn)換后的結(jié)果作為函數(shù)值返回。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/**********found**********/1fun(charch){/************found************/if(ch>=’0’&&2)/************found************/return’9’一(ch一_____3_____);returnch;}main(){charc1,c2;printf("\nTheresult:\n");c1=’2’;c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);c1=’8’;c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);c1=’a’;c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);}標(biāo)準(zhǔn)答案:(1)char(2)ch<=-9-(3)-0-知識(shí)點(diǎn)解析:函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。第一空:由主函數(shù)內(nèi)fun函數(shù)的調(diào)用“c1=’2’;c2=fun(c1);”,而c1和c2是char變量,可知fun函數(shù)的返回值類型是char,故第一空處補(bǔ)充返回值類型應(yīng)為“char”。第二空:數(shù)字字符是’0’~’9’,因此數(shù)字字符必須ch>=’0’且ch<=’9’,故第二空處應(yīng)為ch<=’9’。第三空:數(shù)字字符轉(zhuǎn)換規(guī)則是:’0’轉(zhuǎn)換成’9’,’1’轉(zhuǎn)換成’8’,’2’轉(zhuǎn)換成’7’,……,’9’轉(zhuǎn)換成’0’,即返回值為’9’-(ch-’0’),故第三空處應(yīng)為“’0’”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將p所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJK。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#includevoidfun(char*p,char*b){inti,k=0;while(*p){i=1;while(i<=3&&*p){/************found************/b[k]=p;k++,p++;i++;}if(*p){/************found************/b[k++]="";}}b[k]=’\0’;}msin(){chara[80],b[80];printf("Enterastring:");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:");puts(b);printf("\n\n");}標(biāo)準(zhǔn)答案:(1)b[k]=*p;(2)b[k++]=’’;知識(shí)點(diǎn)解析:函數(shù)的功能是將字符串p中的所有字符復(fù)制到字符串b中。(1)p是指針,p存放的內(nèi)容是地址值,第一標(biāo)識(shí)下“b[k]=p;”含義是將p存放的地址內(nèi)容賦給b[k],而不是把p指向的地址拷貝到b[k],顯然不符合題意,應(yīng)改成“b[k]=*cp;”,*p是取p指向的地址的內(nèi)容。(2)第二個(gè)標(biāo)識(shí)符下是復(fù)制三個(gè)字符后在b中插入空格,原題中給出的“b[k++]="";”,在C語(yǔ)言中字符常量是由單引號(hào)括起的單個(gè)字符,即空格字符應(yīng)為“’’”,而“""”是表示字符串常量且該字符串中只有一個(gè)空格字符。第二標(biāo)識(shí)下是將空格字符復(fù)制給b[k++],因此第二標(biāo)識(shí)下應(yīng)改為“b[k++]=’’;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、N名學(xué)生的成績(jī)已在主函數(shù)中放入。一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:求出平均分,由函數(shù)值返回。例如,若學(xué)生的成績(jī)是:85,76,69,85,91,72,64,87,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROG1.C中。清勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#include#include#defineN8structs1ist{doubtes;structs1ist*next;};typedefstructs1istSTREC;doublefun(STREC*h){}STREC*Creat(double*s){STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));P->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;reLurnh;}outlist(STREC*h){STREC*p;p=h->next;printf("head");do{printf("->%4.1f",p->s);p=p->next;}while(p!=0);printf("\n\n");}main(){doubles[N]={85,76,69,85,91,72,64,87),aVe;voidNONO();STREC*h;h=creat(s);outlist(h);ave=fun(h);printf("ave=%6.3f\n",ave);NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti,j;doubles[N],ave;STREC*h;in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j標(biāo)準(zhǔn)答案:STREC*p=h->next;/*由于頭結(jié)點(diǎn)中沒(méi)有存放數(shù)據(jù)*/doubleav=0.0;/*對(duì)計(jì)算成績(jī)平均值的變量進(jìn)行初始化*/intn=0;while(p!=NULL){/*判斷鏈表是否結(jié)束*/av=av+p->s;/*對(duì)成績(jī)進(jìn)行累加。/p=p->next;/*到下一個(gè)結(jié)點(diǎn)位置。/n++;/*人數(shù)加1*/}av/=n;/*計(jì)算成績(jī)平均值*/returnav;/*返回成績(jī)平均值*/知識(shí)點(diǎn)解析:(1)首先定義存放平均值的變量,并對(duì)其初始化。(2)在循環(huán)中,依次取鏈表中存放的成績(jī),并對(duì)其求和。(3)最后計(jì)算平均值,并返回值。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和3門(mén)課的成績(jī)。函數(shù)fun的功能是對(duì)形參b所指結(jié)構(gòu)體變量中的數(shù)據(jù)進(jìn)行修改,最后在主函數(shù)中輸出修改后的數(shù)據(jù)。例如:b所指變量t中的學(xué)號(hào)、姓名、和三門(mén)課的成績(jī)依次是:10002、’’ZhangQi’’、93、85,87,修改后輸出t中的數(shù):據(jù)應(yīng)為:10004、’’LiLie’’、93、85、87。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<string.h>3structstudent{4longsno;5charname[10];6floatscore[3];7};8voidfun(structstudent*b)9{10/**********found**********/11b__1__=10004;12/**********found**********/13strcpy(b___2__,’’LiJie’’);14}15main()16{structstudentt={10002,’’ZhangQi’’,93,85,87};17inti;18printf(’’\n\nTheoriginaldata:\n’’);19printf(’’\nNo:%1dName:%s\nScores:’’,t.sno,t.name);20for(i=0;i<3;i++)printf(’’%6.2f’’,t.score[i]);21printf(’’\n’’);22/**********found**********/23fun(__3__);24printf(’’\nThedataaftermodified:\n’’);25printf(’’\nNo:%1dName:%s\nScores:’’,t.sno,t.name);26for(i=0;i<3;i++)printf(’’%6

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論