三級(jí)數(shù)據(jù)庫技術(shù)機(jī)試-241_第1頁
三級(jí)數(shù)據(jù)庫技術(shù)機(jī)試-241_第2頁
三級(jí)數(shù)據(jù)庫技術(shù)機(jī)試-241_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、三級(jí)數(shù)據(jù)庫技術(shù)機(jī)試 -241( 總分: 100.00 ,做題時(shí)間: 90 分鐘 )一、上機(jī)題( 總題數(shù): 5,分?jǐn)?shù): 100.00)1. 下列程序的功能是:計(jì)算出自然數(shù) SIX和NINE,它們滿足的條件是 SIX+SIX+SIX=NINE+NINE的個(gè)數(shù)ent 以及滿足此條件所有的SIX與NINE的和sum。請(qǐng)編寫函數(shù)countValue()實(shí)現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDat(),把結(jié)果ent和sum輸出到 OUT.DAT文件中。其中,S、I、X、N E各代表一個(gè)十進(jìn)制數(shù)。注意:部分源程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù) main() 和輸出數(shù)據(jù)函數(shù) writeDat() 的內(nèi)容。#incl

2、ude < stdio.h >int cnt,sum;void countValue()void writeDat()FILE *fp;fp=fopen("OUT.DAT","w");fprintf(fp,"%d/n%d/n",cnt,sum);fclose(fp);void main()cnt=sum=0;countValue();printf("滿足條件的個(gè)數(shù) =%d/n",cnt);printf(”滿足條件所有的 SIX與NINE的和=%d/n",sum);writeDat();分?jǐn)?shù):

3、20.00 ) 正確答案: (void countValue()int S,I,X,N,E;/* 定義 5個(gè)循環(huán)變量 ,他們分別代表題目所述的 5個(gè)數(shù)字*/int SIX,NINE;/* 用窮舉法遍歷這 5 個(gè)數(shù)字的所有組合 */for(S=1;S < 10;S+) /*S 為SIX的百位數(shù)字不能為 0,故取值范圍為19*/ for(I=0;I <10;I+)for(X=0;X < 10;X+)for(N=1;N < 10;N+)/*N 是NINE的千位不能為 0,故范圍為19*/for(E=0;E <10;E+)SIX=S*100+I*10+X; /* 組合成

4、SIX 值*/NINE=N*1000+l*100+N*10+E;/* 組合成 NINE值*/if(SIX*3=NINE*2) /* 如果 SIX*3 等于 NINE 乘以 2, 則找到一個(gè)解 */cnt+; /* 計(jì)數(shù)值 cnt 增 1*/sum+=SIX+NINE; /* 將 SIXSHNINE累加進(jìn) sum*/)解析:2. 已知在IN.DAT文件中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱me(字符型10位)、單價(jià)dj(整型)、數(shù)量sl(整型)、金額je(長整型)五部分組成。其中:金額=單價(jià)x數(shù)量。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入結(jié)

5、構(gòu)數(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é)果輸出到OUT.DAT文件中。注意:部分源程序已經(jīng)給出。請(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 < stdlib.h >#defi

6、ne MAX 100typedef structchar dm5; /* 產(chǎn)品代碼 */char mc11; /* 產(chǎn)品名稱 */int dj; /*單價(jià) */int sl; /*數(shù)量 */long je; /* 金額 */PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()void main()memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat()FILE *fp;char str80,ch11;int i;fp=fopen(&quo

7、t;IN.DAT","r");for(i=0; i < 100;i+)fgets(str,80,fp);memcpy(selli.dm,str,4);memcpy(selli.mc,str+4,10); memcpy(ch,str+14,4);ch4=0;selli.dj=atoi(ch); memcpy(ch,str+18,5);ch5=0;selli.sl=atoi(ch); selli.je=(long)selli.dj*selli.sl;fclose(fp);void WriteDat()FILE *fp;int i;fp=fopen("O

8、UT.DAT","w");for(i=0;i v 100;i+)printf("%s%s%4d%5d%5d/n", selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,"%s%s%4d%5d%5d/n",selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fclose(fp);分?jǐn)?shù): 20.00 ) 正確答案: (void SortDat ()int i,j;PRO xy;/* 對(duì)數(shù)組 sell 的所有 100 條記錄進(jìn)行選

9、擇排序 */for(i=0;i v 99;i+) for(j=i+1;j v100;j+)/*按每條記錄me字段(產(chǎn)品名稱)的大小進(jìn)行降序排列*/ if(strcmp(selli.inc,sellj.inc)v 0)xy=selli;selli=sellj;sellj=xy;else if(stremp(selli.me,sellj.me)=0) /*若me字段相等則按je字段(金額)的大小進(jìn)行降序排列*/ if(selli.je v sellj.je)xy=selli; selli=sellj;sellj=xy;)解析:3. 函數(shù) ReadDat() 實(shí)現(xiàn)從 in.dat 文件中讀取 20

10、行數(shù)據(jù)并存放到字符串?dāng)?shù)組 xx 中( 每行字符串長度均小于 80) 。請(qǐng)編寫函數(shù) jsSort() ,其函數(shù)的功能是:以行為單位對(duì)字符串變量的下標(biāo)為奇數(shù)的字符按其 ASCII 值從小到大的順序進(jìn)行排序, 排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組 xx 中,最后調(diào)用函數(shù) WriteDat() 把結(jié)果 xx 輸出到 out.dat 文件中。例如: 位置 0 1 2 3 4 5 6 7源字符串 h g f e d c b a則處理后字符串 h a f c d e b g 注意:部分源程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù) main() 、讀數(shù)據(jù)函數(shù) ReadDat() 和輸出數(shù)據(jù)函數(shù) WriteDat() 的內(nèi)容

11、。#include < stdio.h >#include < string.h >#include < conio.h >char xx2080;void jsSort()void ReadDat()FILE *in;int i=0;char *p;in=fopen("in.dat","r");while(i< 20 fgets(xxi,80,in)!=NULL)p=strchr(xxi,'/n');if(p)*p=0;i+;fclose(in);void WriteDat()FILE *out

12、;int i;out=fopen("out.dat","w");for(i=0;i <20; i+)printf("%s/n",xxi);fprintf(out,"%s/n",xxi);fclose(out);void main()ReadDat();jsSort();WriteDat();分?jǐn)?shù): 20.00 ) 正確答案: (void jsSort ()int i,j,k,strl;char ch;for(i=0;i < 20;i+)/*循環(huán)遍歷數(shù)組 xx中的20行字符串*/strl=strlen(x

13、xi);/* 對(duì)當(dāng)前行下標(biāo)為奇數(shù)的字符進(jìn)行選擇排序 */for(j=1;j <strl-2;j=j+2) /* 循環(huán)從 1開始每次增 2,即遍歷奇數(shù) */for(k=j+2;k< strl;k=k+2)if(xxij> xx【i【k) /* 前面的數(shù)大于后面的數(shù)則交換 ,即升序排列 */ch=xxij;xxij=xxik;xxik=ch;)解析:4. 函數(shù) ReadDat() 實(shí)現(xiàn)從 in.dat 文件中讀取 20 行數(shù)據(jù)并存放到字符串?dāng)?shù)組 xx 中(每行字符串長度均小于 80) 。請(qǐng)編寫函數(shù) jsSort() ,其函數(shù)的功能是:以行為單位對(duì)字符串按給定的條件進(jìn)行排序,排序后

14、的結(jié) 果仍按行重新存入字符串?dāng)?shù)組 xx 中,最后調(diào)用函數(shù) WriteDat() ,把結(jié)果 xx 輸出到 out.dat 文件中。 條件:從字符串中間一分為二,左邊部分按字符的 ASCII 值降序排序,排序后左邊部分與右邊部分進(jìn)行交 換。如果原字符串長度為奇數(shù),則最中間的字符不參加處理,字符仍放在原位置上。例如: 位置 0 1 2 3 4 5 6 7 8源字符串 a b c d h g f e1 2 3 4 9 8 7 6 5則處理后字符串 h g f e d C b a8 7 6 5 9 4 3 2 1 注意:部分源程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù) main() 、讀數(shù)據(jù)函數(shù) ReadDat()

15、和輸出數(shù)據(jù)函數(shù) WriteDat() 的內(nèi)容。#include < stdio.h >#include < string.h >#include < conio.h >char xx2080;void jsSort()void ReadDat()FILE *in;int i=0;char *p;in=fopen("in.dat","r");while(i < 20 && fgets(xxi,80,in)!=NULL) p=strchr(xxi,'/n');if(p)*p=0;i+;

16、fclose(in);void WriteDat()FILE *out;int i;out=fopen("out.dat","w");for(i=0;i <20; i+) printf("%s/n",xxi); fprintf(out,"%s/n",xxi);fclose(out);void main()ReadDat(); jsSort();WriteDat();分?jǐn)?shù): 20.00 ) 正確答案: (void jsSort ()int i,j,k,strl,half;char ch;for(i=0;i &l

17、t; 20;i+) /* 循環(huán)遍歷數(shù)組 xx 中的 20 行字符串 */strl=strlen(xxi);half=Str1/2;/* 對(duì)當(dāng)前行前半部分字符進(jìn)行選擇排序 */for(j=0;j < half-1;j+)for(k=j+1;k(half;k+)if(xxij < xxik) /* 前面的數(shù)小于后面的數(shù)則交換 , 即降序排列 */ch=xxij;xxij=xxik;xxik=ch;/* 雙循環(huán)變量的 for 循環(huán) , 一個(gè)從字符串中間往前遍歷 , 一個(gè)從末尾往前遍歷 */for(j=half-1,k=strl-1;j> =0;j-,k-)/* 循環(huán)中交換兩個(gè)循環(huán)變

18、量位置處的字符 , 即交換字符串的前半部分和后半部分 */ ch=xxij;xxij=xxik; xxik=ch;) 解析:5. 已知數(shù)據(jù)文件 in.dat 中存有 200 個(gè)四位數(shù),并已調(diào)用讀函數(shù) readDat() 把這些數(shù)存入數(shù)組 a 中。請(qǐng)編寫 函數(shù) jsVal() ,其功能是:依次從數(shù)組 a 中取出一個(gè)四位數(shù),如果該四位數(shù)連續(xù)大于該四位數(shù)以前的五個(gè) 數(shù)且該數(shù)是偶數(shù) ( 該四位數(shù)以前不滿五個(gè)數(shù),則不統(tǒng)計(jì) ) ,則統(tǒng)計(jì)出滿足此條件的個(gè)數(shù) cnt 并把這些四位數(shù) 按從大到小的順序存入數(shù)組 b 中,最后調(diào)用寫函數(shù) writeDat() ,把結(jié)果 cnt 以及數(shù)組 b 中符合條件的四位 數(shù)輸出

19、到 out.dat 文件中。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組: a200 ,b200 ;已定義變量: cnt 。請(qǐng)勿改動(dòng)數(shù)據(jù)文件 in.dat 中的任何數(shù)據(jù)及主函數(shù) main() 、讀函數(shù) readDat() 和寫函數(shù) writeDat() 的內(nèi)容。 #include < stdio.h >#define MAX 200 int aMAx,bMAX,cnt=0;void jsVal() void readDat()int i;FILE *fp; fp=fopen("in.dat","r"); for(i=0;i <MAX; i+) fscanf(fp,"%d,",ai);fclose(fp);void writeDat()FILE *fp;int i;fp=fopen("out.dat","w"); fprintf(fp,"%d/n",cnt);for(i=0; i < cnt;i+) fprintf(fp,"%d

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論