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