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

下載本文檔

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

文檔簡介

1、三級數(shù)據(jù)庫技術(shù)機(jī)試 -232( 總分: 100.00 ,做題時間: 90 分鐘 )一、上機(jī)題( 總題數(shù): 5,分?jǐn)?shù): 100.00)1. 已知數(shù)據(jù)文件 IN.DAT 中存有 200 個四位數(shù),并已調(diào)用讀函數(shù) readDat() 把這些數(shù)存入數(shù)組 a 中。請編寫 函數(shù) jsVal() ,其功能是: 把千位數(shù)字和十位數(shù)字重新組成一個新的十位數(shù) ab( 新十位數(shù)的十位數(shù)字是原四 位數(shù)的千位數(shù)字, 新十位數(shù)的個位數(shù)字是原四位數(shù)的十位數(shù)字 ) ,以及把個位數(shù)字和百位數(shù)字組成另一個新 的十位數(shù) cd( 新十位數(shù)的十位數(shù)字是原四位數(shù)的個位數(shù)字,新十位數(shù)的個位數(shù)字是原四位數(shù)的百位數(shù)字 ) , 如果ab>

2、cd , ab必須是偶數(shù)且能被5整除,cd必須是奇數(shù),同時兩個新數(shù)的十位數(shù)字均不為零,則將滿 足此條件的四位數(shù)按從大到小的順序存入數(shù)組 b 中,并計算滿足上述條件的四位數(shù)的個數(shù) cnt 。最后 main() 函數(shù)調(diào)用寫函數(shù) writeDat(),把結(jié)果cnt以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.DAT文件中。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組: a200 , b200 ;已定義變量: cnt。請勿改動數(shù)據(jù)文件 IN.DAT 中的任何數(shù)據(jù)及主函數(shù) main() 、讀函數(shù) readDat() 和寫函數(shù) writeDat() 的內(nèi)容。 #include < stdio.h >

3、#define MAX 200int 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(

4、i=0;i < cnt;i+)fprintf(fp,"%d/n",bi);fclose(fp);void main()int i;readDat(); jsVal();printf(:滿足條件的數(shù) =%d/n",cnt);for(i=0; i < cnt;i+)printf("%d",bi);printf("/n"); writeDat();分?jǐn)?shù): 20.00 ) 正確答案: (void jsVal()int i,thou,hun,ten,data,j;int ab.cd;for(i=0;i < 200;i

5、+) /*循環(huán)以遍歷數(shù)組 a中的所有200個四位數(shù)*/thou=ai/1000; /* 取當(dāng)前數(shù)的千位數(shù)字 */hun=ai%1000/100; /* 取當(dāng)前數(shù)的百位數(shù)字 */ ten=ai%100/10; /* 取當(dāng)前數(shù)的十位數(shù)字 */ data=ai%10; /* 取當(dāng)前數(shù)的個位數(shù)字 */if(thou=0|data=0)/* 若干位或個位為 0*/continue; /* 則組成的新數(shù)至少有一個十位為 0, 不符合題意繼續(xù)循環(huán) */ ab=10*thou+ten; /* 把千位數(shù)字和十位數(shù)字重新組成一個新的十位數(shù)*/cd=10*data+hun; /* 把個位數(shù)字和百位數(shù)字重新組成一個新

6、的十位數(shù)*/if(ab >cd && ab%2=0& & ab%5=Qk & cd%2!=0) /*若新組成的兩個數(shù) ab> cd且ab為偶數(shù)并能被5整除并且cd是奇數(shù)的話*/bcnt=ai; /* 將此數(shù)存入數(shù)組 b*/cnt+; /* 讓計數(shù)值 cnt 增 1*/* 對數(shù)組 b 的前 cnt 個數(shù)進(jìn)行選擇排序 */for(i=0;i < cnt-1;i+)for(j=i+1;j < cnt;j+)if(bi < bj) /* 前面的數(shù)小于后面的數(shù)則交換 ,即降序排列 */data=bi;bi=bj;bj=data;)解析

7、:2. 已知數(shù)據(jù)文件in.dat中存有300個四位數(shù),并已調(diào)用讀函數(shù) readDat()把這些數(shù)存入數(shù)組 a中。請編寫 函數(shù)jsValue(),其功能是:求出干位數(shù)上的數(shù)加個位數(shù)等于百位數(shù)上的數(shù)加十位數(shù)上的數(shù)的個數(shù)cnt ,再求出所有滿足此條件的四位數(shù)平均值 pjz1 ,以及不滿足此條件的四位數(shù)平均值 pjz2 ,最后調(diào)用寫函數(shù) writeDat() ,把結(jié)果輸出到 out.dat 文件中。例如: 6712, 6+2=7+1,則該數(shù)滿足條件計算平均值 pjz1 ,且個數(shù) cnt=cnt+1 。8129, 8+9<> 1+2,則該數(shù)不滿足條件計算平均值pjz2 。注意:部分源程序已經(jīng)

8、給出。程序中已定義數(shù)組: a300 ;已定義變量: cnt 、pjz1 、pjz2 。請勿改動主函數(shù) main() 、讀函數(shù) readDat() 和寫函數(shù) writeDat() 的內(nèi)容。#include < stdio.h >int a300,cnt=0;double pjz1=0.0,pjz2=0.0;void jsValue()void readDat()FILE *fp;int i; fp=fopen("in.dat","r");for(i=0;i v 300;i+)fscanf(fp,"%d,",ai);fclos

9、e(fp);void writeDat()FILE *fp; fp=fopen("out.dat","w");fprintf(fp,"%d/n%7.2f/n%7.2f/n",cnt,pjz1,pjz2);fclose(fp);main()readDat();jsValue();writeDat();printf("cnt=%d/n 滿足條件的平均值 pzj1=%7.2f/n 不滿足條件的平均值 pzj2=%7.2f/n",cnt,pjz1,pjz2);分?jǐn)?shù): 20.00 ) 正確答案: (void jsVahe (

10、)int i,n=0,thou,hun,ten,data;for(i=0;i v 300;i+) /*循環(huán)以遍歷數(shù)組 a中的所有300個四位數(shù)*/thou=ai/1000; /* 取當(dāng)前數(shù)的千位數(shù)字 */hun=ai%1000/100; /* 取當(dāng)前數(shù)的百位數(shù)字 */ ten=ai%100/10; /* 取當(dāng)前數(shù)的十位數(shù)字 */ data=ai%10; /* 取當(dāng)前數(shù)的個位數(shù)字 */if(thou+data=hun+ten) /* 如果千位加個位等于百位加十位的話 */ cnt+; /* 讓計數(shù)值 cnt 增 1*/ pjz1+=ai; /* 將此數(shù)累加到 pjz1 中*/ else /* 否

11、則讓計數(shù)值 n 增 1, 將此數(shù)累加 Npjz2 中 */n+;pjz2+=ai;pjz1/=cnt; /* 計算符合條件的數(shù)的平均值 */pjz2/=n; /* 計算不符合條件的數(shù)的平均值 */)解析:3. 函數(shù)ReadDat()實現(xiàn)從IN.DAT文件中讀取一篇英文文章并存入字符串?dāng)?shù)組xx中。請編寫函數(shù)SortCharA() ,其功能是: 以行為單位對字符按從小到大的順序進(jìn)行排序, 排序后的結(jié)果仍按行重新存入字 符串?dāng)?shù)組xx中,最后調(diào)用函數(shù) WriteDat(),把結(jié)果xx輸出到OUT.DAT文件中。例如,原文: dAe, BfCCCbbAA結(jié)果: ,.ABCdefAACCbb原始數(shù)據(jù)文件存

12、放的格式是:每行的寬度均小于 80 個字符 ( 含標(biāo)點符號和空格 )。 注意:部分源程序已經(jīng)給出。請勿改動主函數(shù) main() 、讀數(shù)據(jù)函數(shù) ReadDat() 和輸出數(shù)據(jù)函數(shù) WriteDat() 的內(nèi)容。#include < stdio.h #include < string.h#include < conio.h文章的總行數(shù) */char xx5080; int maxline=0; /* int ReadDat(void); void WriteDat(void); void SortCharA(void) void main()if(ReadDat()printf(

13、" 數(shù)據(jù)文件 IN.DAT 不能打開 !/n/007");return;SortCharA();WriteDat();int ReadDat(void)FILE *fp;int i=0;char *p;if(fp=fopen("IN.DAT","r")=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,'/n');if(p)*p=0;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;in

14、t i;fp=fopen("OUT.DAT","w");for(i=0;i < maxline; i+)printf("%s/n",xxi);fprintf(fp,"%s/n",xxi);fclose(fp);分?jǐn)?shù): 20.00 ) 正確答案: (void SortCharA(void)int i,j,k,Strl;char eh;/* 循環(huán)以遍歷英文文章的每一行 */for(i=0;i < maxline;i+)strl=strlen(xxi);/* 用選擇排序法對當(dāng)前行進(jìn)行排序 */for(j=0;

15、j < strl-1;j+)for(k=j+1;k< strl;k+)if(xxij> xx【i【k) /* 前面的字符大于后面的字符則交換兩者 , 所以此排序是升序排序 */ch=xxij;xxij=xxik;xxik=ch;)解析:4. 已知數(shù)據(jù)文件 IN.DAT 中存有 200 個四位數(shù),并已調(diào)用讀函數(shù) readDat() 把這些數(shù)存入數(shù)組 a 中。請編寫 函數(shù) jsVal() ,其功能是:把一個四位數(shù)的千位數(shù)字上的值加上個位數(shù)字上的值恰好等于百位數(shù)字上的值 加上十位數(shù)字上的值,并且原四位數(shù)是奇數(shù),則統(tǒng)計出滿足此條件的個數(shù)cnt 并把這些四位數(shù)按從小到大的順序存入數(shù)組

16、b 中,最后調(diào)用寫函數(shù) writeDat() ,把結(jié)果 cnt 以及數(shù)組 b 中符合條件的四位數(shù)輸出到 OUT.DAT文件中。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組: a200 ,b200 ;已定義變量: cnt 。請勿改動數(shù)據(jù)文件IN . DAT中的任何數(shù)據(jù)及主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。#include < stdio.h >#define MAX 200int aMAX,bMAX,cnt=0;void jsVal()void readDat()int i;FILE *fp; fp=fopen("IN.DAT&qu

17、ot;,"r");for(i=0;i v 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 v cnt; i+)fprintf(fp,"%d/n",bi);fclose(fp);void main()int i;readDat();jsVal();printf("

18、滿足條件的數(shù) =%d/n",cnt);for(i=0;i v cnt;i+)printf("%d",bi); printf("/n"); writeDat();分?jǐn)?shù): 20.00 ) 正確答案: (void jsVal ()int i,thou,hun,ten,data,j;for(i=0;i v MAX;i+) /*循環(huán)以遍歷數(shù)組 a中的所有四位數(shù)*/thou=ai/1000; /* 取當(dāng)前數(shù)的千位數(shù)字 */ hun=ai%1000/100; /* 取當(dāng)前數(shù)的百位數(shù)字 */ ten=ai%100/10; /* 取當(dāng)前數(shù)的卜位數(shù)字 */ dat

19、a=ai%10; /* 取當(dāng)前數(shù)的個位數(shù)字 */ if(thou+data=hun+ten) ai%2=1) /* 若干位加個位等于百位加十位且原數(shù)為奇數(shù)的話 */ bcnt=ai; /* 將此數(shù)存入數(shù)組 b*/Grit+; /* 讓計數(shù)值 ent 增 1*/* 對數(shù)組 b 的前 cnt 個數(shù)進(jìn)行選擇排序 */for(i=0;i(cnt-1;i+)for(j=i+1;j(cnt;j+)if(bi > bj) /* 前面的數(shù)大于后面的數(shù)則交換 , 即升序排列 */data=bi;bi=bj;bj=data;)解析:5. 下列程序的功能是:將一正整數(shù)序列K1, K2,,K9重新排列成一個新的

20、序列。新序列中,比K1小的數(shù)都在K1的前面(左邊),比K1大的數(shù)都在K1的后面(右邊)。要求編寫函數(shù)jsValue()實現(xiàn)此功能,最后 調(diào)用 writeDat() 函數(shù)將新序列輸出到 out.dat 文件中。說明:在程序中已給出了 10 個序列,每個序列有 9個正整數(shù),并存入數(shù)組 a109 中,分別求出這 10 個 新序列。例如:序列 6, 8, 9, 1, 2, 5, 4, 7, 3經(jīng)重排后成為 3, 4, 5, 2, 1 , 6, 8, 9, 7注意:部分源程序已經(jīng)給出。請勿改動主函數(shù) main() 和寫函數(shù) writeDat() 的內(nèi)容。#include < stdio.h >jsValue(int a109)void writeDat(int a109)FILE *fp;int i,j;fp=fopen("out.dat","w");for(i=0; i < 10; i+)for(j=0;j < 9;j+)fprintf(fp,"%d",aij);if(j < =7)fprintf(fp,",&qu

溫馨提示

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

評論

0/150

提交評論