國家三級(網絡技術)機試模擬試卷18(共9題)_第1頁
國家三級(網絡技術)機試模擬試卷18(共9題)_第2頁
國家三級(網絡技術)機試模擬試卷18(共9題)_第3頁
國家三級(網絡技術)機試模擬試卷18(共9題)_第4頁
國家三級(網絡技術)機試模擬試卷18(共9題)_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

國家三級(網絡技術)機試模擬試卷18(共9套)(共9題)國家三級(網絡技術)機試模擬試卷第1套一、程序設計題(本題共1題,每題1.0分,共1分。)1、文件IN.DAT中存在有一篇英文文章,函數ReadData()負責將IN.DAT中的數據讀到數組inBuf[][]中。請編制函數replaceChar(),該函數的功能是;以行為單位把字符串中的所有小寫字母改成該字母的上一個字母,如果是字母a,則改成字母z。大寫字母仍是大寫字母,其他字符不變。把已處理的字符串仍按行重新存入字符串數組inBuf[][]中,函數WriteData()負責將inBuf[][]中的數據輸出到文件OUT.DAT中,并且在屏幕上輸出。例如;原文;my.name.is.Lin.TaoNice.to.meet.you結果;Ix.mzld.hr.Lhm.TznNhbd.sn.1dds.xnt原始數據文件存放的格式是;每行的寬度均小于80個字符,含標點符號和空格。注意;部分程序已給出。請勿改動主函數main()、讀函數ReadData()和寫函數WriteData()的內容。試題程序;#include#include#include#include#defineLINE70#defineCOL80charinBuf[LINE][COL+1];inttotleLine=0;//文章的總行數intReadData(void);voidWriteData(void);voidreplaceChar(){}voidmain(){system("CLS");if(ReadData()){printf("IN.DATcan’tbeopen!\n\007");return;}replaceChar();WriteData();}intReadData(void){FILE*fp;inti=0;char*P;if((fp=fopen("IN.DAT","r"))==NULL)return1;while(fgets(inBuf[i],COL+1,fp)!=NULL){P=strchr(inBuf[i],’\n’);if(p)*p=’\0’;i++;}totleLine=i;fclose(fp);return0;}voidWriteData(void){FILE*fp;inti;fp=fopen("OUT.DAT","w");for(i=0;i標準答案:voidreplaceChar(){inti,j,str;for(i=0;i=’a’&&inBuf[i][j]<=’z’)//如果字符在’a’~’z’之間{if(inBufEi][j]==’a’)inBuf[i][j]=’Z’;//如果是字符’a’則用’z’來代替elseinBuf[i][j]=(char)((int)inBuf[i][j]-1);//其他情況則用其前面的字符代替}}}知識點解析:本題考查的主要是字符與其對應的ASCII碼之間的轉換及對ASCII碼進行操作。基本思路是;1.根據條件選擇inBuf[i][j],對其進行類型強制轉換,轉換成整型(也即所對應的ASCII碼值)。2.將ASCII碼值減1,將該字符的ASCII碼值換成其上一個字符的ASCII碼值。3.最后將計算所得結果再轉換成字符型存儲到inBuf[i][j]中。國家三級(網絡技術)機試模擬試卷第2套一、程序設計題(本題共1題,每題1.0分,共1分。)1、文件IN.DAT中存有一篇英文文章,函數ReadData()負責將IN.DAT中的數據讀到數組inBuf[][]中。請編制函數replaceChar(),該函數的功能是按照指定規則對字符進行替換。變換后的值仍存人inBuf[][]中。函數WriteData()負責將inBuf[][]中的數據輸出到文件OUT.DAT中并且在屏幕上打出。替換規則為;先對字符的ASCII碼按公式y=(a*11)mod256進行運算(a為某一字符的ASCII碼值,y為變換后的ASCII碼值),如果原字符是大寫字母或計算后Y的值小于等于32,則字符保持不變,否則用y代替a。注意;部分源程序已給出。原始數據文件存放的格式是;每行的寬度均小于80個字符。請勿改動主函數main()、讀函數ReadData()和寫函數WriteData()的內容。試題程序;#include#include#include#include#defineLINE50#defineCOL80charinBuf[LINE][COL+1];inttotleLine=0;//文章的總行數intReadData(void);voidWriteData(void);voidreplaceChar(){}voidmain(){system("CLS");if(ReadData()){printf("IN.DATcan’tbeopen!\n\007");return;}replaceChar();WriteData();}intReadData(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN.DAT","r"))==NULL)return1;while(fgets(inBuf[i]COL+1,fp)!=NULL){p=strchr(inBuf[i],’\n’);if(p)*p=’\0’;i++;}totleLine=i;fclose(fp);return0;}voidWriteData(void){FILE*fp;inti;fp=fopen("OUT.DAT","w");for(i=0;i標準答案:voidreplaceChar(){inti,j,str;chary;for(i=0;i=’A’&&inBuf[i][j]<=’Z’))continue;//在指定的條件下,不進行轉換elseinBuf[i][j]=y;//在其他情況下進行轉換}}}知識點解析:本題主要考查字符與其對應的ASCII碼之間的轉換及對ASCII碼進行操作。先計算出每行字符串的長度,再根據替換規則進行相應的替換。國家三級(網絡技術)機試模擬試卷第3套一、程序設計題(本題共1題,每題1.0分,共1分。)1、請編寫函數voidcountValue(int*a,int*n),它的功能是:求出1到1000之內能被7或11整除但不能同時被7和11整除的所有整數并存放在數組a中,并通過n返回這些數的個數。注意:部分源程序已給出。請勿改動主函數main()和寫函數writeDAT()的內容。試題程序;#include<conio.h>#include<stdio.h>voidcountValue(int*a,int*n){}main(){intaa[1000],n,k;clrscr();countValue(aa,&n);for(k=0;k<n;k++)if((k+l)%10==0){printf("%5d",aa[k]);printf("\n");}elseprintf("%5d",aa[k]);writeDAT();}writeDAT(){intaa[1000],n,k;FILE*fp;fp=fopen("out79.dat","w");countValue(aa,&n);for(k=0;k<n;k++)if((k+l)%10==0){fprintf(fp,"%5d",aa[k]);fprintf(fp,"\n");}elsefprintf(fp,"%5d",aa[k]);fclose(fp);}標準答案:voidcountValue(int*a,int*n){inti;*n=0;for(i=1l;i<=1000;i++)if(i%7==0&&i%11)/*將能被7整除但不能被11整除的數存入數組a中*/{*a=i;*n=*n+l;/*統計個數*/a++;}elseif(i%7&&i%11==0)/*將能被11整除但不能被7整除的數存入數組a中*/{*a=i;*n=*n+1;/*統計個數*/a++;}}知識點解析:本題考查的知識點如下:(1)指針的使用。(2)“%”運算符。(3)判斷結構中多個條件的布爾運算。本題中,函數countValue()以指針為參數,這里就要涉及到指針的使用。a是指向數組的指針,初始時,指向數組的第一個元素。地址每加1時,依次指向后面的元素。一個數a若能被b整除,則a除以b取余得數為0。能被7或11整除,但不能被7和11同時整除,則有兩種情況,能被7整除但不能被11整除,能被11整除但不能被7整除。這里就要用到多個條件的布爾運算。國家三級(網絡技術)機試模擬試卷第4套一、程序設計題(本題共1題,每題1.0分,共1分。)1、標準答案:知識點解析:通過審題可以發現僅有一個不同點,即要求統計的四位數的條件是“個位-千位-百位-十位>=0”,參考答案的第8條語句,修改if條件語句的判斷條件即可。國家三級(網絡技術)機試模擬試卷第5套一、程序設計題(本題共1題,每題1.0分,共1分。)1、標準答案:知識點解析:通過審題可以發現僅有一個不同點,即四位數的各位數之和為奇數,參考答案的第13條語句,將該該語句為判斷各位數字之和是奇數的表達式即可。國家三級(網絡技術)機試模擬試卷第6套一、程序設計題(本題共1題,每題1.0分,共1分。)1、文件IN.DAT中存有300個四位整型數,函數ReadData()負責將IN.DAT中的數讀到數組inBuf[]中。請編寫函數findvalue(),其功能是;求出千位數上的數加百位數上的數等于十位數上的數加個位數上的數的個數count,再求出所有滿足此條件的四位數平均值average1,以及所有不滿足此條件的四位數平均值average2,最后調用函數WriteData()把結果count、aVeragel、aVeragez2輸出到OUT.DAT文件中。程序中已定義數組;inBuf[300],已定義變量;count,averagel,average2。請勿改動主函數main()、讀函數ReadData()和寫函數WriteData()的內容。#include#defineNUM300intinBuf[NUM],count=0;doubleaveragel=0,average2=0;voidReadData();voidWriteData();voidfindValue(){}voidmain(){ReadData();findValue();WriteData();printf("count=%d\naveragl=%7.21f\naverag2=%7.21f\n",count,averagel,average2);}voidReadData(){FILE*fp;inti;fp=fopen("IN.DAT","r");for(i=0;i標準答案:voidfindValue(){inti,j,k,d[4],temp,count_no=0;for(i=0;i知識點解析:本題主要考查數位分解及數據平均值的求法。程序步驟;1.將數值送入temp中。2.數位分解;由temp%10得到個位數;(temp/10)%10得到十位數……如此可得到各數位上的數值。3.按照題目所給的條件選出數據。4.對選出的數據求平均值;由于本題中的數據量比較大,若采用先將各個值加起來再除以總個數來取平均的話,變量不能存儲那么大的數據而導致溢出。本題的程序采用的方法是;N個數的平均值=[前(N-1)個數的平均值*(N-1)+第N個數]/N,采用這種遞推的方法就避免了將大的數據存入變量中而產生溢出。國家三級(網絡技術)機試模擬試卷第7套一、程序設計題(本題共1題,每題1.0分,共1分。)1、已知在文件IN20.DAT中存有若干個(個數〈200)4位數字的正整數,函數ReadDat()的功能是讀取這若干個正整數并存入數組xx中。請編制函數CalValue(),其功能要求:(1)求出這文件中共有多少個正整數totNum:(2)求㈩這些數中的各位數字之和是偶數的數的個數totCnt,以及滿足此條件的這些數的算術平均值totPjz,最后調用函數WriteDat()把所求的結果輸出到文件OUT20.DAT中。注意:部分源程序已給出。請勿改動主函數main()、讀函數ReadDat()和寫函數WriteDat()的內容。試題程序:#include〈stdio.h>#inciude〈conio.h>#defineMAXNUM200intxx[MAXNUM];inttotNum=O;/*文件IN20.DAT中共有多少個正整數*/inttotCnt=0;/*符合條件的正整數的個數*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidWritedat(void);voidCalValue(){}main(){inti;clrscr();for(i=0;i〈MAXNUM;i++)xx[i]=0;if(Readdat()){printf("數據文件IN20.DAT不能打開!\007\n");return;}CalValue();printf("文件IN20.DAT中共有正整數=%d個\n",totNum);printf("符合條件的正整數的個數=%d個\n",totCnt);printf("平均值=%.21f\n",totPjz);Writedat();}intReaddat(void){FILE*fp;inti=0;if((fp=fopen("IN20.DAT","r"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%d,",&xx[i++]);}fclose(fp);return0;}voidWritedat(void){FILE*fp;fp=fopen("OUT20.DAT","w");fprintf(fp,"%d\n%d\n%.21f\n",totNum,totCnt,totPjz);fclose(fp);}標準答案:voidCalValue(){inti,thou,hun,ten,data;intab;longsum=0;for(i=0;i〈MAXNUM;i++){if(XX[i]>0){totNum++;/*統計正整數的個數*/thou=xx[i]/1000;/*求正整數的千位數*/hun=xx[i]%1000/100;/*求正整數的百位數*/ten=xx[i]%100/10;/*求正整數的十位數*/data=xx[i]%10;/*求正整數的個位數*/ab=thou+hun+ten+data;if(ab%2==0)/*如果各位數字之和是偶數*/{totCnt++;sum=sum+xx[i];}/*計算滿足條件的數的個數totCnt和這些數的總和sum*/}}totPjz=sum/totCnt;/*求這些數的算術平均值totPjz*/}知識點解析:本題的解題思路是首先利用一個for循環來依次從數組中取得的數,由于題目要求求數組中正整數的個數,因此,對于為零的整數,不做任何處理,接著去取下一個數。只要某個數大于零,則該數一定是正整數,這時就給變量totNum(正整數的個數)累加1,用語句“thou=xx[i]/1000;hun=xx[i]%1000/100;ten=xx[i]%100/10;data=xx[i]%10;”可以實現取得當前被處理數的千位、百位、十位,以及個位上的數字值,之后判斷求得的各個位上的數字值之和是否是偶數。若上述條件成立,則給變量totCnt的值加1,同時把當前符合條件的數累加到變量sam中去,最終利用totPjz來求得滿足所給條件的所有數的平均值。國家三級(網絡技術)機試模擬試卷第8套一、程序設計題(本題共1題,每題1.0分,共1分。)1、已知數據文件in55.dat中存有300個4位數,并已調用讀函數readDat()把這些數存入數組a中,請編制一函數jsValue(),其功能是:求出千位數上的數減百位數上數減十位數上的數減個位數上的數大于零的個數cnt,再求出所有滿足此條件的4位數平均值pjz1,以及所有不滿足此條件的4位數平均值pjz2,最后調用函數wfiteDat()把結果cnt,pjz1,pjz2輸出到out55.dat文件中。例如:9123,9-1-2-3>0,則該數滿足條件,計算平均值pjz1,且個數cnt=cnt+1。9812,9-8-l-2<0,則該數不滿足條件,計算平均值pjz2。程序中已定義數組:a[300],已定義變量:cnt。請勿改動主函數main()、讀函數readDat()和寫函數writeDat()的內容。試題程序:#include<stdio.h>inta[300],cnt=0;doublepjzl=0.0,pjz2=0.0;jsValue(){}main(){int;readDat();jsValue();writeDat();printf("cnt=%d\n滿足條件的平均值pjz1=%7.21f\n不滿足條伯的平均值pjz2=%7.21f\n",cnt,pjzl,pjz2);}readDat(){FILE*fp;inti;fp=fopen("in55.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&aIii);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("out55.dat","w");fprintf(fp,"%d\n%7.21f\n%7-21f\n",cnt,pjzl,pjz2);fclose(fp);}標準答案:jsVa

溫馨提示

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

評論

0/150

提交評論