版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、三級(jí)數(shù)據(jù)庫技術(shù)機(jī)試 -240( 總分: 100.00 ,做題時(shí)間: 90 分鐘 )一、上機(jī)題( 總題數(shù): 5,分?jǐn)?shù): 100.00)1. 已知數(shù)據(jù)文件 IN.DAT 中存有 200 個(gè)四位數(shù),并已調(diào)用讀函數(shù) readDat() 把這些數(shù)存入數(shù)組 a 中。請編寫 函數(shù) jsVal() ,其功能是:依次從數(shù)組 a 中取出一個(gè)四位數(shù),如果該四位數(shù)連續(xù)大于該四位數(shù)以前的五個(gè) 數(shù)且該數(shù)是奇數(shù),且該數(shù)必須能被 7 整除(該四位數(shù)以前不滿五個(gè)數(shù),則不統(tǒng)計(jì) ) ,則統(tǒng)計(jì)出滿足此條件的 個(gè)數(shù) cnt 并把這些四位數(shù)按從大到小的順序存入數(shù)組 b 中,最后調(diào)用寫函數(shù) writeDat() ,把結(jié)果 cnt 以及 數(shù)
2、組b中符合條件的四位數(shù)輸出到OUT.DAT文件中。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組: a200 ,b200 ;已定義變量: cnt 。請勿改動(dòng)數(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","r");for(i=0;i < MAX;
3、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/n",bi);fclose(fp);void main()int i;readDat();jsVal();printf(" 滿足條件的數(shù) =%d/n",cnt);for(i=0;i
4、 < cnt;i+) printf("%d",bi);printf("/n"); writeDat();分?jǐn)?shù): 20.00 ) 正確答案: (void jsVal ()int i,j,flag=0;/* 循環(huán)以遍歷數(shù)組 a 的第 6 至最后一個(gè)數(shù) */for(i=5;i(MAX;i+) /* 循環(huán)以遍歷當(dāng)前數(shù)的前 5 個(gè)數(shù) */for(j=i-5;j v i;j+)if(ai > aj) /* 若當(dāng)前數(shù)大于前 5 個(gè)數(shù)則設(shè)標(biāo)志 flag 為 1*/flag=1;else /* 否則設(shè)標(biāo)志 flag 為 0 并跳出循環(huán) */flag=0;bre
5、ak;if(flag=1 ai%2=1 ai%7=0) /*若flag為1說明當(dāng)前數(shù)連續(xù)大于前5個(gè)數(shù),且又為奇數(shù)又能被7整除的話*/bcnt=ai; /* 把當(dāng)前數(shù)存入數(shù)組 b*/cnt+; /* 計(jì)數(shù)值 cnt 增 1*/* 對(duì)數(shù)組 b 的前 cnt 個(gè)數(shù)進(jìn)行選擇排序 */for(i=0;i(cnt-1;i+)for(j=i+1;j(cnt;j+)if(bi v bj) /* 前面的數(shù)小于后面的數(shù)則交換 , 即降序排列 */flag=bi;bi=bj;bj=flag;)解析:2. 已知在IN.DAT文件中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱me(字
6、符型10位)、單價(jià)dj(整型)、數(shù)量sl(整型)、金額je(長整型)五部分組成。其中:金額 =單價(jià) x數(shù)量。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫函數(shù) SortDat(),其功能是:按金額從大到小進(jìn)行排列,若金額相等,則按產(chǎn)品代碼從小到大進(jìn)行排列,最終排列結(jié)果仍存入結(jié) 構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat(),把結(jié)果輸出到OUT.DAT文件中。注意:部分源程序已經(jīng)給出。請勿改動(dòng)主函數(shù) main() 、讀數(shù)據(jù)函數(shù) ReadDat() 和輸出數(shù)據(jù)函數(shù) WriteDat() 的內(nèi)容。#inelude v stdio.h >#inelude v
7、string.h >#inelude v eonio.h >#include < stdlib.h >#define 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();SortDa
8、t();WriteDat();void ReadDat()FILE *fp;char str80,ch11;int i;fp=fopen("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)
9、selli.dj*selli.sl;fclose(fp);void WriteDat()FILE *fp;int i;fp=fopen("OUT.DAT","w");for(i=0; i < 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(
10、fp);(分?jǐn)?shù): 20.00 )正確答案: (void SortDat ()int i,j;PRO xy;/* 對(duì)數(shù)組 sell 的所有記錄進(jìn)行選擇排序 */for(i=0;i(MAX-1;i+)for(j=i+1;j < MAX;j+)/* 按每條記錄 je 字段(產(chǎn)品金額 )的大小進(jìn)行降序排列 */if(selli.je < sellj.je)xy=selli;selli=sellj;sellj=xy;else if(selli.je=Sellj.je)if(strcmp(Selli.dm,Sellj.dm)> 0) /*若je字段相等則按dm字段(代碼)的大小進(jìn)行升序排
11、列*/xy=selli;selli=sellj;sellj=xy;)解析:3. 已知數(shù)據(jù)文件 in.dat 中存有 300 個(gè)四位數(shù),并已調(diào)用讀函數(shù) ReadDat() 把這些數(shù)存入數(shù)組 a 中。請編寫 函數(shù) jsValue() ,其功能是:求出千位數(shù)上的數(shù)加個(gè)位數(shù)上的數(shù)等于百位數(shù)上的數(shù)加十位數(shù)上的數(shù)的個(gè)數(shù) cnt ,再把所有滿足此條件的四位數(shù)依次存入數(shù)組b中,然后對(duì)數(shù)組b的四位數(shù)按從小到大的順序進(jìn)行排序,最后調(diào)用寫函數(shù) writeDat() ,把結(jié)果輸出到 out.dat 文件中。例如: 6712, 6+2=7+1 ,則該數(shù)滿足條件存入數(shù)組 b 中,且個(gè)數(shù) cnt=cnt+1 。8129,
12、8+9<> 1+2,則該數(shù)不滿足條件,忽略。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組: a300 , b300 ;已定義變量: cnt 。請勿改動(dòng)主函數(shù) main() 、讀函數(shù) ReadDat() 和寫函數(shù) writeDat() 的內(nèi)容。#include < stdio.h >int a300,b300,cnt=0;void jsValue() void ReadDat()FILE *fp;int i;fp=fopen("in.dat","r");for(i=0; i v 300;i+)fscanf(fp,"%d,&q
13、uot;,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);main()int i;ReadDat();jsValue();writeDat(); printf("cnt=%d/n",cnt);for(i=0; i v cnt;i+)printf("
14、b%d=%d/n",i,bi);分?jǐn)?shù): 20.00 ) 正確答案: (void jsValue ()int i,thou,hun,ten,data,j;for(i=0;i v 300;i+) /*循環(huán)以遍歷數(shù)組 a中的所有300個(gè)四位數(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ù)的個(gè)位數(shù)字 */if(thou+data=hun+tlq) /* 若干位加個(gè)位等于百位加十位的話 */ bcnt=ai; /*
15、 將此數(shù)存入數(shù)組 b*/ cnt+; /* 讓計(jì)數(shù)值 cnt 增 1*/* 用選擇排序?qū)?shù)組 b 的前 cnt 個(gè)數(shù)進(jìn)行排序 */for(i=0;i(cnt-1;i+) for(j=i+1;j v cnt;j+) if(bi > bj) /* 若前面的數(shù)大于后面的 , 則交換兩者 ( 即升序排列 )*/data=bi;bi=bj;bj=data;)解析:4. 已知數(shù)據(jù)文件 in.dat 中存有 300 個(gè)四位數(shù),并已調(diào)用讀函數(shù) ReadDat() 把這些數(shù)存入數(shù)組 a 中。請編寫 函數(shù) jsValue() ,其功能是:求出千位數(shù)上的數(shù)減百位數(shù)減十位數(shù)上的數(shù)減個(gè)位數(shù)上的數(shù)大于零的個(gè)數(shù) cn
16、t , 再求出所有滿足此條件的四位數(shù)平均值 pjz1 ,以及不滿足此條件的四位數(shù)平均值 pjz2 ,最后調(diào)用寫函數(shù) writeDat() ,把結(jié)果輸出到 out.dat 文件中。例如:9123, 9-1-2-3 >0,則該數(shù)滿足條件,計(jì)算平均值pjzl,且個(gè)數(shù)cnt=cnt+1。9812,9-8-1-2 V 0,則該數(shù)不滿足條件,計(jì)算平均值pjz2。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組: a300 ;已定義變量: cnt , pjz1 , pjz2 。請勿改動(dòng)主函數(shù) main() 、讀函數(shù) ReadDat() 和寫函數(shù) writeDat() 的內(nèi)容。#include V stdio
17、.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);fclose(fp);void writeDat()FILE *fp;fp=fopen("out.dat","w");fprintf(fp,"%d/n%7.2f/n%7.2f/n&qu
18、ot;,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 jsValue ()int i,thou,hun,ten,data,n=0;for(i=0;i v 300;i+)/*循環(huán)以遍歷數(shù)組 a中的所有300個(gè)四位數(shù)*/thou=ai/1000; /* 取當(dāng)前數(shù)的千位數(shù)字 */ hun=ai%100
19、0/100; /* 取當(dāng)前數(shù)的百位數(shù)字 */ ten=ai%100/10; /* 取當(dāng)前數(shù)的十位數(shù)字 */ data=ai%10; /* 取當(dāng)前數(shù)的個(gè)位數(shù)字 */if(thou-hun-ten-data> 0) /* 若干位減百位減十位減個(gè)位大于 0 的話 */cnt+; /* 讓計(jì)數(shù)值 cnt 增 1*/pjz1+=ai; /* 將此數(shù)累加至 pjz1*/else /* 否則讓計(jì)數(shù)值 n 增 1, 并將此數(shù)累加至 pjz2*/n+;pjz2+=ai;pjz1/=cnt; /* 計(jì)算符合條件的數(shù)的平均值 */pjz2/=n; /* 計(jì)算不符合條件的數(shù)的平均值 */)解析:5. 函數(shù) Re
20、adDat() 實(shí)現(xiàn)從 in.dat 文件中讀取 20 行數(shù)據(jù)并存放到字符串?dāng)?shù)組 xx 中(每行字符串長度均小于 80) 。請編寫函數(shù) jsSort() ,其函數(shù)的功能是:以行為單位對(duì)字符串按給定的條件進(jìn)行排序,排序后的結(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源字符串 d C b a h
21、 g f e4 3 2 1 9 8 7 6 5則處理后字符串 h g f e a b C d8 7 6 5 9 1 2 3 4 注意:部分源程序已經(jīng)給出。請勿改動(dòng)主函數(shù) main() 、讀函數(shù) ReadDat() 和寫函數(shù) WriteDat() 的內(nèi)容。#include v stdio.h >#include v string.h >#include v conio.h >char xx2080;void jsSort() void ReadDat()FILE *in;int i=0;char *p;in=fopen("in.dat","r");while(i v 20 fgets(xxi,80,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版智能便利店技術(shù)授權(quán)及門店運(yùn)營合同4篇
- 個(gè)人財(cái)務(wù)規(guī)劃服務(wù)合同2024
- 2025年水電設(shè)施智能化改造安裝合同4篇
- 二零二五版光盤復(fù)制與創(chuàng)意設(shè)計(jì)及制作合同3篇
- 三方協(xié)作2024年勞務(wù)分包協(xié)議模板版A版
- 2025版民爆物品安全評(píng)估與風(fēng)險(xiǎn)管理合同模板4篇
- 2024通信工程智能化設(shè)備采購及安裝服務(wù)協(xié)議3篇
- 2025年度腳手架安裝與拆卸工程承包合同范本4篇
- 校園心理劇在學(xué)生群體中的運(yùn)用
- 小學(xué)科學(xué)課程資源的創(chuàng)新利用與教育效果
- 2025年度房地產(chǎn)權(quán)證辦理委托代理合同典范3篇
- 柴油墊資合同模板
- 湖北省五市州2023-2024學(xué)年高一下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- 城市作戰(zhàn)案例研究報(bào)告
- 【正版授權(quán)】 ISO 12803:1997 EN Representative sampling of plutonium nitrate solutions for determination of plutonium concentration
- 道德經(jīng)全文及注釋
- 2024中考考前地理沖刺卷及答案(含答題卡)
- 多子女贍養(yǎng)老人協(xié)議書范文
- 彩票市場銷售計(jì)劃書
- 支付行業(yè)反洗錢與反恐怖融資
- 基礎(chǔ)設(shè)施綠色施工技術(shù)研究
評(píng)論
0/150
提交評(píng)論