版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ī)試模擬試卷1(共9套)(共9題)國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第1套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件in80.dat中存有300個(gè)4位數(shù),并已調(diào)用函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)jsValue(),其功能是:求出個(gè)位數(shù)上的數(shù)減千位數(shù)上的數(shù)減百位數(shù)上的數(shù)減十位數(shù)上的數(shù)大于0的個(gè)數(shù)cnt,再求出所有滿足此條件的4位數(shù)平均值pjz1,以及所有不滿足此條件的4位數(shù)平均值pjz2,最后調(diào)用函數(shù)writeDat()把結(jié)果cnt,pjz1,pjz2輸出到out80.dat文件。例如:1239,9-1,2-3>0,則該數(shù)滿足條件,計(jì)算平均值pjz1,且個(gè)數(shù)cnt=cnt+1。8129,9-8-1-2<0,則該數(shù)不滿足條件,計(jì)算平均值pjz2。注意:部分源程序已給出。程序中已定義數(shù)組:a[300],b[300],已定義變量:cnt,pjz1,pjz2。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#include<stdio.h>inta[300],cnt=0;doublepjz1=0.0,pjz2=0.0;voidjsValue(){}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d\n滿足條件的平均值pjz1=%7.21f\n不滿足條件的平均值pjz2=%7.21f\n",cnt,pjz1,pjz2);}readDat(){FILE*fp;inti;fp=fopen("in80.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("out80.dat","w");fprintf(fp,"%d\n%7.21f\n%7.21f\n",cnt,pjz1,pjz2);fclose(fp);}標(biāo)準(zhǔn)答案:voidjsvalue(){inti,thou,hun,ten,data,n=0;for(i=0;i<300;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(data-thou-hun-ten>0)/*如果個(gè)位數(shù)減千位數(shù)減百位數(shù)減十位數(shù)大于0*/{cnt++;/*統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/pjzl+=a[i];/*將滿足條件的數(shù)求和*/}else{n++/*否則統(tǒng)計(jì)不滿足條件的數(shù)的個(gè)數(shù)*/pjz2+=a[i];/*將不滿足條件的數(shù)求和*/}}pjz1/=cnt;/*求滿足條件的數(shù)的平均值*/pjz2/=n;/*求不滿足條件的數(shù)的平均值*/}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)特殊運(yùn)算符“%”及“/”的使用。(2)循環(huán)結(jié)構(gòu)及選擇結(jié)構(gòu)的使用。在本題中,首先要將一個(gè)4位數(shù)的千位、百位、十位、個(gè)位拆成獨(dú)立的數(shù)字。這里借助特殊運(yùn)算符號(hào)“%”(取余)和“/”(整除),拆分方法略。然后判斷“個(gè)位數(shù)-千位數(shù)-百位數(shù)-十位數(shù)”的值是否大于0。依次求得符合條件的數(shù)的和及其平均值。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第2套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN.dat中存有300個(gè)四位數(shù),并已調(diào)用讀函數(shù)Rdata()把這些數(shù)存入數(shù)組a中,請(qǐng)編寫函數(shù)diffVal(),其功能是:求出個(gè)位數(shù)上的數(shù)減千位數(shù)上的數(shù)減百位數(shù)上的數(shù)減十位數(shù)上的數(shù)大于0的個(gè)數(shù)count,再求出所有滿足此條件的四位數(shù)的平均值A(chǔ)ve1,以及不滿足此條件的四位數(shù)平均值A(chǔ)ve2。最后調(diào)用寫函數(shù)Wdata(),把結(jié)果輸出到OUT.dat文件中。例如,1239,9-1-2-3>0,則該數(shù)滿足條件,計(jì)算平均值A(chǔ)ve1,且個(gè)數(shù)count=count+1。8129,9-8-1-2<0,則該數(shù)不滿足條件,計(jì)算平均值A(chǔ)ve2。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組a[300],已定義變量count、Ave1、Ave2。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)Rdata()和寫函數(shù)Wdata()的內(nèi)容。#include<stdio.h>#inta[300],count=0;doubleAve1=0.0,Ave2=0.0;voiddiffVal(){}voidRdata(){FILE*fp;inti;fp=fopen("IN.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}voidWdata(){FILE*fp;fp=fopen("OUT.dat","w");fprintf(fp,"%d\n%7.2f\n%7.2f\n",count,Ave1,Ave2);fclose(fp);}main(){Rdata();diffVal();Wdata();printf("count=%d\n滿足條件的平均值pzj1=%7.2f\n不滿足條件的平均值pzj2=%7.2f\n",count,Ave1,Ave2);}標(biāo)準(zhǔn)答案:voiddiffVal(){inti,thou,hun,ten,data,n=0;for(i=0;i<300;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){count++;Ave1+=a[i];}else{n++;Ave2+=a[i];}}Ave1/=count;Ave2/=n;}[解題思路]對(duì)于每一個(gè)四位數(shù),用這個(gè)四位數(shù)除以1000,可得到這個(gè)四位數(shù)千位上的數(shù)字輸給變量thou:這個(gè)四位數(shù)對(duì)1000求余然后再除以100,可得到這個(gè)四位數(shù)百位上的數(shù)字輸給變量hun;這個(gè)四位數(shù)對(duì)100求余然后再除以10,可得到這個(gè)四位數(shù)十位上的數(shù)字輸給變量ten;這個(gè)四位數(shù)對(duì)10求余,可得到這個(gè)四位數(shù)個(gè)位上的數(shù)字輸給變量data。然后判斷表達(dá)式data-thou-hun-ten是否大于0,如果大于0,則計(jì)數(shù)變量count加1,同時(shí)把這個(gè)數(shù)加到變量Ave1上;否則計(jì)數(shù)變量n加1,同時(shí)把這個(gè)數(shù)加到變量Ave2上。退出循環(huán)后,變量Ave1的值除以count值就得到所有滿足此條件的四位數(shù)的平均值,變量Ave2的值除以n值就得到所有不滿足此條件的四位數(shù)的平均值。知識(shí)點(diǎn)解析:暫無(wú)解析國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第3套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知在文件in70.dat中存有若干個(gè)(個(gè)數(shù)<200)4位數(shù)字的正整數(shù),函數(shù)ReadDat()是讀取這若干個(gè)正整數(shù)并存入數(shù)組xx中。請(qǐng)編制函數(shù)CalValue(),其功能要求是:(1)求出這個(gè)文件中共有多少個(gè)正整數(shù)totNum。(2)求這些數(shù)右移一位后,產(chǎn)生的新數(shù)是奇數(shù)的數(shù)的個(gè)數(shù)totCnt,以及滿足此條件的這些數(shù)(右移前的值)的算術(shù)平均值totPjz。最后調(diào)用函數(shù)WriteDat()把所有結(jié)果輸出到文件out70.dat中。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#include<conio.h>#defineMAXNUM200intxx[MAXNUM];inttotNum=0;inttotCnt=0;doubletotPjz=0.0;intReadDat(void);voidWriteDat(void);voidCalValue(void){}voidmain(){inti;clrscr();for(i=0;i<MAXNUM;i++)xx[i]=0;if(ReadDat()){printf("數(shù)據(jù)文件IN70.DAT不能打開(kāi)!\007\n");return;}CalValue();printf("文件IN70.DAT中共有正整數(shù)=%d個(gè)\In",totNum);printf("符合條件的正整數(shù)的個(gè)數(shù)=%d個(gè)\n",totCnt);printf("平均值=%.2lf\n",totPjz);WriteDat();}intReadDat(void){FILE*fp;inti=0;if((fp=fopen("IN70.DAT","r")==NULL)return1;while(!feof(fp)){fscanf(fp,"%d",&xx[i++])}fclose(fp);return0;}voidWriteDat(void){FILE*fp;fp=fopen("OUT70.DAT","w");fprintf(fp,"%d\n%d\n%.2lf\n",totNum,totCnt,totPjz);fclose(fp);}標(biāo)準(zhǔn)答案:voidCalValue(void){inti,data;for(i=0;i<MAXNUM;i++){if(!xx[i])break;/*如果數(shù)為0,則表示數(shù)組存的數(shù)據(jù)已經(jīng)結(jié)束,退出循環(huán)*/if(xx[i]>0)totNum++;/*統(tǒng)計(jì)正整數(shù)的個(gè)數(shù)*/data=xx[i]>>1;/*將數(shù)右移一位*/if(data%2)/*如果產(chǎn)生的新數(shù)是奇數(shù)*/{totCnt++;/*統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/totPjz+=xx[i];/*求滿足條件的數(shù)的總和*/}}totPjz/=totCnt;/*求滿足條件的數(shù)的平均值*/}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)右移運(yùn)算符“>>”的使用。(2)數(shù)組結(jié)束的判斷和強(qiáng)行退出一層循環(huán)結(jié)構(gòu)。(3)特殊運(yùn)算符“%”的使用。在本題中,并沒(méi)有給出確切的數(shù)據(jù)個(gè)數(shù),是以數(shù)據(jù)的最大個(gè)數(shù)定義的數(shù)組。在主函數(shù)中,給所有的數(shù)組成員賦初值為0,而從文件中讀取得數(shù)據(jù)是正整數(shù),所以只要數(shù)組的某個(gè)元素為0,則說(shuō)明數(shù)組存的數(shù)據(jù)已經(jīng)結(jié)束。此時(shí)就可以結(jié)束循環(huán)結(jié)構(gòu)。這里要使用右移運(yùn)算符實(shí)現(xiàn)數(shù)據(jù)的右移位,右移運(yùn)算符是雙目運(yùn)算符。運(yùn)算符左側(cè)是要移的數(shù)據(jù),右側(cè)是移動(dòng)的位數(shù)。右側(cè)移出的數(shù)據(jù)(低位數(shù)據(jù))舍棄。1個(gè)數(shù)除以2取余所得的數(shù)是1,則這個(gè)數(shù)是奇數(shù)。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第4套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知在文件in.dat中存有若干個(gè)(個(gè)數(shù)<200)四位非零整數(shù),函數(shù)readdat()讀取這若干個(gè)整數(shù)并存入數(shù)組xx中。請(qǐng)編制函數(shù)calvflue(),其功能要求:①求出該文件中共有多少個(gè)正整數(shù)totnum;②求這些數(shù)右移1~6位,產(chǎn)生的一系列新數(shù)中含至少一個(gè)完全平方數(shù)(某個(gè)整數(shù)的平方)的個(gè)數(shù)totcnt,以及滿足此條件的這些數(shù)(右移前的值)的算術(shù)平均值totpjz,最后調(diào)用函數(shù)writedat()把所求的結(jié)果輸出到文件out.dat中。部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)readdat()和輸出數(shù)據(jù)函數(shù)writedat()的內(nèi)容。#include<stdio.h>#include<conio.h>#defineMAXNUM200intxx[MAXNUM];ihttotnum=0;ihttotcnt=0;doubletotpjz=0.0;intreaddat(void);voidwritedat(void);voidcalvalue(void){}voidmain(){inti;clrscr();for(i=0;iif(readdat()){printf("Can’topenthedatafilein.dat!\007\n");return;}calvalue();printf("totnum=%d\n",totnum);printf("totcnt=%d\n",totcnt);printf("totpjz=%.21f\n",totpjz);writedat();}intreaddat(void){FILE*fp;inti=0;if((fp=fopen("in.dar","r"))==NULL)return1;while(!feof(fp))fscanf(fp,"%d,",&xx[i++];fclose(fp);return0;}voidwritedat(void){FILE*fp;fp=fopen("out.dar","w")fprintf(fp,"%d\n%d\n%.21f\n",totnum,totcnt,totpjz);fclose(fp);}標(biāo)準(zhǔn)答案:#include<math.h>voidcalvalue(void){inti,j,data,sqt;for(i=0;i{if(!xx[i])break;/*數(shù)據(jù)結(jié)束*/if(xx[i]>0)totnum++;/*計(jì)數(shù)*/for(j=1;j<=6;j++){data=(xx[i]>>);/*移位*/sqt=(int)(sqrt((double)data)+0.5);/*求平方根并四舍五入取整*/if(sqt*sqt==data)/*完全平方數(shù)*/{totcnt++;totpjz+=xx[i];/*計(jì)數(shù),求和*/break;}}}totpjz/=totcnt;}知識(shí)點(diǎn)解析:類型:整數(shù)移位運(yùn)算。關(guān)鍵點(diǎn):(1)數(shù)據(jù)結(jié)束判斷:分析main()和readdat(),得到xx[i]為有效數(shù)據(jù)的條件是0<=xx[i]<MAXNUM且xx[i]!=0。(2)移位運(yùn)算:>>,注意運(yùn)算符優(yōu)先級(jí)。(3)完全平方數(shù)判斷:可以開(kāi)平方再平方與原數(shù)比較,也可以枚舉出10000以內(nèi)所有四位完全平方數(shù)再查表,解答中采用第一種,需要加上頭文件math.h。國(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è)人的選中情況,依此類推。每一位候選人的記錄內(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()和寫函數(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ì)所有記錄的訪問(wèn)。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第6套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、編寫函數(shù),isValue,它的功能是:求以下數(shù)列中滿足t(K)=1的最小的k,結(jié)果由函數(shù)返回。其中數(shù)列t(n)的定義為:t(0)=m(m為給定正整數(shù),m<=300)t(n+1)=t(n)/2(當(dāng)t(n)為偶數(shù)時(shí))或t(n+1)=3*t(n)+1(當(dāng)t(n)為奇數(shù)時(shí))最后調(diào)用函數(shù)writeDat()讀取50個(gè)數(shù)據(jù)m,分別得出結(jié)果且把結(jié)果輸出到文件out.dar中。例如:當(dāng)t=299時(shí),函數(shù)值為117。已知對(duì)于m<=300,結(jié)果k不超過(guò)300部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。#include<stdio.h>intjsValue(intm){main(){intm;m=300;printf("m=%d,k-%d\n",m,jsValue(m));writeDat();writeDat(){FILE*in,*out;inti,m,s;in=fopen("in.dar","r");out=fopen("out.dar","w");for(i=0;i<50;i++){fscanf(in,"%d",&m);s=jsValue(m);printf("%d\n",s);fprintf(out,"%d\n",s);}fclose(in);fclose(out);標(biāo)準(zhǔn)答案:intisValue(intm){/*初值t(0)=m*/intfn=m,k=0;/*t(k)!=1,求t(k+1)*/while(fn>){if(fn%2==1)/*t(k)為奇數(shù)*/{fn-3*fn+1;}else/*t(k)為偶數(shù)*/{fn=fn/2;}k++;}/*t(k)==1,返回k*/returnk;}知識(shí)點(diǎn)解析:類型:序列計(jì)算。關(guān)鍵點(diǎn):分析序列定義,選擇合適的方法生成和存儲(chǔ)序列或序列中的特定值。根據(jù)序列定義,以及題目的輸出要求,可選擇保存序列中的所有值,也可以只保留與當(dāng)前項(xiàng)計(jì)算相關(guān)的幾項(xiàng),采用遞推的方式進(jìn)行計(jì)算。對(duì)于某些特殊序列,還可以求出通項(xiàng)公式,利用公式直接計(jì)算。此題只需要保存當(dāng)前項(xiàng),根據(jù)當(dāng)前項(xiàng)計(jì)算下一項(xiàng)。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第7套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN86.DAT中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)JsVal(),其功能是;把千位數(shù)字和十位數(shù)字重新組合成一個(gè)新的十位數(shù)ab(新十位數(shù)的十位數(shù)字是原4位數(shù)的千位數(shù)字,新十位數(shù)的個(gè)位數(shù)字是原4位數(shù)的十位數(shù)字;),以及把個(gè)位數(shù)字和百位數(shù)字組成另一個(gè)新的十位數(shù)cd(新十位數(shù)的十位數(shù)字是原4位數(shù)的個(gè)位數(shù)字,新十位數(shù)的個(gè)位數(shù)字是原4位數(shù)的百位數(shù)字),如果新組成的兩個(gè)十位數(shù)ab>cd,ab必須是偶數(shù)且能被5整除,cd必須是奇數(shù),同時(shí)兩個(gè)新十位數(shù)字均不為0,則將滿足此條件的4位數(shù)按從大到小的順序存入數(shù)組b中,并要計(jì)算滿足上述條件的4位數(shù)的個(gè)數(shù)cnt,最后調(diào)用寫函數(shù)writeDat()把結(jié)果cnt及數(shù)組b中符合條件的4位數(shù)輸出到OUT86.DAT文件中。注意:部分源程序已給出。程序中已定義數(shù)組:a[200],b[200],已定義變量:cnt。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)readDa(()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN86.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}main(){inti;readDat();jsVal();printf("滿足條件的數(shù)=%d\n",cnt);for(.i=0;i<cnt;i++)printf("%d",bIii;printf("\n");writeDat();}writeDat(){FILE*fp;inti;fp=fopen("OUT86.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;ifprintf(fp,"%d\n",b[i]);fclose(fp);}標(biāo)準(zhǔn)答案:voidjsVal(){inti,thou,hun,ten,data,j;intab,cd;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ù)字*/ab=thou*10+ten;/*把千位數(shù)和十位數(shù)重新組合成一個(gè)新的十位數(shù)ab*/cd=data*10+hun;/*把個(gè)位數(shù)和百位數(shù)組成另一個(gè)新的十位數(shù)cd*/if((ab-cd>0)&&(ab%2!=1&&ab%5==0)&&cd%2==1&&ab!=0&&cd!=0)/*如果ab>cd,ab是偶數(shù)且能被5整除,cd是奇數(shù),且兩個(gè)數(shù)均不為0*/{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)將一個(gè)4位整數(shù)各位上的數(shù)轉(zhuǎn)變成單獨(dú)的個(gè)位數(shù)。(2)判斷結(jié)構(gòu)中多個(gè)條件的布爾運(yùn)算。(3)循環(huán)的使用。(4)數(shù)據(jù)的排序。在本題中,首先要將一個(gè)4位數(shù)的千位、百位、十位、個(gè)位拆成獨(dú)立的數(shù)字。這里借助特殊運(yùn)算符號(hào)“%”——取余和“/”——整除。將1個(gè)4位數(shù)整除1000則可得到其千位上的數(shù)字,將其除以1000取余再整除100則可得百位上的數(shù)字,除以100取余再整除10則可得十位上的數(shù)字,除以10取余則得個(gè)位上的數(shù)字。若一個(gè)數(shù)除以2取余為0,則這個(gè)數(shù)是偶數(shù)。由題意可知,各個(gè)條件必須同時(shí)滿足,所以各條件之間用“與”運(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、請(qǐng)編制程序,要求:將文件IN92.DAT中的200個(gè)整數(shù)讀入數(shù)組xx中,求出數(shù)組xx中最大數(shù)max及最大數(shù)的個(gè)數(shù)ont和數(shù)組xx中值能被3整除或能被7整除的數(shù)的算術(shù)平均值pj(保留兩位小數(shù)),結(jié)果max,cnt,pj輸出到out92.dar中。部分程序、讀函數(shù)read_dat(intxx[200])及輸出格式已給出。試題程序:#include<conio.h>#include<stdi0.h>#defineN200voidread_dar(intxx[N]){inti,j;FILE*fp;fp=fopen("IN92.DAT","r");for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp,"%d,",&xx[i*10+j]);printf("%d",xx[i*10+j]);}printf("\n");}fclosefp);}voidmain,{inti,k,cnt,xx[N],max;floatpj;FILE*fw;longj=0;clrscr();fw=fopen("out92.dat","w");read_dat(xx);printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pjfprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);fclose(fw);printf("\n");}fclosefp);}voidmain,{inti,k,cnt,xx[N],max;floatpj;FILE*fw;longj=0;clrscr();fw=fopen("out92.dat","w");read_dat(xx);printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pjfprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);fclose(fw);標(biāo)準(zhǔn)答案:voidmain(){inti,k,cnt,xx[N],max;floatpj;FILE*fw;longj=0;clrscr();fw=fopen("out92.dat","w");read_dat(xx);max=xx[0];for(i=1,k=0;i<N;i++){if(xx[i]>max)max=xx[i];/*求出數(shù)組xx中最大數(shù)max*/if(xx[i]%3==0||xx[i]%7==0){j+=xx[i];/*求出數(shù)組xx中值能被3整除或能被7整除的數(shù)的總和*/k++;}}for(i=0,cnt=0;i<N;i++)if(xx[i]==max)cnt++;/*求出數(shù)組xx中最大數(shù)max的個(gè)數(shù)*/pj=(float)(j*100/k)/100;/*求出數(shù)組xx中值能被3整除或能被7整除的數(shù)的平均值*/printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);fprintf(fw,"%d\n%dkn%6.2fin",max,cnt,pj);fclose(fw);知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)運(yùn)算符“%”的使用。(2)判斷結(jié)構(gòu)中多個(gè)條件的布爾運(yùn)算。首先,要找出數(shù)組中最大的元素。先定義第1個(gè)元素為最大的元素,然后依次和后面的元素比較,若后面的數(shù)中有大于第1個(gè)元素的,則將這個(gè)數(shù)定義為最大的元素。再和后面的數(shù)進(jìn)行比較。一個(gè)數(shù)a除以b取余所得的數(shù)為0,則a能被b整除。根據(jù)題意可知,被3整除和被7整除兩個(gè)條件滿足一個(gè)即可,所以兩個(gè)條件之間用“或”運(yùn)算。在本題中,要求算術(shù)平均值保留兩位小數(shù)。使用的方法是:將和乘以100除以個(gè)數(shù)強(qiáng)制類型轉(zhuǎn)換后再除以100。為了保證和有效,我們定義了一個(gè)長(zhǎng)整型變量來(lái)記錄和。因?yàn)閭€(gè)數(shù)也為整型,運(yùn)算符“/”在這里的含義是整除,而我們要保留小數(shù),所以要使用強(qiáng)制類型轉(zhuǎn)換將和乘以100的結(jié)果轉(zhuǎn)換為浮點(diǎn)類型,這樣就可以實(shí)現(xiàn)保留兩位小數(shù)。國(guó)家三級(jí)(數(shù)據(jù)庫(kù)技術(shù))機(jī)試模擬試卷第9套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN87.DAT中存有300個(gè)4位數(shù),并已調(diào)用函數(shù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年海洋能發(fā)電公司辦公用品庫(kù)存管理制度
- 2026江蘇南京大學(xué)化學(xué)學(xué)院助理招聘?jìng)淇碱}庫(kù)附參考答案詳解(綜合卷)
- 2025年工廠稅務(wù)試題帶答案
- 2025年建筑結(jié)構(gòu)抗震設(shè)計(jì)要點(diǎn)試題及答案
- (2025年)食品生產(chǎn)許可證審查員考試全考點(diǎn)試題帶答案
- 2026江蘇南京大學(xué)化學(xué)學(xué)院博士后招聘?jìng)淇碱}庫(kù)含答案詳解(輕巧奪冠)
- 2026江蘇南京大學(xué)化學(xué)學(xué)院科研人員招聘?jìng)淇碱}庫(kù)含答案詳解(達(dá)標(biāo)題)
- 2026江蘇南京大學(xué)化學(xué)學(xué)院科研人員招聘?jìng)淇碱}庫(kù)附答案詳解(奪分金卷)
- 2026年叉車年檢考試題庫(kù)及參考答案一套
- 2026年叉車技能鑒定考核試題庫(kù)及參考答案一套
- 2026中國(guó)電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫(kù)及參考答案詳解1套
- 思政教師培訓(xùn)心得課件
- 2026國(guó)家國(guó)防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫(kù)及參考答案詳解
- 大型船舶拆除方案范本
- LoRa技術(shù)教學(xué)課件
- 2025中央廣播電視總臺(tái)招聘144人筆試歷年題庫(kù)附答案解析
- 急性高原疾病課件
- 牧業(yè)公司生產(chǎn)安全預(yù)案
- 腦機(jī)接口科普
- 2025年湖北煙草專賣局招聘考試真題及答案
- 教育資源分享平臺(tái)管理框架模板
評(píng)論
0/150
提交評(píng)論