國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷2(共9題)_第1頁(yè)
國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷2(共9題)_第2頁(yè)
國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷2(共9題)_第3頁(yè)
國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷2(共9題)_第4頁(yè)
國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷2(共9題)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷2(共9套)(共9題)國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第1套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知在文件IN1.DAT中存有100個(gè)產(chǎn)品銷(xiāo)售記錄,每個(gè)產(chǎn)品銷(xiāo)售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱(chēng)mc(字符型10位)、單價(jià)dj(整型)、數(shù)量sl(整型)、金額je(長(zhǎng)整型)五部分組成。其中:金額=單價(jià)×數(shù)量。函數(shù)ReadDat()的功能是讀取這100個(gè)銷(xiāo)售記錄并存入結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SortDat(),其功能要求:按產(chǎn)品名稱(chēng)從小到大進(jìn)行排列,若產(chǎn)品名稱(chēng)相同,則按金額從小到大進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT1.DAT中。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容?!驹囶}程序】#include<stdio.h>#include<memory.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*產(chǎn)品代碼*/charmc[11];/*產(chǎn)品名稱(chēng)*/intdj;/*單價(jià)*/intsl;/*數(shù)量*/longje;/*金額*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}main(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat({FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN1.DAT","r");for(i=,0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(){FILE*fp;inti;fp=fopen("OUT1.DAT","w");for(i=0;i<100;i++)fprintf(fp,"%s%s%4d%5d%101d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fclose(fp);}標(biāo)準(zhǔn)答案:voidSortDat(){inti,j;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++){if(sell[i].mc>sell[j].mc)/*按產(chǎn)品名稱(chēng)從小到大進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}elseif((sell[i].mc==sell[j].mc)&&(sell[i].je>sell[j].je))/*若產(chǎn)品名稱(chēng)相同則按金額從小到大進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}}或者直接使用庫(kù)函數(shù)中的字符串比較函數(shù)strcmp(),即voidSortDat(){inti,j;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++){if(strcmp(sell[i].mc,sell[j].mc)>0/*按產(chǎn)品名稱(chēng)從小到大進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}elseif(strcmp(sell[i].mc,sell[j].mc)==0)/*若產(chǎn)品名稱(chēng)相同*/if(sell[i].je>sell[j].je)/*則按金額從小到大進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}}知識(shí)點(diǎn)解析:根據(jù)題目要求,先按產(chǎn)品名稱(chēng)從小到大的順序進(jìn)行排列,若產(chǎn)品名稱(chēng)相同,則按金額從小到大進(jìn)行排列。由產(chǎn)產(chǎn)品名稱(chēng)是字符型,而定兩字符的大小依據(jù)是其ASCII碼值。在此就用選擇排序法來(lái)實(shí)現(xiàn),用第一個(gè)元素的產(chǎn)品名稱(chēng)和它后面的元素的產(chǎn)品名稱(chēng)進(jìn)行比較,若發(fā)現(xiàn)當(dāng)前元素的產(chǎn)品名稱(chēng)比后面的某個(gè)元素的產(chǎn)品名稱(chēng)對(duì)應(yīng)的ASCII碼值更大,則交換這兩個(gè)元素的位置。依次類(lèi)推,最終在第一個(gè)元素中存放的是產(chǎn)品名稱(chēng)最小的元素,這樣就實(shí)現(xiàn)了該函數(shù)排序的功能。編寫(xiě)此函數(shù)時(shí),對(duì)于初學(xué)者來(lái)說(shuō)建議用以下函數(shù)來(lái)表達(dá):if(sell[i].mc>sell[j].mc){t=sell[i];sell[i]=sell[j];sell[j]=t;}elseif((sell[i].mc==sell[j].mc)&&(sell[i].je>sell[j].je)){t=sell[i];sell[i]=sell[j];sell[j]=t;}而對(duì)于有一定基礎(chǔ)的編程者來(lái)說(shuō)可運(yùn)用下面語(yǔ)句來(lái)實(shí)現(xiàn):if((sell[i].mc>sell[j].mc)‖(sell[i].mc==sell[j].mc)&&(sell[i].je>sell[j].je))該語(yǔ)句的含義是先sell[i].mc>sell[j].mc進(jìn)行比較,若產(chǎn)品名稱(chēng)滿(mǎn)足此條件,就對(duì)這兩個(gè)數(shù)據(jù)位置調(diào)換;否則,就判斷產(chǎn)品名稱(chēng)是否相等,若相等就對(duì)金額進(jìn)行大小比較?最終實(shí)現(xiàn)按從小到大的順序排列。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第2套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、下列程序的功能是:計(jì)算出啟然數(shù)SIX和NINE,它們滿(mǎn)足的條件是SIX+SIX+SIX=NINE+NINE的個(gè)數(shù)cnt,以及滿(mǎn)足此條件的所有SIX與NINE的和sum。請(qǐng)編寫(xiě)函數(shù)countValue()實(shí)現(xiàn)程序要求,最后調(diào)用函數(shù)writeDAT()把結(jié)果cnt和sum輸出到文件OUT51.DAT中。其中的S,I,X,N,I,N,E各代表一個(gè)十進(jìn)制數(shù)。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()和寫(xiě)函數(shù)writeDAT()的內(nèi)容。試題程序:#includeintcnt,sum;voidCountValue(){}Voidmain(){Cnt=Sum=0;COUNtValUe();printf("滿(mǎn)足條件的個(gè)數(shù)=%\n",cnt):printf("滿(mǎn)足條件的所有的SIX與NINE的和=%d\n",sum);}WriteDAT();{FILE*fp;fp=fopen("OUT51.DAT","w");fprintf(fp,"%d\n%d\n",cnt,sum);fclose(fp);}標(biāo)準(zhǔn)答案:voidcountValue(){inti=100;while(1){if(3*i%2==0&&3*i/2>1000&&3*i/2<=9999)/*如果滿(mǎn)足條件SIX+SIX+SIX=NINE*NINE*/{/*即一個(gè)3位數(shù)乘3再除2余數(shù)為0,且所得的數(shù)為4位數(shù)*/cnt++;/*統(tǒng)計(jì)滿(mǎn)足條件的數(shù)的個(gè)數(shù)*/sum+=i+3*i/2;/*求滿(mǎn)足此條件的所有SIX與NINE的和*/i++;}elsei++;/*如果不滿(mǎn)足條什,則取下一個(gè)數(shù)*/if(i>999||3*i/2>9999)break;/*當(dāng)SIX不為3位數(shù)時(shí)或所得的數(shù)不為四位數(shù)時(shí),退出循環(huán)*/}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)循環(huán)與判斷的嵌套使用。(2)多條件的布爾運(yùn)算。(3)“%”與“/”運(yùn)算符的使用。根據(jù)題意,求的是滿(mǎn)足3位數(shù)乘以3等于4位數(shù)乘以2的數(shù)的個(gè)數(shù)。我們可以使用循環(huán)結(jié)構(gòu)對(duì)所有的3位數(shù)進(jìn)行判斷,若某個(gè)3位數(shù)乘以3整除2所得的數(shù)是4位整數(shù),則這個(gè)3位數(shù)足滿(mǎn)足條件的數(shù)。當(dāng)判斷的數(shù)不再是3位數(shù)或者進(jìn)行處理后所得的數(shù)大于9999,則要退出循環(huán)。在這里,還要注意判斷結(jié)構(gòu)中,各條件之問(wèn)是用“與”運(yùn)算還是用“或”運(yùn)算。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第3套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、請(qǐng)補(bǔ)充完整程序,使得程序能實(shí)現(xiàn)以下功能:從文件IN.dat中讀取200個(gè)整數(shù)至數(shù)組number中,求出最大數(shù)max及最大數(shù)的個(gè)數(shù)cnt和數(shù)組number中能被3整除或能被7整除的算術(shù)平均值ave(保留2位小數(shù))。把結(jié)果max、cnt、ave輸出到OUT.dat文件中。注意:部分程序、讀數(shù)據(jù)函數(shù)read_dat(intnumber[200])及輸出格式已給出。#include<conio.h>#include<stdio.h>#defineN200voidread_dat(intnumber[N]){inti,j;FILE*fp;fp=fopen("IN.dat","r");for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp,"%d,",&number[i*10+j]);printf("%d",number[i*10+j]);}printf("\n");}fclose(fp);}voidmain(){intcnt,number[N],max;floatave;FILE*fw;inti,k;’longj=0;fw=fopen("OUT.dat","w");read_dat(number);/************************************************//************************************************/printf("\n\nmax=%d,cnt=%d,ave=%6.2f\n",max,cnt,ave);fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,ave);fclose(fw);}標(biāo)準(zhǔn)答案:max=number[0];for(i=1,k=0;i<N;i++){if(number[i]>max)max=number[i];if(number[i]%3==0||number[i]%7==0){j+=number[i];k++;}}for(i=0,cnt=0;i<N;i++)if(number[i]==max)cnt++;ave=(float)(j*100/k)/100;[解題思路]用整型變量max保存數(shù)組number中元素的最大值,首先把數(shù)組number的第一個(gè)元素number[0]存入max中;然后在for循環(huán)語(yǔ)句中當(dāng)循環(huán)變量i從1遞增到N-1時(shí),對(duì)數(shù)組number中的每一個(gè)元素number[i]與max進(jìn)行比較,如果表達(dá)式number[i]>max成立,則把數(shù)組元素number[i]的值存入變量max中;再用表達(dá)式number[i]%3==0||number[i]%7==0判斷number[i]能否被3或7整除,如果表達(dá)式結(jié)果值為真,則把數(shù)組元素number[i]的值與變量j的值相加,同時(shí)計(jì)數(shù)變量k加1。退出循環(huán)后,變量max中的值就是數(shù)組number中元素的最大值,再用for循環(huán)語(yǔ)句對(duì)數(shù)組number中的每一個(gè)元素與max的值進(jìn)行相等的判斷,如果number[i]的值等于max,則計(jì)數(shù)變量cnt加1。最后用表達(dá)式(float)(j*100/k)/100求得數(shù)組number中能被3整除或能被7整除的算術(shù)平均值。知識(shí)點(diǎn)解析:暫無(wú)解析國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第4套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知在文件IN34.DAT中存有100個(gè)產(chǎn)品銷(xiāo)售記錄,每個(gè)產(chǎn)品銷(xiāo)售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱(chēng)mc(字符型10位)、單價(jià)dj(整型)、數(shù)量s1(整型)、金額je(長(zhǎng)整型)幾部分組成。其中,金額=單價(jià)×數(shù)量可計(jì)算得出。函數(shù)ReadDat()的功能是讀取這100個(gè)銷(xiāo)售記錄并存入數(shù)組sell中。請(qǐng)編制函數(shù)SortDat(),其功能要求:按產(chǎn)品代碼從大到小進(jìn)行排列,若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT34.DAT中。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫(xiě)函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];charmc[11];intdj;ints1;longje;}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,0,sizeofsell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN34.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str+4,10;memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].s1=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].s1;}fclose(fp);}voidWriteDat(){FILE*fp;inti;fp=fopen("OUT34.DAT","w");for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%101d\n",sellIi].dm,sell[i].mc,sell[i].dj,sell[i].s1,sell[i].je);}fclose(fp);}標(biāo)準(zhǔn)答案:voidSortDat(){inti,j;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++){if(strcmp(sell[i].dm,sell[j].dm)<0/*按產(chǎn)品代碼從大到小進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}elseif(strcmp(sell[i].dm,sell[j].dm)==0)/*若產(chǎn)品代碼相同*/if(sell[i].je<sell[j].je)/*則按金額從大到小進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)結(jié)構(gòu)體及結(jié)構(gòu)數(shù)組。(2)結(jié)構(gòu)數(shù)組的排序。(3)字符型數(shù)組的比較。本題著重考查結(jié)構(gòu)體變量的訪(fǎng)問(wèn)、賦值,包括結(jié)構(gòu)體本身及結(jié)構(gòu)體中各個(gè)成員的訪(fǎng)問(wèn)和賦值。根據(jù)題意要求,我們首先要比較產(chǎn)品代碼。因?yàn)楫a(chǎn)品代碼為字符型,所以不能使用簡(jiǎn)單的比較運(yùn)算符進(jìn)行比較。在這里,我們使用了字符串處理函數(shù)strcmp(char*str11,char*str12,unsignedintcout)對(duì)其進(jìn)行比較。對(duì)于比較結(jié)果,若是代碼相同,則要按照金額進(jìn)行新的比較,否則可直接存入數(shù)組。因?yàn)榧憾x了結(jié)構(gòu)數(shù)組,就可以使用循環(huán)進(jìn)行比較排序。排序同樣采用前面介紹的“選擇排序法”。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第5套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、對(duì)10個(gè)候選人進(jìn)行選舉,現(xiàn)有一個(gè)100條記錄的選票文件IN84.DAT,其數(shù)據(jù)存放格式是每條記錄的長(zhǎng)度均為10位,第一位表示第一個(gè)人的選中情況,第二位表示第二個(gè)人的選中情況,依此類(lèi)推。每一位候選人的記錄內(nèi)容均為字符O或1,1表示此人被選中,0表示此人未被選中,若一張選票選中人數(shù)大于5個(gè)人時(shí)被認(rèn)為無(wú)效的選票。給定函數(shù)ReadDat()的功能是把選票數(shù)據(jù)讀入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)CoutRs()來(lái)統(tǒng)計(jì)每個(gè)人的選票數(shù)并把得票數(shù)依次存入yy[0]到y(tǒng)y[9]中,最后調(diào)用函數(shù)WfiteDat()把結(jié)果”輸出到文件OUT84.DAT中。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫(xiě)函數(shù)WfiteDat()的內(nèi)容。試題程序:#include<Stdio.h>charxx[100][11];intYY[10];intReadDat(void);voidWriteDat(void);voidC0utRs(void){}voidmain(){inti;for(i=0;i<10;i++)yy[i]=0;if(ReadDat()){printf("數(shù)據(jù)文件IN84.DAT不能打開(kāi)!\n\007");return;}CoutRs();.WriteDat();}intReadDat(void){FILE*fp;inti;chartt[13];if((fp=fopen("IN84.DAT","r")==NULL)return1;for(i=0;i<100;i++){if(fgets(tt,13,fp)==NULL)return1;memcpy(xx[i],tt,10);xx[i][10]=0;}fclose(fp);return0;}voidWriteDat){FILE*fp;inti;fp=foDen("OUT84.DAT","w");for(i=0;i<10;i++){fprintf(fp,"%dkn",yy[i]);printf(,"第%d個(gè)人的選票數(shù)=%d\n",i+1,yy[i]);}fclose(fp);}標(biāo)準(zhǔn)答案:voidCoutRs(void){inti,count,j;char*pf;for(i=0;i<10;i++)yy[i]=0;for(i=0;i<100;i++){pf=xx[i];/*指針pf指向字符串的第一個(gè)字符*/count=0;while(*pr)if(*Df==’1’){count++;/*統(tǒng)計(jì)每條記錄中1的個(gè)數(shù)*/pf++;}elsepf++;if(count<=5)/*如果每條記錄中1的個(gè)數(shù)小于等于5則為有效票*/{pf=xx[i];/*指針pf指向字符串的第一個(gè)字符*/j=0;while(*pf)/*統(tǒng)計(jì)每個(gè)人的選票數(shù)并把得票數(shù)依次存入yy[0]到y(tǒng)y[9]中*/if(*pf==’1’){yy[j]+=1;j++;pf++;}elseif(*pf==’0’){j++;pf++;}}}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)二維數(shù)組的操作。(2)指向數(shù)組的指針。在本題中,要先判斷選票是否有效。因?yàn)橛涗洿娣旁谝粋€(gè)二維數(shù)組中,為了簡(jiǎn)便我們?yōu)閿?shù)組的一組元素定義一個(gè)指向該數(shù)組每一行數(shù)據(jù)的指針,例如,chaf*p=xx[2]。初始時(shí)該指針指向該行的第一個(gè)元素,指針地址每加1,則指向下一個(gè)元素。這樣就可以輕松地統(tǒng)計(jì)每一個(gè)選票。設(shè)一變量標(biāo)記每一個(gè)選票中1的個(gè)數(shù),若其不大于5,則選票有效。若選票有效,則依次查看哪一個(gè)元素為1,在數(shù)組”相應(yīng)的元素上加1。使用循環(huán)實(shí)現(xiàn)對(duì)所有記錄的訪(fǎng)問(wèn)。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第6套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()實(shí)現(xiàn)從文件IN.dat中讀取1000個(gè)十進(jìn)制整數(shù)到數(shù)組xx中。編寫(xiě)函數(shù)Compute(),其功能是:分別計(jì)算出xx數(shù)組中奇數(shù)的個(gè)數(shù)odd、奇數(shù)的平均值ave1、偶數(shù)的個(gè)數(shù)even、偶數(shù)的平均值ave2,以及所有奇數(shù)的方差totfc的值。調(diào)用函數(shù)WritcDat(),把結(jié)果輸出到OUT.dat文件中。計(jì)算方差的公式如下:式中,N為奇數(shù)的個(gè)數(shù);xx[i]為奇數(shù);ave1為奇數(shù)的平均值。原始數(shù)據(jù)文件存放的格式是:每行存放10個(gè)數(shù)(每個(gè)數(shù)均大于0且小于等于2000),并用逗號(hào)隔開(kāi)。注意:部分源程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleave1=0.0,ave2=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void){FILE*fp;inti,j;if((fp=fopen("IN.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){}voidmain(){inti;for(i=0;i<MAX;i++)xx[i]=0;if(ReadDat()){printf("數(shù)據(jù)文件IN.dat不能打開(kāi)!\007\n");return;}Compute();printf("ODD=%d\nEVEN=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n",odd,even,ave1,ave2,totfc);WriteDat();}voidWriteDat(void){FILE*fp;fp=fopen("OUT.dat","w");fprintf(fp,"%d\n%d\n%f\n%f\n%f\n",odd,even,ave1,ave2,totfc);fclose(fp);}標(biāo)準(zhǔn)答案:voidCompute(void){inti,yy[MAX];for(i=0;i<1000;i++)if(xx[i]%2){odd++;ave1+=xx[i];yy[odd-1]=xx[i];}else{even++;ave2+=xx[i];}ave1/=odd;ave2/=even;for(i=0;i<o(jì)dd;i++)totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;}[解題思路]對(duì)數(shù)組xx[i]中的1000個(gè)整數(shù)逐個(gè)進(jìn)行掃描處理,如果xx[i]對(duì)2的余數(shù)為1,則xx[i]為奇數(shù),變量odd加1,把xx[i]的值加到變量ave1中,同時(shí)把xx[i]的值輸給數(shù)組yy:否則xx[i]為偶數(shù),變量even加1,把xx[i]的值加到變量ave2中。循環(huán)結(jié)束后,變量ave1的值即為所有奇數(shù)的和,用ave1的值除以奇數(shù)的個(gè)數(shù)odd,就得到所有奇數(shù)的平均值;變量ave2的值即為所有偶數(shù)的和,用ave2的值除以偶數(shù)的個(gè)數(shù)even,就得到所有偶數(shù)的平均值。最后在for循環(huán)語(yǔ)句中根據(jù)方差的公式求出所有奇數(shù)的方差。知識(shí)點(diǎn)解析:暫無(wú)解析國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第7套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN85.DAT中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函gtjsVal(),其功能是:如果一個(gè)4位數(shù)的千位數(shù)字上的值加十位數(shù)字上的值恰好等于百位數(shù)字上的值加上個(gè)位數(shù)字上的值,并且此4位數(shù)是偶數(shù),則統(tǒng)計(jì)出滿(mǎn)足此條件的數(shù)的個(gè)數(shù)cnt并把這些4位數(shù)按從小到大的順序存入數(shù)組b中,最后調(diào)用寫(xiě)函數(shù)writeDat()把結(jié)果cnt及數(shù)組b中符合條件的4位數(shù)輸出到OUT85.DAT文件中。注意:部分源程序已給出。程序中已定義數(shù)組:a[200],b[200],已定義變量:cnt。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫(xiě)函數(shù)writeDat()的內(nèi)容。試題程序:#include#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN85.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}main(){inti;readDat();jsVal();printf("滿(mǎn)足條件的數(shù)=%d\n",cnt);for(i=0;i<cnt;i++)printf("%d",b[i]);printf("\n");writeDat();}writeD&t(){FILE*fp;inti;fp=fopen("OUT85.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",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+ten==hun+data&&a[i]%2!=1){/*如果千位數(shù)加十位數(shù)等于百位數(shù)加上個(gè)位數(shù),并且此數(shù)是偶數(shù)*/b[cnt]=a[i];/*則將滿(mǎn)足條件的數(shù)存入數(shù)組b中*/cnt++;/*統(tǒng)計(jì)滿(mǎn)足條件的數(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)運(yùn)算符“%”及“/”的使用。(2)選擇結(jié)構(gòu)中多個(gè)條件的布爾運(yùn)算。(3)數(shù)據(jù)的排序。在本題中,首先要將一個(gè)4位數(shù)的千位、百位、十位、個(gè)位拆成獨(dú)立的數(shù)字。這里借助特殊運(yùn)算符號(hào)“%”(取余)和“/”(整除),拆分方法略。題中給出的兩個(gè)條件必須同時(shí)滿(mǎn)足,所以?xún)蓷l件之間用“與”運(yùn)算。將符合條件的數(shù)先存入數(shù)組b中,再對(duì)b中的數(shù)據(jù)進(jìn)行排序。排序使用“選擇排序法”。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第8套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()的功能是實(shí)現(xiàn)從文件ENG62.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)encryChar(),按給定的替代關(guān)系對(duì)數(shù)組xx中所有字符進(jìn)行替代,仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS62.DAT中。替代關(guān)系:f(p)=p*13mod256(p是數(shù)組xx中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),如果計(jì)算后f(p)的值小于等于32或其ASCH值是偶數(shù),則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。注意:部分源程序已給出。原始數(shù)據(jù)文件的存放格式是每行的寬度均小于80個(gè)字符。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫(xiě)函數(shù)WriteDat()的內(nèi)容。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidencryChar(){}voidmain(){clrscr();if(ReadDat()){printf("數(shù)據(jù)文件ENG62.IN不能打開(kāi)!\n\007");return;}encryChar();WriteDat();}intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("ENG62.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(){FILE*fp;inti;fp=fopen("ps62.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)答案:voidencryChar(){inti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];/*指針pf指向該行的首地址*/while(*pf!=0){if(((*pf*13%256)%2==0)||(*pf*13%256<=32))/*如果計(jì)算后的值小于等于32或其ASCII值是偶數(shù)*/{pf++;/*則該字符不變,去取下一個(gè)字符*/continue;/*退出此次循環(huán)*/}*pf=*pf*13%256;/*否則將新字符替代原字符*/pf++;/*去取下一個(gè)字符*/}}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)字符對(duì)應(yīng)的ASCII碼。(2)判斷結(jié)構(gòu)中多個(gè)條件的“或”運(yùn)算。(3)退出一次循環(huán)。在C語(yǔ)言中,字符可參與任何整數(shù)運(yùn)算。實(shí)際上,是字符的ASCII碼參與了運(yùn)算。所以可以直接用字符代入f(p)的關(guān)系式中求出替換字符。若f(p)≤32或其ASCII值是偶數(shù),則該字符不變。兩個(gè)條件滿(mǎn)足一個(gè)即可,所以這兩個(gè)條件之間用“或”運(yùn)算。若字符不變,則可不必計(jì)算替換字符,使用continue跳出本次循環(huán),進(jìn)入下一次循環(huán)的條件判斷中。因?yàn)檫@里不是直接退出本層循環(huán)結(jié)構(gòu),所以不能使用break語(yǔ)句。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第9套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()的功能是實(shí)現(xiàn)從文件IN74.DAT中讀

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論