


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、三級數據庫技術機試 -241( 總分: 100.00 ,做題時間: 90 分鐘 )一、上機題( 總題數: 5,分數: 100.00)1. 下列程序的功能是:計算出自然數 SIX和NINE,它們滿足的條件是 SIX+SIX+SIX=NINE+NINE的個數ent 以及滿足此條件所有的SIX與NINE的和sum。請編寫函數countValue()實現程序的要求,最后調用函數writeDat(),把結果ent和sum輸出到 OUT.DAT文件中。其中,S、I、X、N E各代表一個十進制數。注意:部分源程序已經給出。請勿改動主函數 main() 和輸出數據函數 writeDat() 的內容。#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("滿足條件的個數 =%d/n",cnt);printf(”滿足條件所有的 SIX與NINE的和=%d/n",sum);writeDat();分數:
3、20.00 ) 正確答案: (void countValue()int S,I,X,N,E;/* 定義 5個循環變量 ,他們分別代表題目所述的 5個數字*/int SIX,NINE;/* 用窮舉法遍歷這 5 個數字的所有組合 */for(S=1;S < 10;S+) /*S 為SIX的百位數字不能為 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, 則找到一個解 */cnt+; /* 計數值 cnt 增 1*/sum+=SIX+NINE; /* 將 SIXSHNINE累加進 sum*/)解析:2. 已知在IN.DAT文件中存有100個產品銷售記錄,每個產品銷售記錄由產品代碼dm(字符型4位)、產品名稱me(字符型10位)、單價dj(整型)、數量sl(整型)、金額je(長整型)五部分組成。其中:金額=單價x數量。函數ReadDat()是讀取這100個銷售記錄并存入結
5、構數組 sell中。請編寫函數 SortDat(),其功 能是:按產品名稱從大到小進行排列,若產品名稱相等,則按金額從大到小進行排列,最終排列結果仍存 入結構數組sell中,最后調用函數WriteDat(),把結果輸出到OUT.DAT文件中。注意:部分源程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容。#include < stdio.h >#include < string.h >#include < conio.h >#include < stdlib.h >#defi
6、ne MAX 100typedef structchar dm5; /* 產品代碼 */char mc11; /* 產品名稱 */int dj; /*單價 */int sl; /*數量 */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);分數: 20.00 ) 正確答案: (void SortDat ()int i,j;PRO xy;/* 對數組 sell 的所有 100 條記錄進行選
9、擇排序 */for(i=0;i v 99;i+) for(j=i+1;j v100;j+)/*按每條記錄me字段(產品名稱)的大小進行降序排列*/ if(strcmp(selli.inc,sellj.inc)v 0)xy=selli;selli=sellj;sellj=xy;else if(stremp(selli.me,sellj.me)=0) /*若me字段相等則按je字段(金額)的大小進行降序排列*/ if(selli.je v sellj.je)xy=selli; selli=sellj;sellj=xy;)解析:3. 函數 ReadDat() 實現從 in.dat 文件中讀取 20
10、行數據并存放到字符串數組 xx 中( 每行字符串長度均小于 80) 。請編寫函數 jsSort() ,其函數的功能是:以行為單位對字符串變量的下標為奇數的字符按其 ASCII 值從小到大的順序進行排序, 排序后的結果仍按行重新存入字符串數組 xx 中,最后調用函數 WriteDat() 把結果 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 注意:部分源程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容
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();分數: 20.00 ) 正確答案: (void jsSort ()int i,j,k,strl;char ch;for(i=0;i < 20;i+)/*循環遍歷數組 xx中的20行字符串*/strl=strlen(x
13、xi);/* 對當前行下標為奇數的字符進行選擇排序 */for(j=1;j <strl-2;j=j+2) /* 循環從 1開始每次增 2,即遍歷奇數 */for(k=j+2;k< strl;k=k+2)if(xxij> xx【i【k) /* 前面的數大于后面的數則交換 ,即升序排列 */ch=xxij;xxij=xxik;xxik=ch;)解析:4. 函數 ReadDat() 實現從 in.dat 文件中讀取 20 行數據并存放到字符串數組 xx 中(每行字符串長度均小于 80) 。請編寫函數 jsSort() ,其函數的功能是:以行為單位對字符串按給定的條件進行排序,排序后
14、的結 果仍按行重新存入字符串數組 xx 中,最后調用函數 WriteDat() ,把結果 xx 輸出到 out.dat 文件中。 條件:從字符串中間一分為二,左邊部分按字符的 ASCII 值降序排序,排序后左邊部分與右邊部分進行交 換。如果原字符串長度為奇數,則最中間的字符不參加處理,字符仍放在原位置上。例如: 位置 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 注意:部分源程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat()
15、和輸出數據函數 WriteDat() 的內容。#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();分數: 20.00 ) 正確答案: (void jsSort ()int i,j,k,strl,half;char ch;for(i=0;i &l
17、t; 20;i+) /* 循環遍歷數組 xx 中的 20 行字符串 */strl=strlen(xxi);half=Str1/2;/* 對當前行前半部分字符進行選擇排序 */for(j=0;j < half-1;j+)for(k=j+1;k(half;k+)if(xxij < xxik) /* 前面的數小于后面的數則交換 , 即降序排列 */ch=xxij;xxij=xxik;xxik=ch;/* 雙循環變量的 for 循環 , 一個從字符串中間往前遍歷 , 一個從末尾往前遍歷 */for(j=half-1,k=strl-1;j> =0;j-,k-)/* 循環中交換兩個循環變
18、量位置處的字符 , 即交換字符串的前半部分和后半部分 */ ch=xxij;xxij=xxik; xxik=ch;) 解析:5. 已知數據文件 in.dat 中存有 200 個四位數,并已調用讀函數 readDat() 把這些數存入數組 a 中。請編寫 函數 jsVal() ,其功能是:依次從數組 a 中取出一個四位數,如果該四位數連續大于該四位數以前的五個 數且該數是偶數 ( 該四位數以前不滿五個數,則不統計 ) ,則統計出滿足此條件的個數 cnt 并把這些四位數 按從大到小的順序存入數組 b 中,最后調用寫函數 writeDat() ,把結果 cnt 以及數組 b 中符合條件的四位 數輸出
19、到 out.dat 文件中。注意:部分源程序已經給出。程序中已定義數組: a200 ,b200 ;已定義變量: cnt 。請勿改動數據文件 in.dat 中的任何數據及主函數 main() 、讀函數 readDat() 和寫函數 writeDat() 的內容。 #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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宜賓職業技術學院《公共危機管理概論》2023-2024學年第二學期期末試卷
- 長豐縣2025屆數學五年級第二學期期末監測試題含答案
- 淮南職業技術學院《醫學遺傳學A》2023-2024學年第二學期期末試卷
- 太湖創意職業技術學院《項目評估》2023-2024學年第一學期期末試卷
- 南通理工學院《Hadoop技術與應用實訓》2023-2024學年第一學期期末試卷
- 湛江市年模擬物理試題(三)
- 棗強中學高二上學期期末考試理數試題
- 建材市場銷售技巧培訓
- 2025裝修合同范本3
- 精神病人衛生護理課件
- 【貿易戰背景下華為公司危機應對措施及其啟示18000字(論文)】
- 【網絡謠言型尋釁滋事罪的認定存在的爭議探析8600字(論文)】
- 2024延遲退休政策詳解
- 水泥標準培訓考核2024
- 圖書館運營管理服務投標方案(技術方案)
- IC反應器的設計11
- IEEE-30節點全套數據2
- (落地式、懸挑式腳手架)設備設施風險分級管控清單
- DL∕T 5046-2018 發電廠廢水治理設計規范
- 高中語文統編版必修上冊《致云雀》課件
- 杉篙架搭設安全技術交底
評論
0/150
提交評論