![國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷3(共9題)_第1頁](http://file4.renrendoc.com/view12/M04/0F/3E/wKhkGWbljJqASMiQAANW3Da1Ycs286.jpg)
![國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷3(共9題)_第2頁](http://file4.renrendoc.com/view12/M04/0F/3E/wKhkGWbljJqASMiQAANW3Da1Ycs2862.jpg)
![國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷3(共9題)_第3頁](http://file4.renrendoc.com/view12/M04/0F/3E/wKhkGWbljJqASMiQAANW3Da1Ycs2863.jpg)
![國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷3(共9題)_第4頁](http://file4.renrendoc.com/view12/M04/0F/3E/wKhkGWbljJqASMiQAANW3Da1Ycs2864.jpg)
![國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷3(共9題)_第5頁](http://file4.renrendoc.com/view12/M04/0F/3E/wKhkGWbljJqASMiQAANW3Da1Ycs2865.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷3(共9套)(共9題)國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第1套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、在文件in.dat中有200個(gè)數(shù)據(jù)。函數(shù)ReadDat()讀取這200個(gè)數(shù)據(jù)存放到整型數(shù)組aa中,請(qǐng)編制函數(shù)jsSod(),其函數(shù)的功能是:要求在200個(gè)數(shù)據(jù)中找出滿足以下條件的三元組(a,b,c),其中a、b、c是所給200個(gè)數(shù)據(jù)中的三個(gè)不同的數(shù),且以a、b、c為邊長(zhǎng)的三邊能構(gòu)成三角形。滿足條件三元組的個(gè)數(shù)作為函數(shù)jsSort()的返回值,同時(shí)把滿足條件的數(shù)據(jù)存入結(jié)構(gòu)數(shù)組bb中(要求bb[i].x1<bb[i].x2<bb[i].x3),再對(duì)bb中的數(shù)據(jù)按照每組數(shù)據(jù)構(gòu)成三角形的周長(zhǎng)進(jìn)行升序排列,排序后的結(jié)果仍重新存入結(jié)構(gòu)數(shù)組bb中,最后調(diào)用函數(shù)WriteDat()把結(jié)果bb輸出到文件out.dat中。部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>typedefstruct{intx1,x2,x3;}data;intaa[200];databb[200];intjsSort(){}voidmain(){intcount;readDat();count=jsSort();/*返回滿足條件的個(gè)數(shù)*/writeDat(count);}readDat(intcount){FILE*in;inti;in=fopen("in.dat","r");for(i=0;i<200;i++)fscanf(in,"%d",&aa[i]);fclose(in);}WriteDat(intcount){FILE*out;inti;clrscr();out=fopen("out.dat","w");for(i=0;i<count;i++){fprintf(out,"%d,%d,%d\n",bb[i].x1,bb[i].x2,bb[i].x3);}fclose(out);}標(biāo)準(zhǔn)答案:intjsSort(){inti,i,u,k;0;dataswap;/*定義一個(gè)結(jié)構(gòu)體變量,作為交換時(shí)的臨時(shí)存放地*/datatmp;/*定義一個(gè)結(jié)構(gòu)體變量,作為新構(gòu)造的三元組(不一定滿足條件)的存放地*/for(i=0;i<200;i++)for(j=i+1;j<200;j++)for(u=j+1;u<200;u++){if(aa[i]<aa[j]){tmp.x1=aa[i];tmp.x3=aa[j];}else{tmp.x1=aa[j];tmp.x3=aa[i];}if(aa[k]<tmp.x1){/*aa[k]在三個(gè)數(shù)中最大*/tmp,x2=tmp.x1;tmp.x1=aa[k];}elseif(aa[k]>tmp.x3){/*aa[k]在三個(gè)數(shù)中最小*/tmp.x2=tmp.x3;tmp.x3=tmp;}elsetrap,x2=aa[k];/*aa[k]在三個(gè)數(shù)中居中*//*按照要求構(gòu)造結(jié)構(gòu)*/if(tmp.x1+tmp,x2>tmp.x3)bb[k++]=tmp;/*將符合條件的數(shù)存入bb數(shù)組中*/}for(i=0;i<k-1;i++)for(j=i+1;j<k;j++)if((bb[i].xl+bb[i].x2+bb[i].x3)>(bb[j].xl+bb[j].x2+bb[j].x3)){swap-bb[ii;bb[i]=bb[j];bb[j]=swap;/*在BB數(shù)組中進(jìn)行選擇排序(從小到大)*/}returnk;}知識(shí)點(diǎn)解析:類型:整數(shù)排序。關(guān)鍵:條件判斷和排序算法。最后排序采用選擇排序。國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第2套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知在文件IN20.DAT中存有若干個(gè)(個(gè)數(shù)〈200)4位數(shù)字的正整數(shù),函數(shù)ReadDat()的功能是讀取這若干個(gè)正整數(shù)并存入數(shù)組xx中。請(qǐng)編制函數(shù)CalValue(),其功能要求:(1)求出這文件中共有多少個(gè)正整數(shù)totNum;(2)求出這些數(shù)中的各位數(shù)字之和是偶數(shù)的數(shù)的個(gè)數(shù)totCnt,以及滿足此條件的這些數(shù)的算術(shù)平均值totPjz,最后調(diào)用函數(shù)WriteDat()把所求的結(jié)果輸出到文件OUT20.DAT中。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include〈stdio.h>#include〈conio.h>#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/*文件IN20.DAT中共有多少個(gè)正整數(shù)*/inttotCnt=0;/*符合條件的正整數(shù)的個(gè)數(shù)*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidWritedat(void);voidCalValue(){}main(){inti;clrscr();for(i=0;i〈MAXNUM;i++)xx[i]=0;if(Readdat()){printf("數(shù)據(jù)文件IN20.DAT不能打開!\007\n");return;}CalValue();printf("文件IN20.DAT中共有正整數(shù)=%d個(gè)\n",totNum);printf("符合條件的正整數(shù)的個(gè)數(shù)=%d個(gè)\n",totCnt);printf("平均值=%.21f\n",totPjz);Writedat();}intReaddat(void){FILE*fp;inti=0;if((fp=fopen("IN20.DAT","r"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%d,",&xx[i++]);}fclose(fp);return0;}voidWritedat(void){FILE*fp;fp=fopen("OUT20.DAT","w");fprintf(fp,"%d\n%d\n%.21f\n",totNum,totCnt,totPjz);fclose(fp);}標(biāo)準(zhǔn)答案:voidCalValue(){inti,thou,hun,ten,data;intab;longsum=0;for(i=0;i〈HAXNUM;i++){if(MX[i]>0){totNum++;/*統(tǒng)計(jì)正整數(shù)的個(gè)數(shù)*/thou=xx[i]/1000;/*求正整數(shù)的千位數(shù)*/hun=xx[i]%1000/100;/*求正整數(shù)的百位數(shù)*/ten=xx[i]%100/10;/*求正整數(shù)的十位數(shù)*/data=xx[i]%10;/*求正整數(shù)的個(gè)位數(shù)*/ab=thou+hun+ten+data;if(ab%2==0)/*如果各位數(shù)字之和是偶數(shù)*/{totCnt++;sum=sum+xx[i];}/*計(jì)算滿足條件的數(shù)的個(gè)數(shù)totCnt和這些數(shù)的總和sum*/}}totPjz=sum/totCnt;/*求這些數(shù)的算術(shù)平均值totPjz*/}知識(shí)點(diǎn)解析:本題的解題思路是首先利用一個(gè)for循環(huán)來依次從數(shù)組中取得的數(shù),由于題目要求求數(shù)組中正整數(shù)的個(gè)數(shù),因此,對(duì)于為零的整數(shù),不做任何處理,接著去取下一個(gè)數(shù)。只要某個(gè)數(shù)大于零,則該數(shù)一定是正整數(shù),這時(shí)就給變量totNum(正整數(shù)的個(gè)數(shù))累加1,用語句“thou=xx[i]/1000;hun=xx[i]%1000/100;ten=xx[i]%100/10;data=xx[i]%10;”可以實(shí)現(xiàn)取得當(dāng)前被處理數(shù)的千位、百位、十位,以及個(gè)位上的數(shù)字值,之后判斷求得的各個(gè)位上的數(shù)字值之和是否是偶數(shù)。若上述條件成立,則給變量totCnt的值加1,同時(shí)把當(dāng)前符合條件的數(shù)累加到變量sum中去,最終利用totPjz來求得滿足所給條件的所有數(shù)的平均值。國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第3套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN.dat中存有200個(gè)四位數(shù),并已調(diào)用讀函數(shù)Rdata()把這些數(shù)存入數(shù)組a中,請(qǐng)編寫函數(shù)diffCal(),其功能是:把一個(gè)四位數(shù)的個(gè)位數(shù)字上的值減去千位數(shù)字上的值,再減去百位數(shù)字上的值,最后減去十位數(shù)字上的值,如果得出的值大于等于0且原四位數(shù)是偶數(shù),則統(tǒng)計(jì)出滿足此條件的數(shù)的個(gè)數(shù)count,并把這些四位數(shù)按從小到大的順序存入數(shù)組b中。最后調(diào)用寫函數(shù)Wdata(),把結(jié)果count以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.dat文件中。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組a[200]、b[200],已定義變量count。請(qǐng)勿改動(dòng)數(shù)據(jù)文件IN.dat中的任何數(shù)據(jù)、主函數(shù)main()、讀函數(shù)Rdata()和寫函數(shù)Wdata()的內(nèi)容。#include<stdio.h>#defineMAX200inta[MAX],b[MAX],count=0;voiddiffCal(){}voidRdata(){inti;FILE*fp;fp=fopen("IN.dat","r");for(i=0;i<MAX;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}voidWdata(){FILE*fp;inti;fp=fopen("OUT.dat","w");fprintf(fp,"%d\n",count);for(i=0;i<count;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}voidmain(){inti;Rdata();diffCal();printf("滿足條件的數(shù)=%d\n",count);for(i=0;i<count;i++)printf("%d",b[i]);printf("\n");Wdata();}標(biāo)準(zhǔn)答案:voiddiffCal(){inti,thou,hun,ten,data,j;for(i=0;i<MAX;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(data-thou-hun-ten>=0&&a[i]%2!=1){b[count]=a[i];count++;}}for(i=0;i<count-1;i++)for(j=i+1;j<count;j++)if(b[i]>b[j]){data=b[i];b[i]=b[j];b[j]=data;}}知識(shí)點(diǎn)解析:暫無解析國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第4套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()實(shí)現(xiàn)從文件eng.in中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)encryptChar(),按給定的替代關(guān)系對(duì)數(shù)組xx中的所有字符進(jìn)行替代,仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件ps10.dat中。替代關(guān)系:f(p)=p*43mod256(p是數(shù)組中某一個(gè)字符的ASCII值,fO)是計(jì)算后新字符的ASCII值),如果原字符的ASCII值是偶數(shù)或計(jì)算后fb)值小于等于32,則該字符不變,否則將qp)所對(duì)應(yīng)的字符進(jìn)行替代。部分源程序己給出,原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=0;/*文章的總行數(shù)*/intReadDat(void)voidWriteDat(void)voidencryptChar(){}voidmain(){clrscr();if(ReadDat()){printf("數(shù)據(jù)文件ENG.IN不能打開!\n\007");return;}encryptChar();WriteDat();}intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("eng.in","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;fp-fopen("ps10.dat","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}標(biāo)準(zhǔn)答案:voidencryptChar(){/*字符替換過程中,運(yùn)算的中間結(jié)果可能超過256*//*因此采用整型存儲(chǔ)中間結(jié)果*/inti,j,t;for(i=0;i<maxline;i++)/*遍歷每一行*/{for(j=0;i<strlen(xx[i]);j++){/*用控型變量進(jìn)行所有運(yùn)算*/t=xx[i][j];t=t*43%256;/*判斷替換條件*/if(t<=32||xx[i][j]%2==0)continue;xx[i][j]=t;}}}知識(shí)點(diǎn)解析:關(guān)鍵點(diǎn):1.字符串讀寫。2.由于fgets()函數(shù)讀入數(shù)據(jù)時(shí)讀入換行符’\n’,因而需要在xx數(shù)組每一行末尾將換行符’\n’替換成結(jié)束符’\0’。本題中此步已經(jīng)在ReadDat()函數(shù)中完成。3.算法:讓字符指針pf指向每一行的開頭然后逐一往后移動(dòng),在移動(dòng)過程中按要求進(jìn)行轉(zhuǎn)換。*pf%2=0用于判斷是否為偶數(shù)。If()條件語句用于控制不替代字符。4.中間變量的類型選擇整型。國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第5套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、請(qǐng)編制函數(shù)ReadDat()實(shí)現(xiàn)從文件IN83.DAT中讀取1000個(gè)十進(jìn)制整數(shù)到數(shù)組xx中。請(qǐng)編制函數(shù)Compute()分別計(jì)算出xx中奇數(shù)的個(gè)數(shù)odd、奇數(shù)的平均值ave1、偶數(shù)的平均值ave2及所有奇數(shù)的方差toffc的值。最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到OUT83.DAT文件中。計(jì)算方差的公式如下:設(shè)N為奇數(shù)的個(gè)數(shù),xx[i]為奇數(shù),ave1為奇數(shù)的平均值。原始數(shù)據(jù)的存放格式是:每行存放10個(gè)數(shù),并用逗號(hào)隔開(每個(gè)數(shù)均大于0且小于等于2000)。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()和輸寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleavel=0.0,ave2=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void){FILE*fp;if((fp=fopen("IN83.DAT","r"))==NULL)return1;fclose(fp);return0;}voidCompute(void){}voidmain(){inti;for(i=0;i<MAX;i++xx[i]=0;if(ReadDat()){printf("數(shù)據(jù)文件IN83.DAT不能打開!\007\n");return;}Compute();printf("ODD=%d\nAVEl=%f\nAVE2=%f\nTOTFC=%f\n",odd,avel,ave2,totfc);WriteDat();}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT83.DAT","w");fprintf(fp,"%d\n%lf\n%lf\n%lf\n",odd,ave1,ave2,totfc);fclose(fp);}標(biāo)準(zhǔn)答案:intReadDat(void){FILE*fp;inti,j;if((fp=fopen("IN83.DAT","r"))==NULL)return1;for(i=0;i<100;i++){for(j=0;j<10;j++)fscanf(fp,"%d,",&xx[i*10+j]);fscanf(fp,"\n");if(feof(fp))break;}fclose(fp);return0;}voidCompute(void){inti,yy[MAX];for(i=0;i<1000;i++)if(xx[i]%2!=0){odd++;/*計(jì)算出xx中奇數(shù)的個(gè)數(shù)odd*/ave1+=xx[i];/*求奇數(shù)的和*/yy[odd-1]=xx[i];/*將奇數(shù)存入數(shù)組yy中*/}else{even++;/*計(jì)算出xx中偶數(shù)的個(gè)數(shù)even*/ave2+=xx[i];/*求偶數(shù)的和*/}ave1/=odd;/*求奇數(shù)的平均值*/ave2/=even;/*求偶數(shù)的平均值*/for(i=0;i<o(jì)dd;i++)totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;/*求所以奇數(shù)的方差*/}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)從文件中讀取數(shù)據(jù)。(2)奇偶數(shù)的判斷和方差的求法。在C語言中,有一結(jié)構(gòu)體類型FILE,其中包含文件的一些屬性信息??啥x指針指向該結(jié)構(gòu)體,這個(gè)指針稱為文件指針。要從文件中讀取數(shù)據(jù),首先要判斷該文件是否能以“讀”的方式打開。若能打開,使用函數(shù)intfscanf(FILE*fp,char*format,args)從fp所指向的文件中依次讀取數(shù)據(jù)。在本題中,數(shù)據(jù)的存放很有規(guī)律,將數(shù)據(jù)讀出存入數(shù)組xx時(shí),只要控制數(shù)組下標(biāo)就可以了。若文件結(jié)束,則退出讀取循環(huán)。最后要關(guān)閉文件。若一個(gè)數(shù)除以2取余得0,則該數(shù)是偶數(shù),否則為奇數(shù)。由方差公式可知,這是求一些連續(xù)的數(shù)的表達(dá)式的值,所以可以使用循環(huán)求得方差。國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第6套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN68.DAT中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)jsVal(),其功能是:如果4位數(shù)各位上的數(shù)字均是奇數(shù),則統(tǒng)計(jì)出滿足此條件的個(gè)數(shù)cnt,并把這些4位數(shù)按從大到小的順序存入數(shù)組b中。最后調(diào)用函數(shù)writeDat()把結(jié)果cnt及數(shù)組b中符合條件的4位數(shù)輸出到OUT68.DAT文件。注意:部分源程序已給出。程序中已定義數(shù)組:a[200],b[200],已定義變量:cnt。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN68.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i])fclose(fp);}voidmain(){inti;readDat();jsVal();printf("滿足條件的數(shù)=%d\n",cnt);for(i=0;i<cnt;i++)printf("%d",b[i]);printf("\n");writeDat();}writeDat(){FILE*fp;inti;fp=fopen("out68.dat","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%din",b[i]);fclose(fp);}標(biāo)準(zhǔn)答案:voidjsVal(){inti,thou,hun,ten,data,j;for(i=0;i<200;i++){thou=a[i]/1000;/*求四位數(shù)的千位數(shù)字*/hun=a[i]%1000/100;/*求四位數(shù)的百位數(shù)字*/ten=a[i]%100/10;/*求四位數(shù)的十位數(shù)字*/data=a[i]%10;/*求四位數(shù)的個(gè)位數(shù)字*/if(thou%2!=0&&hun%2!=0&&ten%2!=0&&data%2!=0)/*如果4位數(shù)各位上的數(shù)字均是奇數(shù)*/{b[cnt]=a[i];/*將滿足條件的數(shù)存入數(shù)組b中*/cnt++;/*統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/}}for(i=0;i<cnt-1;i++)/*將數(shù)組b中的數(shù)按從大到小的順序排列*/for(j=i+1;j<cnt;j++)if(b[i]<b[j]){data=b[i];b[i][b[j];b[j]=data;}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)“%”與“/”的使用。(2)循環(huán)結(jié)構(gòu)與判斷結(jié)構(gòu)的使用。(3)數(shù)據(jù)的排序。本題中,首先借助“%”與“/”將4位數(shù)各位上的數(shù)拆成獨(dú)立的數(shù)字:將1個(gè)4位數(shù)整除1000則可得到其千位上的數(shù)字,除以1000取余再整除100則可得百位上的數(shù)字,除以100取余再整除10則可得十位上的數(shù)字,除以10取余則得個(gè)位上的數(shù)字。1個(gè)數(shù)除以2取余所得的數(shù)不等于0,則此數(shù)是奇數(shù)。題中要求將符合條件的4位數(shù)按從大到小的順序存入數(shù)組b中,我們可以先將符合條件的4位數(shù)存入數(shù)組b,然后對(duì)b中的數(shù)進(jìn)行排序。排序使用“選擇排序法”。國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第7套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知在文件IN.dat中存有若干個(gè)(少于200個(gè))四位數(shù)字的正整數(shù),函數(shù)ReadDat()讀取這若干個(gè)正整數(shù)并存入數(shù)組number中。請(qǐng)編寫函數(shù)CalValue(),其功能要求是:①求出文件中共有的正整數(shù)個(gè)數(shù)totNum;②求這些數(shù)右移1位后,產(chǎn)生的新數(shù)是奇數(shù)的數(shù)的個(gè)數(shù)totCnt以及滿足此條件的這些數(shù)(右移前的值)的算術(shù)平均值totAve。最后調(diào)用函數(shù)writeDat()把所求的結(jié)果輸出到OUT.dat文件中。注意:部分源程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)writeDat()的內(nèi)容。#include<stdio.h>#include<conio.h>#defineMAXNUM200intnumber[MAXNUM];inttotNum=0;/*文件IN.dst中共有的正整數(shù)個(gè)數(shù)*/inttotCnt=0;/*符合條件的正整數(shù)的個(gè)數(shù)*/doubletotAve=0.0;/*平均值*/intReadDat(void);voidwriteDat(void);voidCalValue(void){}voidmain(){inti;for(i=0;i<MAXNUM;i++)number[i]=0;if(ReadDat()){printf("數(shù)據(jù)文件IN.dst不能打開!\007\n");return;}CalValue();printf("文件IN.dst中共有的正整數(shù)個(gè)數(shù)=%d個(gè)\n",totNum);printf("符合條件的正整數(shù)的個(gè)數(shù)=%d個(gè)\n",totCnt);printf("平均值=%.2f\n",totAve);writeDat();}intReadDat(void){FILE*fp;inti=0;if((fp=fopen("IN.dat","r"))==NULL)return1;while(!feof(fp))fscanf(fp,"%d,",&number[i++]);fclose(fp);return0;}voidwriteDat(void){FILE*fp;fp=fopen("OUT.dat","w");fprintf(fp,"%d\n%d\n%6.2f\n",totNum,totCnt,totAve);fclose(fp);}標(biāo)準(zhǔn)答案:voidCalValue(void){inti,data;for(i=0;i<MAXNUM;i++){if(!number[i])break;if(number[i]>0)totNum++;data=number[i]>>1;if(data%2){totCnt++;totAve+=number[i];}}totAve/=totCnt;}[解題思路]在for循環(huán)語句中,自變量i從0遞增到MAXNUM對(duì)數(shù)組number中的每個(gè)數(shù)進(jìn)行判斷,如果number[i]的值大于0,說明number[i]的值為正整數(shù),統(tǒng)計(jì)正整數(shù)個(gè)數(shù)的變量totNum加1;然后number[i]右移1位得到data的值;再對(duì)data的值除2求余數(shù),如果其值為1,則統(tǒng)計(jì)變量totCnt加1,同時(shí)把number[i]的值加到totAve上,得到這些數(shù)的和。退出循環(huán)后,用totAve的值除以totCnt,就得到了這些數(shù)的算術(shù)平均值totAve。知識(shí)點(diǎn)解析:暫無解析國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第8套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、下列程序的功能是:將一正整數(shù)序列{K1,K2,…,K91重新排成一個(gè)新的序列。新序列中,比K1小的數(shù)都在K1的左面(后續(xù)的再向左存放),比KI大的數(shù)都在K1的右面(后續(xù)的再向右存放),從K1向右掃描。要求編寫函數(shù)JsValue()實(shí)現(xiàn)此功能,最后調(diào)用函數(shù)writeDat()把新序列輸出到文件out90.dat中。說明:在程序中已給出了.10個(gè)序列,每個(gè)序列中有9個(gè)正整數(shù),并存入數(shù)組a[10][9]中,分別求出這10個(gè)新序列。例如:序列排序前{6,8,9,1,2,5,4,7,3}序列排序后{3,4,5,2,1,6,8,9,7}注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#includejsValue(inta[lO][9]){}main(){inta[10][9]={{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},{8,2,1,9,3,5,4,6,7},{3,5,1,2,9,8,6,7,4},{4,7,8,9,1,2,5,3,6},{4,7,3,5,1,2,6,8,9},{9,1,3,5,8,62,4,7}{2,6,1,9,8,35,7,4}{5,3,7,9,1,82,6,4}{7,1,3,2,5,89,4,6}};inti,j;jsValue(a);for(i=0;i<10;i++){for(j=0;j<9;j++){printf("%d",a[i][j]);if(j<=7)printf(",");}printf("\n");}writeDat(a);}writeDat(intail0][9]){FILE*fp;inti,j;fp=fopen("outg0.dat","w");for(i=0;i<10;i++){for(j=0;j<9;j++){fprintf(fp,"%d",a[i][j]);if(j<=7)fprintf(fp,",");}fprintf(fp,"\n");}fclose(fp);}標(biāo)準(zhǔn)答案:voidjsValue(inta[10][9]){intvalue,i,j,k,hum;for(i=0;i<10;i++){value=a[i][0]);/*將一行的第一個(gè)元素賦給value*/for{j=0;j<9;j++)if(a[i][j]<value)/*若后面的數(shù)中有比第土個(gè)數(shù)據(jù)小的數(shù)*/{num=a[i][j];/*則把這個(gè)數(shù)取出,賦給num*/for(k=j;k>0;k--)/*將這個(gè)數(shù)據(jù)左側(cè)的數(shù)依次向右移動(dòng)*/{a[i][k]=a[i][k-1];}a[i][0]=num;/*再將這個(gè)數(shù)放在最左側(cè)*/}}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)二維數(shù)組的訪問和數(shù)組元素的移動(dòng)。(2)循環(huán)結(jié)構(gòu)和判斷結(jié)構(gòu)的嵌套使用。數(shù)據(jù)存放在一個(gè)二維數(shù)組中,每一行數(shù)為數(shù)據(jù)處理的基本單位。將第1個(gè)數(shù)取出依次和后面的數(shù)比較,若后面的數(shù)中有比第1個(gè)數(shù)據(jù)小的數(shù),則將這個(gè)數(shù)取出。將這個(gè)數(shù)據(jù)左側(cè)的數(shù)依次向右移動(dòng)(包括第1個(gè)數(shù)),然后將這個(gè)數(shù)放在最左側(cè)。掃描完一行后,比第1個(gè)數(shù)小的數(shù)就都在第1個(gè)數(shù)的左側(cè),而比它大的就在它的右側(cè)。對(duì)數(shù)的掃描和移動(dòng)均可以使用循環(huán)實(shí)現(xiàn)。再使用循環(huán)實(shí)現(xiàn)對(duì)每一行數(shù)據(jù)的訪問。國(guó)家三級(jí)(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第9套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN69.DAT中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)JsVal(),其功能是:把一個(gè)4位數(shù)的千位數(shù)上的值減百位數(shù)上的值再減十位數(shù)上的值最后減個(gè)位數(shù)上的值,如果得出的值大于等于零且此4位數(shù)是奇數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公模式下的軟件盜版防范策略研究
- 國(guó)慶節(jié)活動(dòng)團(tuán)購(gòu)活動(dòng)方案
- 生態(tài)旅游規(guī)劃的核心策略案例研究報(bào)告
- Unit 2 My family(Period 4)(說課稿)-2024-2025學(xué)年人教大同版(2024)英語三年級(jí)上冊(cè)
- 12 盤古開天地 (說課稿)-2024-2025學(xué)年統(tǒng)編版語文四年級(jí)上冊(cè)
- 21三黑和土地 (說課稿)-2024-2025學(xué)年六年級(jí)上冊(cè)語文統(tǒng)編版
- 14文言文二則《兩小兒辯日》(說課稿)-2023-2024學(xué)年統(tǒng)編版語文六年級(jí)下冊(cè)
- 2024年五年級(jí)數(shù)學(xué)上冊(cè) 5 簡(jiǎn)易方程第16課時(shí) 實(shí)際問題與方程(5)配套說課稿 新人教版
- 2024-2025學(xué)年高中物理 第10章 熱力學(xué)定律 4 熱力學(xué)第二定律說課稿1 新人教版選修3-3
- 2025道路綠化養(yǎng)護(hù)委托合同
- 東南大學(xué)宣講介紹
- 教師的解放與超越
- 2023年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)題庫及答案解析
- 九年級(jí)下冊(cè)-2023年中考?xì)v史總復(fù)習(xí)知識(shí)點(diǎn)速查速記(部編版)
- GB/T 18103-2022實(shí)木復(fù)合地板
- 釀酒工藝教案
- 地形圖的識(shí)別及應(yīng)用涉密地圖的保密管理課件
- 小學(xué)四年級(jí)語文閱讀理解專項(xiàng)訓(xùn)練
- 輔導(dǎo)班合伙人合同范本(2篇)
- 2021年嘉興市法院書記員招聘考試試題及答案解析
- 《念奴嬌赤壁懷古》名量教學(xué)實(shí)錄(特級(jí)教師程翔)
評(píng)論
0/150
提交評(píng)論