


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、三級數據庫技術機試 -242( 總分: 100.00 ,做題時間: 90 分鐘 )一、上機題( 總題數: 5,分數: 100.00)1. 函數ReadDat()實現從IN.DAT文件中讀取一篇英文文章并存入字符串數組xx中。請編寫函數encryptChar() ,按給定的替代關系對數組 xx 中的所有字符進行替代后, 仍存入數組 xx 的對應位置上, 最 后調用函數 WriteDat(),把結果xx輸出到OUT.DAT文件中。替代關系: f(p)=p*11 mod 256(p 是數組中某一個字符的 ASCII 值, f(p) 是計算后新字符的 ASCII 值),如 果計算后f (p)值小于等于
2、32或f(p)對應的字符為數字09,則該字符不變,否則將f(p)所對應的字符 進行替代。原始數據文件存放的格式是:每行的寬度均小于 80個字符。 注意:部分程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容。#include < stdio.h >#include < string.h >#include < conio.h >#include < ctype.h >unsigned char xx5080;int maxline=0; /* 文章的總行數 */int Rea
3、dDat(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=strchr(x
4、xi,'/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*11%256> ='0' && *pf*11%256 < =
5、39;9')|*pf*11%256< =32) /* 若所指字符依題意計算后小于等于 32 或為數字字符 */pfH; /* 指向下一字符 */continue; /* 繼續循環 */ pf=*pf*11%256; /* 否則以計算結果替換該字符 */pf+; /* 指向下一字符 , 準備繼續循環 */)解析:2. 函數ReadDat()實現從IN.DAT文件中讀取一篇英文文章并存入字符串數組xx中。請編寫函數encryptChar() ,按給定的替代關系對數組 xx 中的所有字符進行替代后,仍存入數組 xx 的對應的位置上, 最后調用函數 WriteDat(),把結果xx輸出到
6、OUT.DAT文件中。替代關系: f(p)=p*11 mod 256(p 是數組中某一個字符的 ASCII 值, f(p) 是計算后新字符的 ASCII 值),如 果原字符是大寫字母或計算后 f(p) 值小于等于 32,則該字符不變,否則將 f(p) 所對應的字符進行替代。 原始數據文件存放的格式是:每行的寬度均小于 80 個字符。注意:部分程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容。fp;int i;fp=fopen("OUT.DAT","w");for(i=0; i &l
7、t; maxline;i+)printf("%s/n",xxi);fprintf(fp,"%s/n",xxi);fclose(fp);分數: 20.00 )#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=1;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( 即字符串結束標志 ) 則循環 */ /* 若所指字符為大寫字母或依題意計算后小于等于 32*/if(*pf > =A && *pf < ='z')|*pf*11%256< =32)pf+; /* 指向下一字符 */continue; /* 繼續循環 */*pf=*pf*11%256; /* 否則以計算結果替換該字符 */pf+; /* 指向下一字符 , 準備繼續循環 */)解析:3. 已知在IN.DAT文件中存有100個產品銷售記錄,每個產品銷售記錄由
11、產品代碼dm(字符型4位)、產品名稱me(字符型10位)、單價dj(整型)、數量sl(整型)、金額je(長整型)五部分組成。其中:金額 =單價 x數量。函數ReadDat()是讀取這100個銷售記錄并存入結構數組sell中。請編寫函數 SortDat(),其功能是:按產品代碼從小到大進行排列,若產品代碼相同,則按金額從小到大進行排列,最終排列結果仍存 入結構數組sell中,最后調用函數WriteDat(),把結果輸出到OUT.DAT文件中。注意:部分程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容。#inelude &l
12、t; stdio.h >#inelude < string.h >#inelude < eonio.h >#inelude < stdlib.h >#define MAX 100typedef struetehar dm5; /* 產品代碼 */ehar me11; /* 產品名稱 */int dj; /*單價 */int sl; /*數量 */long je; /* 余額 */PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()void main() memset(sell,0,s
13、izeof(sell)*ReadDat()*SortDat()*WriteDat()*void ReadDat()FILE *fp;char str80,ch11;int 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(
14、ch);selli.je=(long)selli.dj*selli.sl;fclose(fp);void WriteDat(void)FILE *fp;int i;fp=fopen("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,sel.li.mc,selli.dj,selli
15、.sl,selli.je);fclose(fp);分數: 20.00 ) 正確答案: (void SortDat () int i,j;PRO xy;/* 對數組 sell 的所有 100 條記錄進行選擇排序 */for(i=0;i v MAX-1;i+)for(j=i+1;j v MAX;j+)/*按每條記錄dm字段(產品代碼)的大小進行升序排列*/if(strcmp(selli.dm,se II j.dm)> 0)xy=selli;selli=sellj;sellj=xy;else if(strcmp(selli.dm,sellj.dm)=0) /*若dm字段相等則按je字段(金額)
16、的大小進行升序排列*/if(selli.je>sellj.je)xy=selli;selli=sellj;sellj=xy;)解析:4. 現有一個10個人100行的選票數據文件IN.DAT,其數據存放的格式是每條記錄的長度均為10位,第一位表示第一個人的選中情況,第二位表示第二個人的選中情況,依此類推;內容均為字符0和 1, 1 表示此人被選中, 0 表示此人未被選中, 全選或全不選均為無效的選票。給定函數 ReadDat() 的功能是把選票數據 讀入字符串數組 xx 中。請編寫函數 CouIltRs() 來統計每個人的選票數并把得票數依次存入 yy0 倒 yy9 中,把結果yy輸出到O
17、UT.DAT文件中。注意:部分程序已經給出。請勿改動主函數 main() 、讀數據函數 ReadDat() 和輸出數據函數 WriteDat() 的內容。#include v stdio.h >char xx10011;int yy10;int ReadDat(void);void WriteDat(void);void CountRs(void)void main()int i;for(i=0;i v10;i+)yyi=0;if(ReadDat()printf(" 選票數據文件 IN.DAT 不能打開 !/n/007");return;CountRs();Write
18、Dat();int ReadDat(void)FILE *fp;int i;if(fp=fopen("IN.DAT","r")=NULL)return 1;for(i=0;i v 100;i+)if(fgets(xxi,12,fp)=NULL)return 1;xxi10='/0'fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen("OUT.DAT","w");for(i=0;i v10;i+)fprintf(fp,"
19、;%d/n",yyi);printf(”第4 個人的選票數=%d/n",i+1,yyi);fclose(fp);分數: 20.00 ) 正確答案: (void CountRs(void)int i,j=0,k;char*str;for(i=0;i v10;i+) /* 循環以遍歷數組 yy*/ yyi=0; /* 清零 yy 中的元素 (10 人的得票數 )*/ for(i=0;i v100;i+) /* 循環以遍歷 100行選票數據 */ str=xxi; /* 用字符指針 str 指向當前選票行 */ j=0; /* 清零計數值 j 用以統計當前行選票數 */ whil
20、e(*str) /* 以指針 str 遍歷整個選票行 */ if(*str='1')j+; /* 若遍歷到字符 '1', 則讓臨時計數值 j 增 1*/ str+; /* 繼續遍歷下一個字符 */if(j!=0j!=10) /* 若選票數不為 0和 1 0即為有效選票 */for(k=0;k v10;k+) /* 循環遍歷選票行 */yyk+=xxik'0' /*將選票位換算成數值累加進數組 yy*/)解析:5. 已知在IN.DAT文件中存有若干個(v 200)四位數字的正整數,函數 ReadDat()讀取若干個正整數并存入 數組 xx 中。請編
21、寫函數 CalValue() ,其功能是: (1) 求出這文件中共有多少個正整數totNum;(2) 求這些數中的各位數字之和是偶數的數的個數 totCnt ,以及滿足此條件的這些數的算術平均值 totPjz ,最后調用 函數writeDat()把所求的結果輸出到OUT.DAT文件中。注意:部分程序已經給出。請勿改動主函數 main() 、讀函數 ReadDat() 和寫函數 writeDat() 的內容。#include v stdio.h >#include v conio.h >#define MAXNUM 200int xxMAXNUM;int totNum=0;int t
22、otCnt=0;double totPjz=0.0;int ReadDat(void);void writeDat(void);void CalValue(void)void main()int i;for(i=0;i v MAXNUM;i+)xxi=0;if(ReadDat()printf(" 數據文件 IN.DAT 不能打開 !/007/n");return;CalValue();printf("IN.DAT 文件中的正整數個數=%d個/n",totNum);printf(”符合條件的正整數個數 =%d個/n",totCnt);printf(" 平均值 =%.2f/n",totPjz);writeDat();int ReadDat(void)FILE *fp;int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業排放控制與環境標準制定
- 工業旅游發展路徑研究
- 工業機器人散熱與節能的先進技術
- 工業污染排放的實時監控技術應用
- 工業機器人技術及產業應用分析
- 工業污染防治國際合作項目分析
- 工業自動化系統的編程與調試技術
- 工業節能與環保法規的協同推進
- 工業自動化與智能化轉型戰略
- 工業自動化與新材料技術的融合
- 學校信息化建設十五五規劃方案
- 小學民法典主題班會教案
- 2025年江西報業傳媒集團招聘題庫帶答案分析
- 公司退貨流程管理制度
- MHD多相流體系統的建模與仿真-洞察闡釋
- 辦公軟件實操試題及詳細答案
- 礦產品銷售合作合同范本
- 米粉項目可行性分析報告
- 江蘇省常州市聯盟學校2022-2023學年高一下學期期末聯考數學試題(學生版)
- 2024-2025學年七年級下冊歷史期末測試模擬卷(統編版)(含答案)
- 學前教育學備課課件(共54張PPT)
評論
0/150
提交評論