版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷11(共9套)(共9題)國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第1套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()的功能是實(shí)現(xiàn)從文件IN35.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)$ortCharD(),該函數(shù)的功能是:以行為單位對(duì)字符按從大到小的順序進(jìn)行排序,捧序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件OUT35.DAT中。例如,原文:dAe,BfCCCbbAA結(jié)果:fedCBA,bbCCAA原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidSortCharD(){}voidmain(){clrscr();if(ReadDat()){printf("數(shù)據(jù)文件IN35.DAT不能打開!\n\007");return;}SortCharD();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN35.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(){FILE*fp;inti;clrscr();fp=fopen("OUT35.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n’,xx[i]);}fclose(fp);}標(biāo)準(zhǔn)答案:voidSortCharD(){inti,j,k,str1;charch;for(i=O;i<maxline;i++){str1=strlen(xx[i]);/*求各行的長度*/for(j=0;j<str1-1;j++)/*對(duì)字符按從大到小的順序進(jìn)行排序*/for(k=j+1;k<str1;k++)if(xx[i][j]<xx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)循環(huán)結(jié)構(gòu)的嵌套。(2)字符的大小比較。(3)字符排序。本題以行為單位對(duì)文章進(jìn)行處理,首先要確定每一行中字符的個(gè)數(shù)。這個(gè)操作可使用字符串處理函數(shù)strlen(char*str)來完成。對(duì)字符從大到小排序依據(jù)的是字符的ASCII碼,在C語言中,字符量可參與任何整型運(yùn)算,所以可以直接使用比較運(yùn)算符進(jìn)行比較。排序使用前面介紹的“選擇排序法”。最后使用循環(huán)結(jié)構(gòu)對(duì)文章中的每一行都進(jìn)行以上的操作。國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第2套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()的功能是實(shí)現(xiàn)從文件IN74.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)StrCharJL(),該函數(shù)的功能是:以行為單位把字符串中的所有字符的ASCⅡ值左移4位,如果左移后,其字符的ASCⅡ值小于等于32或大于100,則原字符保持不變,否則就把左移后的字符ASCⅡ值再加上原字符的ASCⅡ值,得到的新字符仍存入到原字符串對(duì)應(yīng)的位置。最后把已處理的字符串仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)Wiltedat()把結(jié)果xx輸出到文件OUT74.DAT中。注意:部分源程序已給出。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)Wiltedat()的內(nèi)容。試題程序:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidStrCharJL(void){}voidmain(){clrscr();if(ReadDat()){printf("數(shù)據(jù)文件IN74.DAT不能打開\n\007");return;}StrCharJL();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN74.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("OUT74.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}標(biāo)準(zhǔn)答案:voidStrCharJL(void){inti,j,strl;for(i=0;i<maxline;i++){strl=strlen(xx[i]);/*求各行的總長度*/for(j=0;j<strl;j++)if(xx[i][j]<<4<=32||xx[i][j]<<4>100);/*如果左移的ASCII值小于等于32或大于100,則原字符保持不變*/elsexx[i][j]+=xx[i][j]<<4;/*否則就把左移后的字符ASCII值加上原字符的ASCII*/}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)字符的計(jì)算。(2)左移運(yùn)算符“<<”的使用。(3)二維數(shù)組的訪問。(4)判斷結(jié)構(gòu)中多條件的布爾運(yùn)算。本題中,以行為單位處理字符串,首先要求得每行字符串的長度,才可對(duì)每一行的字符依次進(jìn)行處理。字符可參與任何整數(shù)運(yùn)算,實(shí)際上是字符的ASCII碼參與了運(yùn)算。所以,可以直接將字符帶入計(jì)算。這里要使用到左移運(yùn)算符“<<”?!埃迹肌笔请p目運(yùn)算符,左側(cè)是要移動(dòng)的數(shù),右側(cè)是移動(dòng)的位數(shù)。左移后字符的ASCII碼的值小于等于32或大于100,這兩個(gè)條件滿足一個(gè)即可,所以兩條件之間用“或”運(yùn)算。使用循環(huán)實(shí)現(xiàn)對(duì)所有行的處理。國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第3套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)readDat()是從文件in71.dat中讀取20行數(shù)據(jù)存放到字符串?dāng)?shù)組xx中(每行字符串長度均小于80)。請(qǐng)編制函數(shù)jsSon(),其功能是:以行為單位對(duì)字符串按下面給定的條件進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組xx中。最后調(diào)用函數(shù)writeDat()把結(jié)果xx輸出到文件out71.dat中。條件:從字符串中間一分為二,左邊部分按字符的ASCⅡ值降序排序,右邊部分按字符的ASCⅡ值升序排序。如果原字符串長度為奇數(shù),則最中間的字符不參加排序,字符仍放在原位置上。例如:位置012345678源字符串a(chǎn)bcdhgfe123498765處理后的字符串dcbaefgh432195678注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#include<stdio.h>#include<string.h>#include<conio,h>charxx[20][80];voidjsSort(){}voidmain(){readDat();jsSort();writeDat();}readDat(){FILE*in;inti=0;char*p;in=fopen("in71.dat","r");while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}fclose(in);}writeDat(){FILE*out;inti;clrscr();out=fopen("out71.dat","w");for(i=0;i<20;i++){printf("%s\n",xx[i]);fprintf(out,"%s\n",xx[i]);}fclose(out);}標(biāo)準(zhǔn)答案:函數(shù)readDat()是從文件in71.dat中讀取20行數(shù)據(jù)存放到字符串?dāng)?shù)組xx中(每行字符串長度均小于80)。請(qǐng)編制函數(shù)jsSon(),其功能是:以行為單位對(duì)字符串按下面給定的條件進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組xx中。最后調(diào)用函數(shù)writeDat()把結(jié)果xx輸出到文件out71.dat中。條件:從字符串中間一分為二,左邊部分按字符的ASCⅡ值降序排序,右邊部分按字符的ASCⅡ值升序排序。如果原字符串長度為奇數(shù),則最中間的字符不參加排序,字符仍放在原位置上。例如:位置012345678源字符串a(chǎn)bcdhgfe123498765處理后的字符串dcbaefgh432195678注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#include<stdio.h>#include<string.h>#include<conio,h>charxx[20][80];voidjsSort(){}voidmain(){readDat();jsSort();writeDat();}readDat(){FILE*in;inti=0;char*p;in=fopen("in71.dat","r");while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],’\n’);if(p)*p=0;i++;}fclose(in);}writeDat(){FILE*out;inti;clrscr();out=fopen("out71.dat","w");for(i=0;i<20;i++){printf("%s\n",xx[i]);fprintf(out,"%s\n",xx[i]);}fclose(out);}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)二維數(shù)組的訪問和下標(biāo)的控制。(2)字符的ASCⅡ碼的比較。(3)字符的排序。本題將數(shù)據(jù)按行存入到二維數(shù)組xx中,行數(shù)為數(shù)組的第1個(gè)下標(biāo),每行字符的個(gè)數(shù)為數(shù)組的第2個(gè)下標(biāo)。因?yàn)橐孕袨樽址幚淼膯挝?,所以要先求得一行字符串的長度。字符可以參加任何整數(shù)運(yùn)算,實(shí)際上是字符的ASCⅡ碼參與了運(yùn)算,所以可以直接使用比較運(yùn)算符對(duì)字符進(jìn)行比較。對(duì)從0到(長度/2-1)的字符進(jìn)行降序排序(數(shù)組的下標(biāo)從0開始)。若長度為奇數(shù),則再從(長度/2+1)開始(跳過最中間的字符)到最后1個(gè)字符進(jìn)行升序排列。否則,從(長度/2)開始到最后1個(gè)字符進(jìn)行升序排列。字符排序使用“選擇排序法”,最后使用循環(huán)實(shí)現(xiàn)對(duì)每行數(shù)據(jù)的處理。國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第4套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()的功能是實(shí)現(xiàn)從文件ENG9.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)encryptChat(),按給定的替代關(guān)系對(duì)數(shù)組xx中的所有字符進(jìn)行替代,仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS9.DAT中。替代關(guān)系:f(p)=p*11mod256(p是數(shù)組xx中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),如果原字符的ASCII值是偶數(shù)或計(jì)算后f(p)的值小于等于32,則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。注意:部分源程序已給出,原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80千字符。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=0;/*文章的總行數(shù)*/intReadDat(void);voidWriteDat(void);voidencryptChar(){}main(){clrscr();if(ReadDat()){printf("數(shù)據(jù)文件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("PSg.DAT","w";for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}標(biāo)準(zhǔn)答案:voidencryptChar({inti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];/*指針pf指向當(dāng)前行的首地址*/while(*pf!=0){if(*pf%2==0||*pf*11%256<=32);/*如果原字符的ASCII值是偶數(shù)或計(jì)算后的值小于等于32,則該字符不變*/else*pf=*pf*11%256;/*否則將所對(duì)應(yīng)的字符進(jìn)行替代*/pf++;/*指針pf指向下一個(gè)字符*/}}}知識(shí)點(diǎn)解析:本題主要考查用指針變量來控制字符數(shù)組,由于要對(duì)已有二維字符數(shù)組的所有元素逐個(gè)處理,因此,需要定義一個(gè)字符指針變量來控制原二維數(shù)組的各行。當(dāng)前行如果確定下來,用指針的移動(dòng)就可以依次掃描該行的所有字符元素,每得到一個(gè)字符就對(duì)它進(jìn)行條件判斷。根據(jù)題意,條件用“if(*pf%%2==0||*pf*11%256<=32)”來實(shí)現(xiàn),如果該字符不滿足上述條件,就用一個(gè)新的字符來替代,新的字符是當(dāng)前字符乘以11的結(jié)果再去與256求余數(shù),處理完畢后,指針去取下一個(gè)字符。如果該字符滿足所給條件,將不做任何操作,指針直接下移,去取下一個(gè)字符,對(duì)下一個(gè)字符進(jìn)行處理。國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第5套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、下列程序的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入數(shù)組xx。請(qǐng)編寫函數(shù)num(intm,intk,intxx[])實(shí)現(xiàn)程序的要求,最后調(diào)用函數(shù)readwriteDAT()把結(jié)果輸出到out31.dat文件中。例如,若輸入17,5,則應(yīng)輸出19,23,29,31,37。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()和輸入輸出函數(shù)readwriteDAT()的內(nèi)容。試題程序:#include<conio.h>#include<stdio.h>voidreadwriteDAT();voidnum(intm,intk,intxx[]){}main(){intm,n,xx[1000];clrscr();printf("\nPleaseentertwointegers:");scanf("%d,%d",&m,&n);num(m,n,xx);for(m=0;m<n;m++)printf("%d",xx[m]);printf("\n");readwriteDAT();}voidreadwriteDAT(){intm,n,xx[1000],i;FILE*rf,*wf;rf=fopen("in31.dat","r");wf=fopen("out31.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d%d",&m,&n);num(m,n,xx);for(m=0;m<n;m++)fprintf(wf,"%d",xx[m]fprintf(wf,"\n");}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:voidnum(intm,intk,intxx[]){intdata=m+1;/*從大于整數(shù)m的數(shù)開始找*/inthalf,I,n=0;while(1){half=data/2;for(I=2;I<=half;I++)/*如果該數(shù)依次除以從2到一半的整數(shù),余數(shù)都不是0,則該數(shù)是素?cái)?shù)*/if(data%I==O)break;/*如果余數(shù)為0,則退出循環(huán),取下一個(gè)數(shù)判斷*/if(I>half)’{xx[n]=data;n++;/*判斷該數(shù)為素?cái)?shù)后,將該數(shù)存入數(shù)組xx中,并累計(jì)素?cái)?shù)的個(gè)數(shù)*/}if(n>=k)break;/*如果累計(jì)素?cái)?shù)的個(gè)數(shù)超過了要求的個(gè)數(shù),則退出循環(huán)*/data++;/*如果累計(jì)素?cái)?shù)的個(gè)數(shù)小于要求的個(gè)數(shù),則繼續(xù)取下一個(gè)數(shù)*/}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套使用。(2)強(qiáng)行退出循環(huán)結(jié)構(gòu)。(3)特殊運(yùn)算符“%”的使用。素?cái)?shù)是除了1和它本身之外不能被其他數(shù)整除的數(shù)(1除外)。在本題中,首先要結(jié)合相關(guān)數(shù)學(xué)知識(shí)找出判定一個(gè)數(shù)是否為素?cái)?shù)的方法,從而對(duì)數(shù)據(jù)進(jìn)行篩選。如果數(shù)據(jù)a依次除以從2到a/2的整數(shù),余數(shù)都不是0,則該數(shù)是素?cái)?shù).因?yàn)樗o的數(shù)據(jù)是連續(xù)的數(shù),而且最終所求的數(shù)據(jù)的個(gè)數(shù)一定,所以這里可以使用循環(huán)結(jié)構(gòu)對(duì)數(shù)據(jù)依次篩選。同時(shí)嵌套選擇結(jié)構(gòu)對(duì)篩選的數(shù)據(jù)進(jìn)行不同的處理。在a依次除以從2到a/2的整數(shù)的過程中,只要有一次余數(shù)為0,則可退出這一層循環(huán),即退出整除取余的循環(huán),進(jìn)入下一個(gè)數(shù)的判斷中。國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第6套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、設(shè)有n個(gè)人坐一圈并按順時(shí)針方向從1到n編號(hào),從第s個(gè)人開始進(jìn)行1到m的報(bào)數(shù),報(bào)數(shù)到第m個(gè)人,此人出圈,再從他的下一個(gè)人重新開始從1到m報(bào)數(shù),如此進(jìn)行下去直到所有的人都出圈為止。先要求按出圈次序,每10個(gè)人為一組,給出這n個(gè)人的順序表。請(qǐng)編制函數(shù)Josegh()實(shí)現(xiàn)此功能并調(diào)用函數(shù)WriteDat()把編號(hào)按照出圈順序輸出到文件OUT59.DAT中。設(shè)n=100,s=1,m=10進(jìn)行編程。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#defineN100#defineS1#defineM10intp[100],n,s,m;voidWriteDat(void);voidJosegh(void){}voidmain(){m=M;n=N;s=S;Josegh();WriteDat();}voidWriteDat(void){inti;FILE*fp;fp=fopen("OUT59.DAT","w");for(i=N-1;i>=0;i--){printf("%4d",p[i]);fprintf(fp,"%4d",p[i]);if(i%10==0){printf("\n");fprintf(fp,"\n");}}fclose(fp);}標(biāo)準(zhǔn)答案:voidJosegh(void){inti,j,k,sl,w;s1=s;for(i=1;i<=n;i++)/*給n個(gè)人從1到n編號(hào)*/p[i-1]=i;for(i=n;i>=2;i--){s1=(s1+m-1)%i;/*下一個(gè)開始報(bào)數(shù)的人的編號(hào)是(s1+m-1)%i*/if(s1==0>/*若s1為0,則說明要開始報(bào)數(shù)的是最后一個(gè)人*/s1=i;w=p[s1-1];/*將要出圈的人移至數(shù)組的最后*/for(j=s1;j<=i-1;j++)p[j-1]=p[j];p[i-1]=w;}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)將數(shù)組建成環(huán)。(2)運(yùn)算符“%”的使用。(3)循環(huán)的嵌套使用。此題是著名的“約瑟夫環(huán)”問題。首先要將每個(gè)人的編號(hào)存入數(shù)組。因?yàn)槊看问菑膕1開始報(bào)數(shù),若是直線隊(duì)則下一個(gè)開始報(bào)數(shù)的人的編號(hào)是s1+m-1,但這里要建立一個(gè)環(huán),即最后一個(gè)人報(bào)完數(shù)后第一個(gè)人接著報(bào)數(shù)。所以這時(shí)下一個(gè)開始報(bào)數(shù)的人的編號(hào)是(s1l+m-1)%i,i是此時(shí)圈中的總?cè)藬?shù)。若所得的結(jié)果為0,則說明要開始報(bào)數(shù)的是最后一個(gè)人。在此人前面的那個(gè)人就是要出圈的人,使用循環(huán)將要出圈的人移至數(shù)組的最后。開始時(shí),總?cè)藬?shù)為n,以后依次減1,直到最后一個(gè)人出圈。國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第7套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、編寫函數(shù)jsValue(),它的功能是求Fibonacci數(shù)列中大于t的最小的一個(gè)數(shù),結(jié)果由函數(shù)返回,其中Fibonacci數(shù)列F(n)的定義為:F(0)=0,F(xiàn)(1)=1F(n)=F(n-1)+F(n-2)最后調(diào)用函數(shù)writeDat(),把結(jié)果輸出到文件OUT10.DAT中。例如:當(dāng)t=1000時(shí),函數(shù)值為1597。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>intjsValue(intt){}main(){intn;n=1000;printf("n=%d,f=%d\n",n,jsValue(n));writeDat();}writeDat(){FILE*in,*out;intn,s;out=fopen("OUT10.DAT","w");s=jsValue(1000);printf("%d",s);fprintf(out,"%d\n",s);fclose(out);}標(biāo)準(zhǔn)答案:intjsValue(intt){intf1=0,f2=1,fn;fn=f1+f2;while(fn<=t){f1=f2;f2=fn;fn=f1+f2;}/*如果當(dāng)前的Fibonacci數(shù)不大于t,則計(jì)算下一個(gè)Fibonacci數(shù)*/returnfn;/*返回Fibonacci數(shù)列中大于t的最小的一個(gè)數(shù)*/}知識(shí)點(diǎn)解析:解答本題的關(guān)鍵是要充分理解題意,只有理解了題意本身的數(shù)學(xué)過程,才能把數(shù)學(xué)過程轉(zhuǎn)化為程序邏輯。根據(jù)已知數(shù)列,我們不難發(fā)現(xiàn):Fibonacci數(shù)列中,從第三項(xiàng)開始,每一項(xiàng)都可以拆分為前兩項(xiàng)之和。本題要求找到該數(shù)列中“大于t的最小的一個(gè)數(shù)”。這里可以借助一個(gè)while循環(huán)來依次取數(shù)列中的數(shù),直到出現(xiàn)某一項(xiàng)的值大于t,那么這一項(xiàng)就是“大于t的最小的一個(gè)數(shù)”。注意:在循環(huán)體內(nèi)部,我們用變量f1始終來表示第n項(xiàng)的前面第二項(xiàng),用變量f2來始終表示第n項(xiàng)的前面第一項(xiàng)。這就實(shí)現(xiàn)了變量的活用與巧用。國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第8套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知在文件in37.dat中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱mc(字符型10位),單價(jià)dj(整型)、數(shù)量sl(整型)、金額je(長整型)幾部分組成。其中,金額=單價(jià)×數(shù)量可計(jì)算得出。函數(shù)ReadDat()的功能是讀取這100個(gè)銷售記錄并存入數(shù)組sell中。請(qǐng)編制函數(shù)SortDat(),其功能要求:按產(chǎn)品代碼從小到大進(jìn)行排列,若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件out37.dat中。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];charmc[11];intdj;intsl;longje;}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN37.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(){FILE*fp;inti;fp=fopen("OUT37.DAT","w");for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%101d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fctose(fp);}標(biāo)準(zhǔn)答案:voidSortDat(){inti,j;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++){if(strcmp(sell[i].dm,sell[j].dm)>0)/*按產(chǎn)品代碼從小到大進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}elseif(strcmp(sell[i].dm,sell[j].dm)==0)/*若產(chǎn)品代碼相同*/if(sell[i].je<sell[j].je)/*則按金額從大到小進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}}知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)結(jié)構(gòu)體及結(jié)構(gòu)數(shù)組的相關(guān)操作。(2)結(jié)構(gòu)數(shù)組的捧序,(3)字符型數(shù)組的比較。本題著重考查結(jié)構(gòu)體變量的訪問、賦值,包括結(jié)構(gòu)體本身及結(jié)構(gòu)體中各個(gè)成員的訪問和賦值.結(jié)構(gòu)數(shù)組的操作與一般敷組的區(qū)別不大,只要注意其中的元素是結(jié)構(gòu)體,以及對(duì)結(jié)構(gòu)體操作的方法.根據(jù)題意要求,我們首先要比較產(chǎn)品代碼。因?yàn)楫a(chǎn)品代碼為字符型,所以不能使用簡單的比較運(yùn)算符進(jìn)行比較。在這里,我們使用了字符串處理函數(shù)sircmp(char*strll,char*strl2,unsignedintcout)其進(jìn)行比較。對(duì)于比較結(jié)果,還要按情況進(jìn)行新的操作——存入結(jié)構(gòu)數(shù)組或者再進(jìn)行比較。因?yàn)橐讯x了結(jié)構(gòu)數(shù)組,就可以使用循環(huán)進(jìn)行比較捧序。排序采用前面介紹的“選擇排序法”。國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第9套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知在文件IN2.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱mc(字符型10位)、單價(jià)山(整型)、數(shù)量s1(整型)、金額je(長整型)五部分組成。其中:金額=單價(jià)×數(shù)量。函數(shù)ReadDat()的功能是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SortDat(),其功能要求:按產(chǎn)品名稱從大到小進(jìn)行排列,若產(chǎn)品名稱相同,則按金額從小到大進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT2.DAT中。注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025有關(guān)期貨代理委托書的合同范本
- 2025救災(zāi)專用單帳篷政府采購合同
- 2025北京市房屋出租代理合同版樣書2
- 2025地產(chǎn)信貸部職工住房抵押貸款合同
- 2025建設(shè)工程勘察合同比華利
- 科技助力家庭健身的未來展望
- 終身學(xué)習(xí)學(xué)生學(xué)習(xí)能力的進(jìn)階之路
- 2024年螺旋錐齒輪項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 科學(xué)與創(chuàng)造力培養(yǎng)
- 二零二五年度大蒜保鮮技術(shù)研究與應(yīng)用合作合同4篇
- 2024公路瀝青路面結(jié)構(gòu)內(nèi)部狀況三維探地雷達(dá)快速檢測規(guī)程
- 2024年高考真題-地理(河北卷) 含答案
- 中國高血壓防治指南(2024年修訂版)解讀課件
- 2024年浙江省中考科學(xué)試卷
- 2024風(fēng)力發(fā)電葉片維保作業(yè)技術(shù)規(guī)范
- 《思想道德與法治》課程教學(xué)大綱
- 2024光儲(chǔ)充一體化系統(tǒng)解決方案
- 2024年全國高考新課標(biāo)卷物理真題(含答案)
- 處理后事授權(quán)委托書
- 食材配送服務(wù)方案投標(biāo)方案(技術(shù)方案)
- 足療店?duì)I銷策劃方案
評(píng)論
0/150
提交評(píng)論