




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
國家三級(網絡技術)機試模擬試卷26(共9套)(共9題)國家三級(網絡技術)機試模擬試卷第1套一、程序設計題(本題共1題,每題1.0分,共1分。)1、函數ReadDat()的功能是實現從文件IN5.DAT中讀取一篇英文文章存入到字符串數組xx中。請編制函數ConvertCharA(),該函數的功能是:以行為單位把字符串中的所有小寫字母改寫成該字母的下一個字母,如果是字母z,則改寫成字母a。大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不變。把已處理的字符串仍按行重新存入字符串數組xx中,最后調用函數WriteDat()把結果xx輸出到文件OUT5.DAT中。例如,原文:Adb.Bcdzaabck.LLhj結果:Aec.Bdeabbcdl.LLik原始數據文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。請勿改動主函數main()、讀函數ReadDat()和寫函數WriteDat()的內容。試題程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;/*文章的總行數*/intReadDat(void);voidWriteDat(void);voidConvertCharA(void){main(){clrscr();if(ReadDat()){printf("數據文件IN5.DAT不能打開!\n\007");return;}ConvertCharA();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN5.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;voidWriteDat(void){FILE*fp;inti;clrscr();fp=fopen("OUT5.DAT","w");for(i=0;i<maxline;i++){printf("%skn",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclosefp);}標準答案:voidConvertCharA(void){inti,i,str;for(i=O;i<maxline;i++){str=strlen(XX[i]);/*求得當前行的字符串的長度*/for(j=0;i<str;j++)if(MX[i][j]==’z’)MX[i][j]=’a’;/*如果遇到的字符是小寫字母z則改寫成小寫字母a*/elseif(xx[i][j]>=’a’&&xx[i][j]<=’y’)MX[i][j]+=1;/*如果該字符是從a到y的小寫字母則改寫為該字母的下一個字母*/}}知識點解析:本題要對二維數組中的字符元素按行來處理,因此,首先要求得當前行所包含的字符總個數,之后才可以利用一個循環米依次訪問該行中的所有字符。當遇到一個字符時,先判斷該字符是否是小寫字母z,如果是,則把該字符改寫成小寫字母a;如果不是,則繼續判斷該字符是否是從a到y的小寫字母,如果是,則改寫為該字母的下一個字母(利用字符的ASCII碼值來實現);如果不是,則不做任何的操作,接著去取下一個字符。國家三級(網絡技術)機試模擬試卷第2套一、程序設計題(本題共1題,每題1.0分,共1分。)1、標準答案:知識點解析:通過審題可以發現有兩個不同點:①要求統計的四位數的條件是“千位+百位=十位+個位”,參考答案的第18條語句修改if語句的判斷條件即可。②將統計結果按從大到小的順序排序,參考答案的第13條語句,修改兩數組元素的大小比較符即可。另外,對于數據交換的整型變量tmp可以自定義其變量名。國家三級(網絡技術)機試模擬試卷第3套一、程序設計題(本題共1題,每題1.0分,共1分。)1、文件IN.DAT中存有200個四位整型數,函數readData()負責將IN.DAT中的數讀到數組inBuf[]中。請編寫函數findValue(),其功能是;把千位數字和十位數字重新組合成一個新的兩位數(新兩位數的十位數字是原四位數的千位數字,新兩位數的個位數字是原四位數的十位數字),以及把個位數和百位數組成另一個新的兩位數(新兩位數的十位數字是原四位數的個位數字),新生成的兩個兩位數均為素數且新兩位數均不為零。求滿足條件的數,用count記錄下符合條件的數的個數,并按照從大到小的順序存人數組outBuf[]中。函數writeData()負責將outBuf[]中的數輸出到文件OUT.DAT中,并且在屏幕上顯示出來。注意;部分源程序已給出。程序中已定義數組;inBuf[NUM],outBuf[NUM],已定義變量;count。請勿改動主函數main()、讀函數readData()和寫函數writeData()的內容。試題程序;#include#defineNUM200intinBuf[NUM],outBuf[NUM],count=0;voidreadData();voidwriteData();voidfindValue(){}voidmain(){inti;readData();findValue();writeData();printf("count=%d\n",count);for(i=0;i標準答案:voidfindValue(){inti,j,k,d[4],temp,flag,ab,cd,abcd[2];for(i=0;i知識點解析:本題考查的主要是數位分解及排序。數位分解就是將n位數各個數位上的數值單獨分離出來,將此n位數對10求余可以將個位上的數值分離出來;將此n位數除以10以后得到一個n-1位數,則此時n位數原來的十位就變成了n-1位數的個位,再將此n-1位數對10求余便可得到原13.位數的十位。依此類推,便可將n位數各個位上的數值分離出來。程序基本步驟是;1.將數值送入temp中。2.由temp%10得到個位數;(temp/10)%10得到十位數,依此類推,可得到各位上的數值。3.按照題目所給的條件篩選出數據。4.對選出的數據進行排序。本題判斷素數的方法是固定的,但思路有很多,讀者可根據自己的喜好來編寫.程序,如可以自定義一個判斷素數的函數,然后在if條件中直接調用此函數也可以達到目的。國家三級(網絡技術)機試模擬試卷第4套一、程序設計題(本題共1題,每題1.0分,共1分。)1、請編寫函數num(intm,intk,intxx[]),該函數的功能是;將大于整數m且與m相鄰的k個素數存人數組XX中傳回。最后調用readWriteData()從IN.DAT文件中讀取10組數據,分別得出結果,且把結果輸出到文件0UT.DAT中。例如;114,則應輸出;13171923注意;部分源程序已經給出。請勿改動主函數mainData()和輸出函數readWriteData()的內容。試題程序;#include#includevoidreadWriteData();voidnum(intm,intk,intxx[]){}main(){intm,n,xxElOOO];printf("\nPleaseentertwointegers;");scanf("%d%d",&m,&n);num(m,n,xx);for(m=0;m標準答案:voidnum(intm,intk,intxx[]){intdata=m+1;//定義整形變量data,并賦初值m+1inthalf,n=0,i;while(1)//判斷data是否為素數{half=data/2;for(i=2;i<=half;i++)if(data%i==0)break;if(i>half)//i>half說明i是素數{xx[n]=data;//將d放人數組xx中n++;//計數器加1}if(n>=k)//如果找到了k個滿足的素數,則跳出循環break;data++;//繼續找下一個素數}}知識點解析:num()函數的功能是將大于整數m且符合與m相鄰的k個素數,存入數組xx[]中。本題中,在找到符合的素數后,將data放入數組XX中,計數器此時加1。利用循環來找到符合條件的素數,然后跳出循環繼續尋找下一個素數。國家三級(網絡技術)機試模擬試卷第5套一、程序設計題(本題共1題,每題1.0分,共1分。)1、已知在文件IN13.DAT中存有若干個(個數<200)4位數字的正整數,函數ReadDat()的功能是讀取這若干個正整數并存入數組xx中。請編制函數CalValue(),其功能要求:(1)求出該文件中共有多少個正整數totNum;(2)求這些數右移1位后,產生的新數是偶數的數的個數totCnt,以及滿足此條件的這些數(右移前的值)的算術平均值totPjz,最后調用函數WriteDat()把所求的結果輸出到文件OUT13.DAT中。注意:部分源程序已給出請勿改動主函數main()、讀函數ReadDat()和寫函數WriteDat()的內容。試題程序:#include〈stdio.h>#include〈conio.h>#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/*文件IN13.DAT中共有多少個正整數*/inttotCnt=0;/*符合條件的正整的個數*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidWritedat(void);voidCalValue(void){}main(){inti;clrscr();for(i=0;i〈MAXNUM;i++)xx[i]=0;if(ReadDat()){printf("數據文件IN13.DAT不能打開!\007\n");return;}CalValue();printf("文件IN1B.DAT中共有正整數=%d個\n",totNum);printf("符合條件的正整數的個數=%d個\n",totCnt);printf("平均值=%.21f\n",totPjz)Writedat();}intReadDat(void){FILE*fp;inti=0;if((fp=fopen("IN13.DAT","r"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%d,",&xx[i++]);}fclose(fp);return0;}voidWriteDat(void){FILE*fp;fp=fopen("OUT13.DAT","w");fprintf(fp,"%d\n%d\n%.21f\n",totNum,totCnt,totPjz);fclose(fp);}標準答案:voidCalValue(void){inti,data;for(i=0;i〈MAXNUM;i++){if(!xx[i])continue;/*如果當前數為0,則結束本次循環,取下一個數*/if(xx[i]>0)totNum++;/*統計正整數的個數*/data=xx[i]>>1;/*將數右移一位*/if(data%2==0)/*如果右移1位后,產生的新數是偶數*/{totCnt++;totPjz+=xx[i];}/*統計這些數的個數,并將滿足條件的原數求和*/}totPjz/=totCnt;/*求滿足條件的這些數(右移前的值)的算術平均值*/}知識點解析:本題的解題思路是首先利用一個for循環來依次從數組中取得各數,由于題目要求數組中正整數的個數,因此,零不做任何處理,接著去取下一個數。只要某數大于零,則該數一定是正整數,這時就給變量totNum(正整數的個數)累加1,之后把該正整數右移一位后的結果臨時保存在變量data中,再對這個臨時變量進行是否偶數的判斷。如果該臨時變量中保存的值是偶數,則表明原數符合條件,就給變量totCnt(符合判斷條件的正整數個數)累加1,并把當前的變量data右移前的原數的值累加到變量totPjz中,當所有符合判斷條件的數都被找出后,再對totPjz進行求平均值的計算。國家三級(網絡技術)機試模擬試卷第6套一、程序設計題(本題共1題,每題1.0分,共1分。)1、下列程序的功能是:計算500~800之間素數的個數cnt,并按所求素數的值從小到大的/頃序,再計算其間隔加、減之和,即第1個素數-第2個素數十第3個素數-第4個素數+第5個素數……的值sum。請編寫函數countValue()實現程序的要求,最后調用函數writeDaI()把結果cnt和sum輸出到文件OUT66.DAT中。注意:部分源程序已給出。請勿改動主函數main()和寫函數writeDAT()的內容。試題程序;#include<stdio.h>intcnt,sum;voidcountValue(){}voidmain(){cnt=sum=0;countValue();printf("素數的個數=%d\n",ont);printf("按要求計算得值=%d\n",sum);writeDAT();}writeDAT(){FILE*fp;fp=fopen("OUT66.DAT","w");fprintf(fp,"%d\n%d\n",cnt,sum);fclose(fp);}標準答案:voidcountValue(){inti,j,half,yy[100];for(i=500;i<800;i++){half=i/2;for(j=2;j<=half;j++);if(i%j==0)break;/*如果該數不是素數,則退出此層循環*/if(j>=half)/*如果該數是素數,則將該數存入數組yy中*/{yy[cnt]=i;cnt++;/*統計素數的個數*/}}for(i=0,j=-1;i<cnt;i++)/*計算這些素數的間隔加、減之和*/{j=j*-1;sum+=j*yy[i];}}知識點解析:本題考查的知識點如下:(1)利用循環和“%”進行素數的判斷。(2)間隔加、減的實現。在本題中,首先要找出判斷素數的方法。若一個數a依次除以從2到a/2的數所得的余數都不是0,則這個數是素數。用此方法依次判斷出從500到800區間內的素數。由題意可知,第1,3,5…個素數計算加法,第2,4,6…個素數計算減法。減去1個正整數就是加上負的這個正整數,所以可以將這個正整數乘以-1進行加法。使用循環實現求和,在奇數次的循環中,每個素數乘以1,偶數次的循環中,素數乘以-1,就可實現間隔加、減。國家三級(網絡技術)機試模擬試卷第7套一、程序設計題(本題共1題,每題1.0分,共1分。)1、函數ReadDat()的功能是實現從文件ENG9.IN中讀取一篇英文文章,存入到字符串數組xx中。請編制函數encryptChar(),按給定的替代關系對數組xx中的所有字符進行替代,仍存入數組xx的對應的位置上,替代關系:f(p)=p*11mod256(p是數組xx中某一個字符的ASCII值,f(p)是計算后新字符的ASCII值),如果原字符的ASCII值是偶數或計算后f(p)的值小于等于32,則該字符不變,否則將f(p)所對應的字符進行替代。注意:部分源程序已給出,原始數據文件存放的格式是:每行的寬度均小于80個字符。請勿改動主函數main()、讀函數ReadDat()和寫函數WriteDat()的內容。試題程序:#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=0;/*文章的總行數*/intReadDat(void);voidWriteDat(void);voidencryptChar(){}main(){clrscr();if(ReadDat()){printf("數據文件ENG9.IN不能打開!\n\007");return;}encryptChar();WriteDat();}intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("ENG9.IN","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;fp=fopen("PS9.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}標準答案:voidencryptChar(){inti;char*pf;for(i=0;i<maxline;i++)pf=xx[i];/*指針pf指向當前行的首地址*/whilie(*pf!=0){if(*pf%2==0||*pf*11%256<=32);/*如果原字符的ASCII值是偶數或計算后的值小于等于32,則該字符不變*/else*pf=*pf*11%256;/*否貝Jj將所對應的字符進行替代*/pf++;/*指針pf指向下一個字符*/}}}知識點解析:本題主要考查用指針變量來控制字符數組,由于要對已有二維字符數組的所有元素逐個處理,因此,需要定義一個字符指針變量來控制原二維數組的各行。當前行如果確定下來,用指針的移動就可以依次掃描該行的所有字符元素,每得到一個字符就對它進行條件判斷。根據題意,條件用“if(*pf%2++0||*pf*11%256<=32)”來實現,如果該字符不滿足上述條件,就用一個新的字符來替代,新的字符是當前字符乘以11的結果再去與256求余數,處理完畢后,指針去取下一個字符。如果該字符滿足所給條件,將不做任何操作,指針直接下移,去取下一個字符,對下一個字符進行處理。國家三級(網絡技術)機試模擬試卷第8套一、程序設計題(本題共1題,每題1.0分,共1分。)1、已知數據文件IN44.DAT中存有300個4位數,并已調用讀函數readDat()把這些數存入數組a中,請編制一函數isValue(),其功能是:求出千位數上的數減百位數上數減十位數上的數減個位數上的數大于零的數的個數cnt,再把所有滿足此條件的4位數依次存入數組b中,然后對數組b的4位數按從小到大的順序進行排序,最后調用寫函數writeDat()把數組b中的數輸出到OUT44.DAT文件中。例如:9123,9-1-2-3>0,則該數滿足條件,存入數組b中,且個數cnt=cnt+1。9812,9-8-1-2<0,則該數不滿足條件,忽略。注意:部分源程序已給出。程序中已定義數組:a[300],b[300],己定義變量:cnt。請勿改動主函數main()、讀函數readDat()和寫函數writeDat()的內容。試題程序:#include<stdio.h>inta[300],b[300],cnt=0;jsValue(){}main(){ihti;readDat();jsValue();writeDat();for(i=0;i<cnt;i++)printf("b[%d]=%d\n",i,b[i]);}readDat(){FILE*fp;inti;fp=fopen("IN44.DAT","r");printf("cnt=%d\n",cnt);for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FIL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 激光打標機租賃合同(含設備調試與安裝服務)
- 民宿短租平臺民宿房東入住協議
- 跨界合作虛擬現實體育賽事直播推廣合同
- 模具版權歸屬變更及補充協議
- 高端商務會議安全保衛協議
- 虛擬貨幣交易平臺實名認證協議
- 社會企業社區養老投資協議
- 路沿石拆除協議書
- 高考后父母協議書
- 生態月子中心委托運營管理協議
- 銀行訴訟案件管理辦法
- 追索子女撫養費起訴狀
- 六年級數學質量分析PPT
- 土地平整、池塘推土、雜草灌木叢及樹木清除施工方案
- 眼鏡鏡架的整形專業培訓2課件
- 下線儀式串詞策劃
- 通用長期供銷合同范本
- 新版《藥品管理法》解讀課件
- 《社區治理研究國內外文獻綜述(1900字)》
- 2023浙江省學生藝術特長測試A級理論復習資料
- 建筑業企業資質職稱人員相近專業認定目錄
評論
0/150
提交評論