三級數據庫技術機試-230_第1頁
三級數據庫技術機試-230_第2頁
三級數據庫技術機試-230_第3頁
免費預覽已結束,剩余6頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、三級數據庫技術機試 -230( 總分: 100.00 ,做題時間: 90 分鐘 )、上機題( 總題數: 5,分數: 100.00)1. 函數 ReadDat() 實現從 IN.DAT 文件中讀取一篇英文文章并存入到字符串數組 xx 中。請編寫函數 encryptChar() ,按給定的替代關系對數組 xx 中的所有字符進行替代后, 仍存入數組 xx 的對應位置上, 最 后調用函數 WriteDat(),把結果xx輸出到OUT.DAT文件中。替代關系: f(p)=p*11mod 256(p 是數組中某一個字符的 ASCII 值, f(p) 是計算后新字符的 ASCII 值),如 果計算后 f(p

2、) 值小于等于 32 或原字符是小寫字母,則該字符不變,否則將 f(p) 所對應的字符進行替代。 原始數據文件存放的格式是:每行的寬度均小于 80 個字符。注意:部分源程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容。#include < stdio.h >#include < string.h >#include < conio.h >#include < ctype.h >unsigned char xx5080;int maxline=0; /* 文章的總行數 */i

3、nt ReadDat(void);void WriteDat(void);void encryptChar()void main()if(ReadDat()printf(" 數據文件 IN.DAT 不能打開 !/n/007");return;encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i=0;unsigned char *p;if(fp=fopen("IN.DAT","r")=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=st

4、rchr(xxi,'/n');if(p)*p=0;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE 正確答案: (void encryptChar()int i;char*pf;/* 循環以遍歷英文文章的每一行 */for(i=0;i < maxline;i+)pf=xxi; /* 以字符指針指向當前行行首 */while(*pf!=0) /* 若所指字符不為 0( 即字符串結束標志 ) 則循環 */if(*pf > ='a' && *pf < ='z

5、9;)|*pf*11%256< =32) /* 若所指字符是小寫字母或依題意計算后小于等于 32*/pf+; /* 指向下一字符 */continue; /* 繼續循環 */ pf=*pf*11%256; /* 否則以計算結果替換該字符 */pf+; /* 指向下一字符 , 準備繼續循環 */)解析:2. 函數ReadDat()實現從IN.DAT文件中讀取一篇英文文章并存入到字符串數組xx中。請編寫函數encryptChar() ,按給定的替代關系對數組 xx 中的所有字符進行替代后, 仍存入數組 xx 的對應位置上, 最 后調用函數 WriteDat(),把結果xx輸出到OUT.DAT

6、文件中。替代關系: f(p)=p*11 mod 256(p 是數組中某一個字符的 ASCII 值, f(p) 是計算后新字符的 ASCII 值),如 果原字符是數字字符 0 至 9 或計算后 f(p) 值小于等于 32,則該字符不變,否則將 f(p) 所對應的字符進行 替代。原始數據文件存放的格式是:每行的寬度均小于 80 個字符。 注意:部分源程序已經給出。fp;int i;fp=fopen("OUT.DAT","w");for(i=0;i < maxline;i+)printf("%s/n",xxi);fprintf(fp,

7、"%s/n",xxi);fclose(fp);分數: 20.00 )的內容。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat()#include < stdio.h >#include < string.h >#include < conio.h >#include < ctype.h >unsigned char xx5080;int maxline=0; /* 文章的總行數 */int ReadDat(void);void WriteDat(void);void encryp

8、tChar()void main()if(ReadDat()printf(" 數據文件 IN.DAT 不能打開 !/n/007");return;encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i=0; unsigned 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;f

9、close(fp);return 0;void WriteDat(void)FILE *fp;int i; fp=fopen("OUT.DAT","w");for(i=0;i < maxline;i+)printf("%s/n",xxi); fprintf(fp,"%s/n",xxi);fclose(fp);(分數: 20.00 )正確答案: (void encryptChar()int i;char*pf;/* 循環以遍歷英文文章的每一行 */for(i=0;i < maxline;i+)pf=xxi

10、; /* 以字符指針指向當前行行首 */while(*pf!=0) /* 若所指字符不為 0( 即字符串結束標志 ) 則循環 */if(*pf> ='0' && *pf < ='9')|*pf*11%256< =32) /* 若所指字符是數字字符或依題意計算后小于等于 32*/pf+; /* 指向下一字符 */continue; /* 繼續循環 */*pf=*pf*11%256; /* 否則以計算結果替換該字符 */pf+; /* 指向下一字符 , 準備繼續循環 */)解析:3. 函數ReadDat()實現從IN.DAT文件中讀

11、取一篇英文文章并存入到字符串數組xx中。請編寫函數encryptChar() ,按給定的替代關系對數組 xx 中的所有字符進行替代后, 仍存入數組 xx 的對應位置上, 最 后調用函數 WriteDat(),把結果xx輸出到OUT.DAT文件中。替代關系: f(p)=p*17 mod 256(p 是數組中某一個字符的 ASCII 值, f(p) 是計算后新字符的 ASCII 值),如 果計算后 f(p) 值小于等于 32 或其 ASCII 值是奇數,則該字符不變,否則將 f(p) 所對應的字符進行替代。 原始數據文件存放的格式是:每行的寬度均小于 80 個字符。注意:部分源程序已經給出。請勿改

12、動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容。#include < stdio.h >#include < string.h >#include < conio.h >#include < ctype.h >unsigned char xx5080;int maxline=0; /* 文章的總行數 */int ReadDat(void);void WriteDat(void);void encryptChar() void main()if(ReadDat() printf("

13、數據文件 IN.DAT 不能打開 !/n/007"); return;encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i=0;unsigned 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

14、*fp;int i;fp=fopen("OUT.DAT","w");for(i=0;i < maxline;i+)printf("%s/n",xxi);fprintf(fp,"%s/n",xxi);fclose(fp);分數: 20.00 ) 正確答案: (void encryptChar()int i;char*pf;/* 循環以遍歷英文文章的每一行 */ for(i=0;i(maxline;i+)pf=xxi; /* 以字符指針指向當前行行首 */ while(*pf!=0) /* 若所指字符不為 0(

15、即字符串結束標志 ) 則循環 */ if(*pf*17%256)%2!=0)|*pf*17%256(=32) /* 若所指字符依題意計算后為奇數或小于等于 32*/pf+; /* 指向下一字符 */continue; /* 繼續循環 */*pf=*pf*17%256; /* 否則以計算結果替換該字符 */pf+; /* 指向下一字符 , 準備繼續循環 */)解析:4. 已知在IN.DAT文件中存有100個產品銷售記錄,每個產品銷售記錄由產品代碼dm(字符型4位)、產品名稱me(字符型10位)、單價dj(整型)、數量sl(整型)、金額je(長整型)五部分組成。其中:金額 =單價 x數量。函數Re

16、adDat()是讀取這100個銷售記錄并存入結構數組sell中。請編寫函數 SortDat(),其功能是:按金額從小到大進行排列,若金額相等,則按產品代碼從小到大進行排列,最終排列結果仍存入結 構數組sell中,最后調用函數WriteDat(),把結果輸出到OUT.DAT文件中。注意:部分源程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容。#include < stdio.h >#include < string.h>#include < conio.h >#include <

17、stdlib.h>#define 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;i

18、nt i;fp=fopen("IN.DAT","r");for(i=0;i v 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=fo

19、pen("OUT.DAT","w");for(i=0;i v100;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;/* 對數組 sel l 的

20、所有 100 條記錄進行選擇排序 */for(i=0;i v 99;i+)for(j=i+1;j v i00;j+)/* 按每條記錄 je 字段(產品金額 )的大小進行升序排列 */if(selli.je > sell j.je)xy=selli;selli=sellj;sellj=xy;else if(selli.je=sellj.je) /*若je字段相等則按dm字段(代碼)的大小進行升序排列*/if(strcmp(selli.dm,se II j.dm)> 0)xy=selli;selli=sellj;sellj=xy;)解析:5. 函數ReadDat()實現從IN.DAT文

21、件中讀取一篇英文文章并存入到字符串數組xx中。請編寫函數CharConvA() ,其函數的功能是: 以行為單位把字符串中的最后一個字符的 ASCII 值右移 4 位后加最后第二 個字符的 ASCII 值,得到最后一個新的字符,最后第二個字符的 ASCII 值右移 4 位后加最后第三個字符的 ASCII 值,得到最后第二個新的字符,依此類推,一直處理到第二個字符,第一個字符的ASCII 值加原最后一個字符的 ASCII 值,得到第一個新的字符,得到的新字符分別存放在原字符串對應的位置上。最后已 處理的字符串仍按行重新存入字符串數組xx中,最后調用函數 WriteDat(),把結果xx輸出到OUT

22、.DAT文件中。原始數據文件存放的格式是:每行的寬度均小于 80 個字符(含標點符號和空格 )。 注意:部分源程序已經給出。請勿改動主函數 main() 、讀函數 ReadDat() 和寫函數 WriteDat() 的內容。#include < stdio.h >#include < string.h >#include < conio.h > char xx5080;int maxline=0; /* 文章的總行數 */ int ReadDat(void);void WriteDat(void); void CharConvA(void) void main()if(ReadDat()printf(" 數據文件 IN.DAT 不能打開 !/n/007&quo

溫馨提示

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

評論

0/150

提交評論