國家二級C語言機試(程序填空題)模擬試卷1(共45題)_第1頁
國家二級C語言機試(程序填空題)模擬試卷1(共45題)_第2頁
國家二級C語言機試(程序填空題)模擬試卷1(共45題)_第3頁
國家二級C語言機試(程序填空題)模擬試卷1(共45題)_第4頁
國家二級C語言機試(程序填空題)模擬試卷1(共45題)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

國家二級C語言機試(程序填空題)模擬試卷1(共9套)(共45題)國家二級C語言機試(程序填空題)模擬試卷第1套一、程序填空題(本題共5題,每題1.0分,共5分。)1、給定程序中,函數(shù)fun的功能是:求ss所指字符串數(shù)組中長度最短的字符串所在的行下標,作為函數(shù)值返回,并把其串長放在形參n所指變量中。ss所指字符串數(shù)組中共有M個字符串,且串長#include{}defineM5{}defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;/**********found**********/for(i=0;i<___1___;i++){len=strlen(ss[i]);if(i==0)*n=len;/**********found**********/if(len___2___*n){*n=len;k=i;}}/**********found**********/Eeturn(___3___);}main(){charss[M][N]:{"shanghai","guangzhou","beijing","tianjing","chongqing"};intn,k,i;printf("\nTheoriginalstringsare:\n");for(2=0;i標準答案:(1)M(2)<(3)k知識點解析:第一空:循環(huán)的目的是在M個字符串中尋找長度最短的字符串,因此循環(huán)變量i從0變化到M-1,故第一空處應為“M”。第二空:*n記錄最小字符串的長度,由審題分析可知,字符串ss[i]長度比min小,則交換最小長度值和下標位置,故第二空處應為“<”。第三空:變量k記錄了最小字符串的下標位置,函數(shù)的返回值是最短的字符串所在的行下標,故第三空處應為“k”。2、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將a所指3×5矩陣中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原來左邊的各列依次繞到右邊。例如,有下列矩陣:123451234512345若k為2,程序執(zhí)行結果為345123451234512請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#defineM3#defineN5voidfun(int(*a)[N],intk){inti,j,p,temp;/*********found*********/for(p=1;p<=【1】;p++)for(i=0;i<M;i++){temp=a[i][0];/*********found*********/for(j=0;j<【2】;j++)a[i][j]=a[i][j+1];/*********found*********/a[i][N﹣1]=【3】;}}main(){intx[M][N]=f{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j;printf("Thearraybeforemoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++).printf("%3d",x[i][j]);printf("\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");}}標準答案:(1)k(2)N﹣1(3)temp知識點解析:填空1:外循環(huán)p的值為數(shù)組移動的次數(shù),試題要求第k列左移,則需要移動的次數(shù)為k,所以應填k。填空2:矩陣共N列,所以應填N﹣1。填空3:臨時變量temp中存放的值為數(shù)組最左邊元素的值,需要把temp放到數(shù)組的末尾,即放到a[i][N﹣1]中,所以應填temp。3、給定程序中,函數(shù)fun的功能是:將形參指針所指結構體數(shù)組中的三個元素按Bum成員進行升序排列。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注:卷:不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>typedefstructintnum;charname[10];}PERSON;/******found******/voidfun(PERSON____1____){/******found******/____2____temp;if(std[0].num>std[1].num){temp=std[0];std[0]=std[1j;std[1]=temp;}if(std[0].num>std[2].Hum){temp=std[0];std[0]=std{2];std[2]=temp;}if(std[1].num>std[2].num){temp=std[1];std[1]=std[2];std[2]=temp;}}main(){PERSONstd[]={5,″Zhanghu″,2,″WangLi″,6,″LinMin″};inti;/******found******/fun(___3___);printf(″\nTheresultis:\n″);for(i=0;i<3;i++)printf(″%d,%s\n″,std[i].num,std[i].name);}標準答案:(1)std[](2)PERSON(3)std知識點解析:本題考查:數(shù)據(jù)類型的定義;數(shù)組元素的操作;函數(shù)參數(shù)的傳遞。要使用函數(shù)對整個數(shù)組進行操作時,應使用數(shù)組名作為函數(shù)的實參。當使用數(shù)組名作實參時,函數(shù)傳遞的實際上是數(shù)組的首地址,而并非數(shù)組本身,此時形參除了可以定義為指針變量外,還可以定義為數(shù)組,并且數(shù)組可以不指定大小。但無論用哪種形式,程序在編譯時都將其作為一個指針變量處理。填空1:定義形參變量引用數(shù)組std,此時形參可以定義為指針變量,也可以定義為數(shù)組。由下文可知,程序是通過數(shù)組下標對數(shù)組元素進行操作的,因此形參應使用數(shù)組形式,而非指針形式。填空2:程序使用變量temp交換結構體數(shù)組元素的值,因而temp應定義為PERSON型。填空3:程序通過函數(shù)fun對數(shù)組std進行操作,因此函數(shù)的實參應為std。4、給定程序中,函數(shù)fun的功能是:有N×N矩陣,將矩陣的外圍元素順時針旋轉。操作順序是:首先將第一行元素的值存入臨時數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,最后一列成為最后一行,臨時數(shù)組中的元素成為最后一列。例如,若N=3,有下列矩陣:123計算結果為741456852789963請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#include#defineN4voidfun(int(*t)[N]){intj,r[N];t[0][N—j—1]=t[j][____1____];for(j=N—l;j>=0;2)t[N—1][N—1—j]=t[j][N—1];for(j=N—l;j>=0;j——)t[j][N—lJ=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(j=0;j標準答案:(1)0(2)j——(3)j知識點解析:函數(shù)fun操作順序是:首先將第一行元素的值存入臨時數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,最后一列成為最后一行,臨時數(shù)組中的元素成為最后一列。第一空:由審題分析可知,此處是使第一列成為第一行,即把第一列元素移動到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N—j—1]”,故第一空處應為“0”。第二空:第四個循環(huán)是最后一列成為最后一行,即將最后一列移動到最后一行,“for(j=N—1;j>=0;____2____)”循環(huán)變量j從N一1開始,到0結束,共循環(huán)N次,故j每次減1,第三空處是“j——”。第三空:最后一個循環(huán)將臨時數(shù)組中的元素成為最后1列,即“t[j][N—1]=r[j]”,故第三空處應為“j”。5、給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),作為函數(shù)值返回;并將大于平均值的數(shù)放在形參y所指數(shù)組中,在主函數(shù)中輸出。例如,有10個正數(shù):4630324061745154826,平均值為:30.500000主函數(shù)中輸出:4632404548請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#include#include#defineN10doublefun(doublex[],double*y){inti,j;doubleav;/*********found**********/av=____1____;for(i=0;iav)y[____3____]=x[i];returnav;}main(){inti;doublex[Nlry[Nl;for(i=0;i=0;1++)printfprintf("\n");}標準答案:(1)0(2)x[i]/N(3)j++知識點解析:函數(shù)fun的功能是計算形參x所指數(shù)組中N個數(shù)的平均值,同時利用傳址參數(shù)傳回平均值。第一空:“returnav,”可知變量av保存了平均值,故第一空處av初始化應為0,即第一空處應填”0”。第二空:“for(i=0;iav)y[____3____]=x[il;,,是將x[i]保存在y所指的數(shù)組中,i是循環(huán)變量,j初始化為0,故y[]的計數(shù)變量為j,故第三空處應為“j++”。國家二級C語言機試(程序填空題)模擬試卷第2套一、程序填空題(本題共5題,每題1.0分,共5分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的作用是:統(tǒng)計整型變量m中各數(shù)字出現(xiàn)的次數(shù),并存放到數(shù)組a中,其中:a[0]存放0出現(xiàn)的次數(shù),a[1]存放1出現(xiàn)的次數(shù),…,a[9]存放9出現(xiàn)的次數(shù)。例如,若m為14579233,則輸出結果應為:0,1,1,2,1,1,0,1,0,1,請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>voidfun(intm,inta[10]){inti;for(i=0;i<10;i++)/*********found*********/【1】=0;while(m>0){/*********found*********/i=【2】;a[i]++;/*********found*********/m=【3】;}}main(){intm,a[10],i;printf("請輸入一個整數(shù):"),scanf("%d",&m);fun(m,a);for(i=0,i<10;i++)printf("%d,",a[i]);printf("\n");}標準答案:(1)a[i](2)m%10(3)m/10知識點解析:數(shù)組a各元素初始化為0,用求余和整除相結合的方法得到數(shù)字的每一位數(shù)字,并用它做為數(shù)組a的下標,相應元素加1。填空1:數(shù)組a的10個元素賦值為0。填空2:m%10可得到數(shù)m的最后一位數(shù)字。填空3:m/10可使數(shù)字截短,即去掉最后一位。2、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來從高位到低位的順序組成一個新數(shù),作為函數(shù)值返回。例如,從主函數(shù)輸入一個整數(shù)27638496,則函數(shù)返回值為26846。請在程序的下劃線處填入正確的內容并將下劃線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#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));}標準答案:(1)1(2)s>0(3)i*10知識點解析:填空1:變量i用來控制被取出的偶數(shù)在新數(shù)中的位置,應賦初值1。3、下列給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的所有字母字符順序前移,其他字符順序后移,處理后將新字符串的首地址作為函數(shù)值返回。例如,若S所指字符串為“asdl23fgh543df”,處理后新字符串為“asdfghdf123543”。請在程序的下畫線處填入正確的內容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<stdlib.h>#include<string.h>char*fun(char*s){inti,j,k,n;char*p,*t;n=str1en(s)+1;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*si一zeof(char));j=0;k=0;for(i=0;i<n;i++){if(((s[i]>=’a’)&&(s[i]<=’z))||((s[i]>=’A’)&&(s[i]<=’Z’))){/*********found*********/t[j]=【1】;j++;}else{p[k]=s[i];k++;)}/*********found*********/for(i=0;i<【2】;i++)t[j+i]=p[i];/*********found*********/t[j+k]=【3】;returnt;}main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("\nTheresultis:%s\n",fun(s));}標準答案:(1)s[i](2)k(3)’\0’或0知識點解析:填空1:將字符串s中所有字母元素賦給數(shù)組t。填空2:字符串中所有非字母元素放到字母元素后面,所以i的取值范圍是0一k。填空3:最后給字符串加入結束標識‘\0’。4、程序通過定義學生結構體變量,存儲學生的學號、姓名和三門課的成績。函數(shù)fun的功能是:將形參a中的數(shù)據(jù)進行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進行輸出。例如,若傳給形參a的數(shù)據(jù)中學號、姓名和三門課的成績依次是:10001、“ZhangSan”、95、80、88,修改后的數(shù)據(jù)應為:10002、“LiSi”、96、81、89。請在程序的下畫線處填入正確的內容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#inclucle<stdio.h>#include<string.h>structstudent{longsrlo;charname[10];floatScoEe[3];};/*********found*********/【1】fun(structstudenta){inti;a.sno=10002;/*********found*********/strcpy(【2】,"Lisi");/*********found*********/for(i=0;i<3;i++)【3】+=1;returna;}main(){structstudentS={1000l,"ZhangSan",95,80,88),t;inti;print[f"\n\nTheoriginaldata:\n");print["\nNo:%ldName:%s\nScores:",s.sno,s.name);for(i=0;i<3;i++)print[("%6.2f",s.score[i]);print[("\n");t=fun(s);print[f"\nThedataaftermodified:\n");print[("\nNo:%ldName:%s\nScoEes:",t.sno,t.name);for(i=0;i<3;i++)print[("%6.2f",t.score[i]);print[("\n");}標準答案:(1)structstudent(2)a.name(3)a.score[i]知識點解析:填空1:函數(shù)定義時,類型標識符指明了本函數(shù)的類型,函數(shù)的類型實際上是函數(shù)返回值的類型。本題中,用結構類型定義函數(shù)類型。填空2和填空3:此處考查結構體變量成員的表示方法,a.name和a.score[i]分別表示學生的姓名和成績。5、下列給定程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的奇數(shù)按原順序依次存放到a[0]、a[1]、a[2]…中,把偶數(shù)從數(shù)組中刪除,奇數(shù)個數(shù)通過函數(shù)值返回。例如,若a所指數(shù)組中的數(shù)據(jù)最初排列為:9,1,4,2,3,6,5,8,7,刪除偶數(shù)后,a所指數(shù)組中的數(shù)據(jù)為:9,1,3,5,7,返回值為5。請在程序的下畫線處填入正確的內容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#inclucle<stdio.h>#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i<n;i++)/*********found*********/if(a[i]%2==【1】){/*********found*********/a[j]=a[i];【2】;}/*********found*********/return【3】;}main(){intb[N]={9,1,4,2,3,6,5,8,7},i,n;printf("\nTheorig~naldata:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");n=fun(b,N);printf(”\nThenumberofodd:%d\n",r1);printf("\nTheoddnumber:\n");for(i=0;i<1"1;i++)printf("%4d",b[i]);printf("\n");}標準答案:(1)1(2)j++(3)j知識點解析:本題考查:if語句條件表達式;自增、自減運算符;函數(shù)返回值。填空1:根據(jù)題目要求,需進行奇偶數(shù)的判定,可以通過if條件語句來判斷數(shù)組元素是否為奇數(shù),如果元素不能被2整除,則為奇數(shù),所以填入if(a[i]%2==1)。填空2:將為奇數(shù)的元素重新存放到數(shù)組的前面,同時下標增1。填空3:函數(shù)返回值需要返回數(shù)組中奇數(shù)的個數(shù),因此返回變量j。奇數(shù)和偶數(shù)的判定方法,對2求余運算,結果為0是偶數(shù),結果為1是奇數(shù)。自增1、自減1運算符:自增1運算符記為“++”,其功能是使變量的值自增1;自減1運算符記為“一一”,其功能是使變量值自減1。自增1、自減1運算符均為單目運算符,具有右結合性,有以下幾種形式:++i:i自增1后再參與其他運算。一一i:i自減1后再參與其他運算。i++:i參與運算后,i的值再自增1。i一一:i參與運算后,i的值再自減1。國家二級C語言機試(程序填空題)模擬試卷第3套一、程序填空題(本題共5題,每題1.0分,共5分。)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ù)。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#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+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(i=0;i標準答案:(1)*a(2)2(3)i+1知識點解析:第一空:主函數(shù)內fun函數(shù)的調用“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]中,升序排序和降序排序的下標變化是每次在前一次的基礎上+2,即a[0]、a[2]、a[4]、…降序排序,a[1]、a[3]、a[5]…升序排序,故第二空應為“2”。第三空:選擇排序法中的升序排序,首先從數(shù)組中挑選一個最小的元素,把它和第一元素交換,接著從剩下的n-1個元素中再挑出一個最小的元素,把它和第二個元素交換,不斷重復以上過程,直到比較完最后兩個元素。故內層循環(huán)變量i應該從i+1開始,因此第三空處應為“i+1”。2、給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的數(shù)字字符轉換成對應的數(shù)值,計算出這些數(shù)值的累加和作為函數(shù)值返回。例如,形參s所指的字符串為abs5defl26jkm8,程序執(zhí)行后的輸出結果為22。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<string.h>#include<ctype.h>intfun(char*s){intsum=0;while(*s){/*********found*********/if(isdigit(*s))sum+=*s—【1】;/*********found*********/【2】;}/*********found*********/return【3】;}main(){chars[81];intn;printf("\nEnterastring:\n\n");gets(s);n=fun(s);printf("\nTheresultis:%d\n\n",n);}標準答案:(1)48或’0’(2)s++(3)sum知識點解析:本題是把字符串中是數(shù)字字符轉換成對應的數(shù)值并進行累加。填空1:’0’字符對應的ASCII碼值是48,因此數(shù)字字符轉換成對應數(shù)值時只要減去48,即是該數(shù)字字符對應的數(shù)值,所以應填48或者’0’。填空2:判斷完一個字符之后,將字符串指針移到下一個位置,所以應填s++。填空3:返回累加和sum,所以應填sum。3、程序通過定義學生結構體變量,存儲了學生的學號、姓名和三門課的成績。所有學生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學生數(shù)據(jù),并按照學號從小到大排序后,再用二進制方式把排序后的學生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內容。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:不得增行或刪行,也不得更改程序的結構!試題程序:nclude#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename){FILE*fp;inti,j;STUs[N],t;/******found******/fp=fopen(filename,___1___);fread(s,sizeof(STU),N,fp);felose(fp);for(i=0;i標準答案:(1)“r”(2)>(3)fwrite知識點解析:填空1:題目中要求從形參fiename所指的文件中讀入學生的數(shù)據(jù),以此可以看出本空應該填寫“r”。填空2:此處的if語句是比較學號的大小,如果學號大就和學號小的換位,以此本空填寫>。填空3:題目要求所有的學生數(shù)據(jù)均以二進制方式輸出到文件中,因此本空填寫fwrite。4、給定程序的功能是:從鍵盤輸入若干行文本(每行不超過80個字符),寫到文件myfile4.txt中,用-1作為字符串輸入結束的標志。然后將文件的內容讀出顯示在屏幕上。文件的讀寫分別由自定義函數(shù)ReadText和WriteText實現(xiàn)。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#include#include#includevoidWriteText(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知識點解析:第一空:此處是補充函數(shù)參數(shù)名,參數(shù)類型已知是FILE文件指針,“fputs("\n",fw)”是將字符“\n”寫入文件,可知fw是文件指針名,因此,第一空處應該是“voidWriteText(FILE*fw)”。第二空:“while(strcmp(str,"-1")!=0)”循環(huán)的結束標志是str字符串等于“-1”時循環(huán)退出,如果str不等于“-1”,執(zhí)行循環(huán)體內容:用fputs函數(shù)將str字符串寫入文件。fputs函數(shù)的調用形式是:“fputs(s,fp)”,其中,s是指向字符串的指針或字符串數(shù)組名,fp是指向將要被寫入的文件的文件指針,因此,第二處應該是“fputs(str,fw)”。第三空:“while(!feof(fr))”循環(huán)的作用是不斷讀取文件直到到達文件尾,每次最多讀81個,將讀到的數(shù)據(jù)放在str字符串里,并用printf輸出到屏幕,因此,第三處應該是“printf("%s",str)”。5、給定程序中,函數(shù)fun的功能是:求ss所指字符串數(shù)組中長度最短的字符串所在的行下標,作為函數(shù)值返回,并把其串長放在形參n所指變量中。ss所指字符串數(shù)組中共有M個字符串,且串長<N。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!1#include<stdio.h>2#include<string.h>3#defineM54#defineN205intfun(char(*ss)[N],int*n)6{inti,k=0,len=N;7/**********found**********/8for(i=0;i<___1___;i++)9{len=strlen(ss[i]);10if(i==0)*n=len;11/**********found**********/12if(len__2__*n)13{*n=len;14k=i;15}16}17/**********found**********/18return(__3__);19}20main()21{charss[M][N]={’’shanghai’’,’’guangzhou’’,’’beijing’’,’’tianjing’’,’’chongqing’’);22intn,k,i;23printf(’’\nTheoriginalstringsare:\n’’);24for(i=0;i<M;i++)puts(ss[i]);25k=fun(ss,&n);26printf(’’\nThelengthofshorteststringis:%d\n’’,n);27printf(’’\nTheshorteststringis:%s\n’’,ss[k]);28}標準答案:(1)M(2)<(3)k知識點解析:函數(shù)fun的功能是求ss所指字符串數(shù)組中長度最短的字符串所在的行下標。求最短字符串所在的下標,一般假設第一個字符串的長度最短min,用k記錄最長字符串的下標的話,開始時min=strlen(ss[0]),k=0,然后逐個比較其他字符串長度,如果字符串ss[i]長度比min小,則將min賦值為這個字符串長度,“k=i”,如此便可求得最短字符串和最短字符串所在的下標位置。第一空:循環(huán)的目的是在M個字符串中尋找長度最短的字符串,因此,循環(huán)變量i從0變化到“M-1”,故第一空處應為“M”。第二空:“*n”記錄最小字符串的長度,由審題分析可知,字符串ss[i]長度比min小,則交換最小長度值和下標位置,故第二空處應為“<”。第三空:變量k記錄了最小字符串的下標位置,函數(shù)的返回值是最短的字符串所在的行下標,故第三空處應為“k”。國家二級C語言機試(程序填空題)模擬試卷第4套一、程序填空題(本題共5題,每題1.0分,共5分。)1、給定程序中,函數(shù)fun的功能是:將a所指4×3矩陣中第k行的元素與第0行元素交換。例如,有下列矩陣:123456789101112若k為2,程序執(zhí)行結果為:789456123101112請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#inClude<stdio.h>#defineN3#defineM4/*********found*********/voidfun(int(*a)[N],int【1】){inti,temp;/*********found*********/for(i=0;i<【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("Thearraybeforemoving:\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");}}標準答案:(1)k(2)N(3)a[k][i]知識點解析:填空1:變量k在函數(shù)體fun中已經使用,但在函數(shù)體中沒有定義,肯定是在函數(shù)的形參中定義的,所以應填k。填空2:數(shù)組共N列,所以應填N。填空3:這部分語句實現(xiàn)的功能是變量值的交換,所以應填a[k][i]。2、給定程序中,函數(shù)fun的功能是:在任給給定的9個正整數(shù)中找出按升序排列時處于中間的數(shù),將原數(shù)據(jù)序列中比該中間數(shù)小的數(shù)用該中間數(shù)替換,位置不變,在主函數(shù)中輸出處理后的數(shù)據(jù)序:列,并將中間數(shù)作為函數(shù)值返回。例如,有9個正整數(shù):1572387582145按升序排列時的中間數(shù)為:8處理后主函數(shù)中輸出的數(shù)列為:8882387882145請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#defineN9intfun(intx[])(inti,j,k,t,mid,b[N];for(i=0;i<N;i++)b[i]=x[i];for(i=0;i<=N/2;i++){k=i;for(j=i+1;j<N;j++)if(b[k]>b[j])k=j;if(k!=i){/*********found*********/t=b[i];b[i]=【1】;b[k]=t;}}/*********found*********/mid=b【2】;for(i=0;i<N;i++)/*********found*********/if(x[i]【2】mid)x[i]=mid;returnmid;}main(){inti,x[N]={1,5,7,23,87,5,8,21,45};for(i=0;i<N;i++)printf("%d",x[i]);printf("\nThemiddatais:%d\n",fun(x));for(i=0;i<N;i++)printf("%d",x[i]);printf("\n");}標準答案:(1)b[k](2)4或N/2(3)<知識點解析:數(shù)組中的9個數(shù)任意排列,要找到按升序排列時處于中間位置的數(shù),應首先對數(shù)組進行升序排列。因為只需找到中間位置的數(shù)即可,故不必對整個數(shù)組進行排序,只需要排列出數(shù)組的前半部分。找到中間數(shù)后,遍歷原數(shù)組,將小于中間數(shù)的元素進行替換。填空1:利用選擇算法排序,先指定一個元素為最小,用這個數(shù)與其后的所有數(shù)進行比較,若找小于此數(shù),則進行替換。此處考查替換操作。填空2:元素mid存放中間位置的數(shù),數(shù)組長度為9,因此中間元素數(shù)為b[4]。填空3:遍歷數(shù)組,當元素小于中間位置的數(shù)(即mid)時,進行替換。3、函數(shù)fun的功能是:在有n個元素的結構體數(shù)組std中,查找有不及格科目的學生,找到后輸出學生的學號;函數(shù)的返回值是有不及格科目的學生人數(shù)。例如,主函數(shù)中給出了4名學生的數(shù)據(jù),則程序運行的結果為:學號:N1002學號:N1006共有2位學生有不及格科目請在程序的下畫線處填入正確的內容,并把下畫線刪除,使程序得出正確的結果。注意:不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>typedefstruct{charnum[8];doublescore[2];/******found******/}___(1)___;intfun(STUstd[],intn){inti,k=0;for(i=0;i<n;i++)/******found******/if(std[i].score[0]<60___(2)___std[i].score[1]<60){k++;printf(″學號:%s″,std[i].num);}/******found******/return___(3)___;}main(){STUstd[4]={″N1001″,76.5,82.0,″N1002″,53.5,73.0,″N1005″,80.5,66.0.″N1006″,81.0,56.0};printf(″\n共有%d位學生有不及格科目\n″,fun(std,4));}標準答案:(1)STU(2)||(3)k知識點解析:本題考查:對結構體的定義和使用,以及邏輯運算符的使用。填空1:STU結構體別名,通過main()中的語句可知。填空2:||只要學生兩門課成績有不及格的,就算不及格,因此使用或運算。填空3:k返回的是不及格的學生個數(shù),有題意可知k是累計個數(shù)的。4、給定程序中,函數(shù)fun的功能是:判斷形參S所指字符串是否是“回文”(Palindrome),若是,函數(shù)返回值為1;不是,函數(shù)返回值為0?!盎匚摹笔钦x和反讀都一樣的字符串(不區(qū)分大小寫字母)。例如,LEVEL和Level是“回文”,而LEVLEV不是。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!1#include<stdio.h>2#include<string.h>3#include<ctype.h>4intfun(char*s)5{char*ip,*rp;6/**********found**********/7ip___1___;8rp=s+strlen(s)-1;9while((toupper(*1p)==toupper(*rp))&&(ip<rp)){10/**********found**********/111p++;rp____2___;}12/**********found**********/13if(ip<rp)___3___;14elsereturn1;15}16main()17{chars[81];18printf(’’Enterastring:’’);scanf(’’%s’’,s);19if(fun(s))printf(’’in\’’%s\’’isapalindrome.\n\n’’,s);20elseprintf(’’in\’’%s\’’ist’taPalindrome.\n\n’’,s);21}標準答案:(1)s(2)--(3)return0知識點解析:函數(shù)fun的功能是:判斷形參s所指字符串是否是“回文”,即比較第一個字符和最后一個字符是否相同,第二個字符和倒數(shù)第二個字符是否相同,依此類推,可以用循環(huán)來實現(xiàn)。第一空:“rp=s+strlen(s)-1;”可知rp指向最后一個元素,因此,lp是指向第一個元素,故第一空應為“s”。第二空:“l(fā)p++;rp__2___;”lp往后移動,rp應該往前移動,故第二空處應為“--”。第三空:“if(lp<rp)”成立說明lp和rp比較沒有比較到字符串的最中間的字符,也就是說s字符串不是回文,因此,第三空處的應為“return0”。5、給定程序中,函數(shù)fun的功能是將帶頭節(jié)點的單向鏈表結點數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表結點數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結點數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、6、8、10。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#include#include#defineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;while(p){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;{q=(NODE*)malloc(sizeof(NODE));q—>data=a[i];q—>next=NULL;if(h—>next==NULL)h—>next=p=q;else{p—>next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;p=h—>next;if(p==NULL)printf("Thelistiselse{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,8f6};head=creatlist(a);printf("\nTheoriginallist:\n");outlist(head);fun(head);printf("\nThelistaftersorting:outlist(head);}標準答案:(1)h—>next(2)p—>next(3)>=知識點解析:函數(shù)fun的功能是將帶頭節(jié)點的單向鏈表結點數(shù)據(jù)域中的數(shù)據(jù)從小到大排序,在fun函數(shù)內采用的是選擇法排序。第一空:由審題分析可知,q從h的下一個元素開始尋找最小值,故第一空為“h—>next”。第二空:由審題分析可知,while循環(huán)是在剩下的元素當中找最小值,剩下的結點是由q指向的鏈表,q從p的后一個結點開始,故第二空處應為“p—>next”。第三空:“if(p—>data____3____q—>data)”是比較p結點和q結點數(shù)據(jù)的大小,如果p結點的數(shù)據(jù)比q結點的數(shù)據(jù)大,那么應該將p結點和q結點的數(shù)據(jù)進行交換,故第三空處應為“>—"。國家二級C語言機試(程序填空題)模擬試卷第5套一、程序填空題(本題共5題,每題1.0分,共5分。)1、給定程序中,函數(shù)fun的功能是:把形參S所指字符串中下標為奇數(shù)的字符右移到下一個奇數(shù)位置,最右邊被移出字符串的字符繞回放到第一個奇數(shù)位置,下標為偶數(shù)的字符不動(注:字符串的長度大于等于2)。例如,形參S所指的字符串為:abedefgh,執(zhí)行結果為:ahcbedgf。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#includevoidfun(char*s){inti,n,k;charc;n=0,for(i=0,s[i]!=’\0’;i++)n++;/**********found**********/if(n%2=--O)k=n-___1___;elsek=n-2;/**********found**********/c=___2___;for(i=k-2;i>=1;i=i-2)s[i+2]=s[i];/**********found**********/s[1]=___3___;}main(){chars[80]="abcdefgh";printf("\nTheoriginalstringis:%s\n",s);fun(s);printf("\nTheresultis:%s\n",s);}標準答案:(1)1(2)s[k](3)c知識點解析:函數(shù)fun的功能是移動下標為奇數(shù)位置的字符。第一空:“for(i=0;s[i]!=’\0’;i++)n++;”n記錄了數(shù)組s的長度,“if(n%2==0)”如果長度n是偶數(shù),那么最右邊被移出的字符的下標是在n-1,如果n是奇數(shù),那么最右邊被移出的字符的下標是n-2,因此第一空處應為“1”。第二空:題目要求最右邊被移出字符串的字符繞回放到第一個奇數(shù)位置,因此最右邊被移出的字符是s[k],在s[k]被替換之前必須先把s[k]保存在其他變量中,故第二空處應為“s[k]”,將s[k]保存在c中。第三空:此處是把最右邊被移出字符串的字符繞回放到第一個奇數(shù)位置,最右邊被移出字符保存在c,第一奇數(shù)位置是s[1],故第三處應為“c”。2、給定程序中,函數(shù)fun的功能是:找出形參s所指字符串中出現(xiàn)頻率最高的字母(不區(qū)分大小寫),并統(tǒng)計出其出現(xiàn)的次數(shù)。例如,形參s所指的字符串為:abcAbsmaxless,程序執(zhí)行后的輸出結果為:letter’a’:3timesletter’s’:3times請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<string.h>#include<ctype.h>voidfun(char*s){intk[26]={0},n,i,max=0;charch;while(*s){if(isalpha(*s)){/*********found*********/ch=tolower(【1】);n=ch一’a’;/*********found*********/k[n]+=【2】;}s++;/*********found*********/if(max<k[n])max=【3】;printf("\nAftercount:\n");for(i=0;i<26;i++)if(k[i]==max)printf("\nletter\’%c\’:%dtimes\n",i+’a’,k[i]);}main(){chars[81];printf("\nEnterastring:\n\n");gets(s);fun(s);}標準答案:(1)*s(2)1(3)k[n]知識點解析:本題統(tǒng)計字符串中各字母的個數(shù),建立了一個包括26個整型變量的數(shù)組,用來存儲每個字母的個數(shù)。填空1:isalpha函數(shù)的作用是判斷當前字符是否為字母,tolower函數(shù)的作用是將當前字母轉換為小寫字母,所以應填*s。填空2:把該字母出現(xiàn)的個數(shù)累加到指定的數(shù)組中,所以應填1。填空3:max用來記錄出現(xiàn)次數(shù)最高的字母的出現(xiàn)次數(shù),如果當前該字母出現(xiàn)次數(shù)大于最大次數(shù)max,那么把該次數(shù)賦值給max,所以應填k[n]。3、給定程序中已建立一個帶有頭結點的單向鏈表,在main函數(shù)中將多次調用fun函數(shù),每調用一次fun函數(shù),輸出鏈表尾部結點中的數(shù)據(jù),并釋放該結點,使鏈表縮短。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!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ù)的功能是輸出鏈表尾部結點中的數(shù)據(jù),并釋放該結點,使鏈表縮短。由于鏈表是單向的,找到鏈表尾部結點需要利用循環(huán)從頭結點開始查找,直至找到最后一個,找到之后輸出尾部結點的數(shù)據(jù),然后刪除尾結點。第一空:fun函數(shù)中的循環(huán)目的是找到尾結點“while(t->next!=NULL)”,利用結點變量s和t,s指向當前節(jié)點,t不斷指向下一個結點,因此,第一空處應該是“t=t->next;”。第二空:這里是輸出尾結點中的數(shù)據(jù),已經利用循環(huán)找到了尾結點t,t的數(shù)據(jù)是t->data,因此,第二空處應該為“printf(’’%d’’,t->data),”。第三空輸出尾結點數(shù)據(jù)之后刪除尾結點,使用free,又因為尾結點是t,因此,第三空處應該為“flee(t);”。4、給定程序中,函數(shù)fun的功能是:利用指針數(shù)組對形參ss所指字符串數(shù)組中的字符串按由長到短的順序排序,并輸出排序結果。ss所指字符串數(shù)組中共有N個字符串,且串長小于M。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!1#include<stdio.h>2#include<string.h>3#defineN54#defineM85voidfun(char(*ss)[M])6{char*ps[N],*tp;inti,j,k;7for(i=0;i<N;i++)ps[i]=ss[i];8for(i=0;i<N-1;i++){9/**********found**********/10k=__1___;11for(j=i+1;j<N;j++)12/**********found**********/13if(strlen(ps[k])<strlen(___2___))k=j;14/**********found**********/15tp=ps[i];ps[i]=ps[k];ps[k]=___3____;16}17printf(’’\nThestringaftersortingbylength:\n\n’’);18for(i=0;i<N;i++)puts(ps[i]);19}20main()21{charch[N][M]={’’red’’,’’green’’,"blue’’,¨yellow","black¨),22inti;23printf(’’\nTheoriginalstring\n\n’’);24for(i=0;i<N;i++)puts(ch[i]);printf(’’\n’’);25fun(ch)}標準答案:(1)i(2)ps[j](3)tp知識點解析:本題中函數(shù)fun的功能是利用指針數(shù)組對形參ss所指字符串數(shù)組中的字符串按由長到短的順序排序,并輸出排序結果。在fun函數(shù)中采用了選擇排序法,在選擇排序法中的降序排序,首先從數(shù)組中挑選一個最大的元素,把它和第一元素交換,接著從剩下的n-1個元素中再挑出一個最大的元素,把它和第二個元素交換,不斷重復以上過程,直到比較完最后兩個元素。第一空:分析可知,fun函數(shù)采用的選擇排序,在第一空處是初始化k。“for(j=i+1;j<N;j++)”循環(huán)是尋找長度最長的字符串,找到之后和k字符串交換,因此k從0開始,隨著i變化,故第一空處應為“i”。第二空:“if(strlenq(ps[k])<strlen(__2__))k=j;”新的字符串ps[j]如果比ps[k]的長度長,那么k記錄下新的最長的字符串的下標位置j,故第二空處應為“ps[j]”。第三空:“tp=ps[i];ps[i]=ps[k];ps[k]=__3___;”是字符串地址交換,顯然第三空處應是臨時變量tp。5、給定程序中,函數(shù)fun的功能是:統(tǒng)計形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,形參s所指的字符串為:abcdef35adgh3kjsdf7。輸出結果為:4。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!1#include<stdio.h>2voidfun(char*s,int*t)3{inti,n;4n=0;5/**********found**********/6for(i=0;__1___!=0;i++)7/**********found**********/8if(s[i]>=’0’&&S[i]<=__2__)n++;9/**********found**********/10__3__;11}12main()13{chars[80]=’’abcdef35adgh3kjsdf7’’;14intt;15printf(’’\nTheoriginalstringis:%s\n’’,s);16fun(s,&t);17printf(’’\nTheresultis:%d\n’’,t);}標準答案:(1)s[i](2)’9’(3)*t=n知識點解析:搜索整個字符串,判斷s[i]>=’0’且s[i]<=’9’,滿足該條件后,計數(shù)變量加1,因此,第一空:循環(huán)終止條件是達到了字符串的尾部,字符串以“\0”(或NULL)結束,故第一空處應為s[i]。第二空:數(shù)字字符的判斷是s[i]>=’0’且s[i]<=’9’,故第二空處應為“’9’”。第三空:這里是將數(shù)字字符出現(xiàn)的次數(shù)存放在形參t里,n記錄了數(shù)字字符的個數(shù),而形參t是指針變量,故第三處應為“t=n”。國家二級C語言機試(程序填空題)模擬試卷第6套一、程序填空題(本題共5題,每題1.0分,共5分。)1、甲乙丙丁四人同時開始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函數(shù)fun的功能是根據(jù)形參提供的值,求出總共聽到多少次鞭炮聲作為函數(shù)值返回。注意,當幾個鞭炮同時炸響,只算一次響聲,第一次響聲是在第0秒。例如,若t1=7,t2=5,t3=6,t4=4,n=10,則總共可聽到28次鞭炮聲。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#inolude/**********found**********/#defineOK(i,t,n)((___1___%t==0)&&(i/t標準答案:(1)i(2)t++(3)count知識點解析:第一空:由“if(OK(t,t1,n)‖OK(t,t2,n)‖OK(t,t3,n)‖OK(t:t4,n))count++;”可知count計數(shù)聽到的鞭炮聲,在滿足if條件時,計數(shù)加1。t時刻,至少有一個人放了一個鞭炮才能聽得到聲音,故t%t1==0、t%t2==0、t%t3=0、t%t4==0這四個當中至少一個成立,四者是或的關系。第一個標識下是宏OK的定義,由前面的分析可知,OK宏的作用就是判斷t%i(i等于1、2、3和4)是否等于0且i/t2、給定程序中,函數(shù)fun的功能是:計算x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過形參返回給主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,并在主函數(shù)中輸出。例如,有10個正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為30.500000。主函數(shù)中輸出m=30。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#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;if(x[i]<*av&&*av一x[i]<=d){/*********found*********/d=*av一x[i];j=【2】;}/*********found*********/return【3】;}main(){inti;doublex[N],av,m;printf"’\n");m=fun(xf&av);printf("\nTheaverageis:%f\nl’,av);printf("m=%5.lf",m);printf("\n");}標準答案:(1)*av(2)i(3)x[j]知識點解析:填空1:從原程序中可以看出*av代表的是平均值,而s/N表示的就是平均值,因此本空應該填*av。填空2:if語句來判斷找最接近平均值的數(shù),因而此空應該填i。填空3:題目要求將小于平均值且最接近平均值的數(shù)作為函數(shù)返回,而j表達的是最接近平均值的數(shù)在數(shù)組中的下標,因而本空應該填寫x[j]。3、給定程序中,函數(shù)fun的功能是:找出NxN矩陣中每列元素中的最大值,并按順序依次存放于形參b所指的一維數(shù)組中。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序

溫馨提示

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

評論

0/150

提交評論