三級數(shù)據(jù)庫技術(shù)機試-236_第1頁
三級數(shù)據(jù)庫技術(shù)機試-236_第2頁
三級數(shù)據(jù)庫技術(shù)機試-236_第3頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、三級數(shù)據(jù)庫技術(shù)機試 -236( 總分: 100.00 ,做題時間: 90 分鐘 )一、上機題( 總題數(shù): 5,分數(shù): 100.00)1. 下列程序的功能是:計算500800區(qū)間內(nèi)素數(shù)的個數(shù) ent,并按所求素數(shù)的值從大到小的順序排列,再計算其間隔加、減之和,即第1個素數(shù)-第2個素數(shù)+第3個素數(shù)-第4個素數(shù)+第5個素數(shù)的值sum請編寫函數(shù)countValue()實現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDat(),把結(jié)果ent和sum輸出到OUT.DAT文件中。注意:部分源程序已給出。請勿改動主函數(shù) main() 和輸出數(shù)據(jù)函數(shù) writeDat() 的內(nèi)容。#include < stdio.

2、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(" 素數(shù)的個數(shù) =%d/n",cnt); printf(" 按要求計算的值 =%d/n",sum); writeDat();分數(shù): 20.00 ) 正確答案:

3、(void countValue()int i,j,half,yy100;for(i=800;i> =500;i-) /*循環(huán)遞減遍歷800500之間的數(shù)*/half=i/2;/* 判斷當前數(shù)是否素數(shù) */for(j=2;j < half;j+)if(i%j=0)break;if(j > =half) /* 如果是素數(shù)則將該數(shù)保存到數(shù)組 yy, 并讓計數(shù)值 cnt 增 1*/ yycnt=i;cnt+;for(i=0,j-i;i < cnt;i+) /* 循環(huán)計算數(shù)組 yy 中前 cnt 個數(shù)的間隔加、減之和 */ sum+=j*yyi;j=j*-1;)解析:2. 下列

4、程序的功能是: 選出 5000以下符合條件的自然數(shù)。 條件是:千位數(shù)字與百位數(shù)字之和等于十位數(shù)字 與個位數(shù)字之和, 且于位數(shù)字與百位數(shù)字之和等于個位數(shù)字與千位數(shù)字之差的 10 倍。計算并輸出這些四位 自然數(shù)的個數(shù)cnt以及這些數(shù)的和sum。請編寫函數(shù)countValue()實現(xiàn)程序的要求,最后調(diào)用函數(shù) writeDat(),把結(jié)果cnt和sum輸出到 OUT.DAT文件中。注意:部分源程序已經(jīng)給出。請勿改動主函數(shù) main() 和輸出數(shù)據(jù)函數(shù) writeDat() 的內(nèi)容。#include < stdio.h >int cnt,sum;void countValue()void w

5、riteDat()FILE *fp;fp=fopen("OUT.DAT","w");fprintf(fp,"%d/n%d/n",cnt,sum);fclose(fp);void main()cnt=sum=0;countValue();printf(" 滿足條件的自然數(shù)的個數(shù) =%d/n",cnt);printf(" 滿足條件的自然數(shù)的個數(shù)之和 =%d/n",sum);writeDat();分數(shù): 20.00 ) 正確答案: (void countValue()int i,thou,hun,te

6、n,data;for(i=5000;i>=1000;i-) /*循環(huán)遞減遍歷50001000之間的數(shù)*/ thou=i/1000; /* 取當前數(shù)的千位數(shù)字 */ hun=i%1000/100; /* 取當前數(shù)的百位數(shù)字 */ ten=i%100/10; /* 取當前數(shù)的十位數(shù)字 */ data=i%10; /* 取當前數(shù)的個位數(shù)字 */if (thou+hun=ten+data thou+hun=(data-thou)*10) /* 如果千位加百位等于十位加個位且千位加百位等于個位減千位乘 10*/cnt+; /* 計數(shù)值 cnt 加 */sum+=i; /* 將 i 累加到 sum

7、中*/)解析:3. 已知數(shù)據(jù)文件 IN.DAT 中存有 200 個四位數(shù),并已調(diào)用讀函數(shù) readDat() 把這些數(shù)存入數(shù)組 a 中。請編寫 函數(shù) jsVal() ,其功能是:如果四位數(shù)各位上的數(shù)字均是奇數(shù),則統(tǒng)計出滿足此條件的個數(shù) cnt 并把這些 四位數(shù)按從大到小的順序存入數(shù)組 b 中。最后 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ù)

8、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;i+) fscanf(fp,"%d,",ai);fclose(fp);void writeDat()FILE *fp;int i;fp=fopen("OUT.DAT"

9、;,"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 < cnt;i+) printf("%d",bi);printf("/n");writeDat();分數(shù): 20.00 ) 正確答案: (void

10、jsVal()int i,thou,hun,ten,data,j;for(i=0;i v 200;i+)/*循環(huán)以遍歷數(shù)組 a中的所有200個四位數(shù)*/thou=ai/1000; /* 取當前數(shù)的千位數(shù)字 */hun=ai%1000/100; /* 取當前數(shù)的百位數(shù)字 */ten=ai%100/10; /* 取當前數(shù)的十位數(shù)字 */data=ai%10; /* 取當前數(shù)的個位數(shù)字 */if(thou%2!=0 hun%2 1=Oten%2!=0 data%2!=0) /* 如果各位數(shù)字均為奇數(shù) */bcnt=ai; /* 將此數(shù)存入數(shù)組 b*/cnt+; /* 讓計數(shù)值 cnt 增 1*/*

11、用選擇排序?qū)?shù)組 b 的前 cnt 個數(shù)進行排序 */for(i=0;i(cnt l;i+)for(j=i+1;j(cnt;j+)if(bi v bj) /* 若前面的數(shù)小于后面的 , 則交換兩者 ( 即降序排列 )*/data=bi;bi=bj;bj=data;)解析: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ù)c

12、nt 并把這些四位數(shù)按從小到大的順序存入數(shù)組 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 v stdio.h >#define MAX 200int aMAX,bMAX,cnt=0;void jsVal()void readDat() int i;FILE *fp;

13、fp=fopen("IN.DAT","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()

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

15、10; /* 取當前數(shù)的十位數(shù)字 */ data=ai%10; /* 取當前數(shù)的個位數(shù)字 */ if(thou-hun-ten-data)=0) ai%2=1) /* 如果千位減百位減十位減個位不小于 0 且該數(shù)為奇數(shù) */ bcnt=ai; /* 將此數(shù)存入數(shù)組 b*/cnt+; /* 讓計數(shù)值 cnt 增 1*/* 用選擇排序?qū)?shù)組 b 的前 cnt 個數(shù)進行排序 */for(i=0;i(cnt-1;i+)for(j=i+1;j(cnt;j+)if(bi > bj) /* 若前面的數(shù)大于后面的 , 則交換兩者 ( 即升序排列 )*/data=bi;bi=bj;bj=data;)解析:

16、5. 已知在IN.DAT文件中存有若干個(< 200)四位數(shù)字的正整數(shù),函數(shù)ReadDat()讀取這若干個正整數(shù)并存入數(shù)組 xx 中。請編寫函數(shù) CalValue() ,其功能是: (1) 求出文件中的正整數(shù)個數(shù)totNum;(2) 求這些數(shù)右移1位后,產(chǎn)生的新數(shù)是奇數(shù)的數(shù)的個數(shù) totCnt 以及滿足此條件的這些數(shù) (右移前的值 )的算術(shù)平均值 totPjz,最后調(diào)用函數(shù)writeDat()把所求的結(jié)果輸出到0UT.DAT文件中。注意:部分源程序已經(jīng)給出。請勿改動主函數(shù) main() 、讀函數(shù) ReadDat() 和寫函數(shù) writeDat() 的內(nèi)容。#include < st

17、dio.h >#include < conio.h >#define MAXNUM 200int xxMAXNUM;int totNum=0; /*IN.DAT 文件中的正整數(shù)個數(shù) */int totCnt=0; /* 符合條件的正整數(shù)個數(shù) */double totPjz=0.0; /* 平均值 */int ReadDat(void);void writeDat(void);void CalValue(void)void main()int i;for(i=0;i < MAXNUM;i+)xxi=0;if(ReadDat()printf(”數(shù)據(jù)文件INDAT不能打開!/

18、007/n");return;CalValue();printf("IN.DAT文件中的正整數(shù)個數(shù)=%d個/n",totNum);printf("符合條件的正整數(shù)個數(shù) =%d個/n",totCnt);printf(" 平均值 =%.2f/n",totPjz);writeDat();int ReadDat(void)FILE *fp;int i=0;if(fp=fopen("IN.DAT","r")=NULL)return 1;while(!feof(fp)fscanf(fp,"%d,", xxi+);fclose(fp);return 0;void writeDat(void)FILE *fp; fp=fopen("OUT.DAT","w");fprintf(fp, "%d/n%d/n%6.2f/n",totNum,totCnt,totPjz); fclose(fp);分數(shù): 20.00 ) 正確答案: (void CalValue(void)int i,data;for(i=0;i < MAXNUM;i+)/*循環(huán)以遍歷數(shù)組

溫馨提示

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

評論

0/150

提交評論