




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家三級信息管理技術(shù)機(jī)試模擬試卷8(共9套)(共9題)國家三級信息管理技術(shù)機(jī)試模擬試卷第1套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN1.DAT中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)JsVal(),其功能是:如果4位數(shù)各位上的數(shù)字均是0或2或4或6或8,則統(tǒng)計(jì)出滿足此條件的數(shù)的個(gè)數(shù)cnt,并把這些4位數(shù)按從大到小的順序存入數(shù)組b中,最后調(diào)用寫函數(shù)writeDat()把結(jié)果cnt及數(shù)組b中符合條件的4位數(shù)輸出到OUT1.DAT文件中。注意:部分源程序已給出。程序中已定義數(shù)組:a[200],b[200],已定義變量:cnt。請勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN1.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}main(){inti;readDat();jsVal();printf("滿足條件的數(shù)=%d\n",cnt);for(i=0;i<cnt;i++)printf("%d",b[i]);printf("\n");writeDat();}writeDat(){FILE*fp;inti;fp=fopen("OUT1.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}標(biāo)準(zhǔn)答案:voidjsVal(){intbb[4];inti,j,k,flag;for(i=0;i<200;i++){bb[0]=a[i]/1000;/*求四位數(shù)的千位數(shù)字*/bb[1]=a[i]%1000/100;/*求四位數(shù)的百位數(shù)字*/bb[2]=a[i]%100/10;/*求四位數(shù)的十位數(shù)字*/bb[3]=a[i]%10;/*求四位數(shù)的個(gè)位數(shù)字*/for(j=0;i<4;j++){if(bb[j]%2==0)/*如果各位上的數(shù)字均是0或2或4或6或8*/flag=1;/*則置標(biāo)志位flag為1*/else{flag=0;break;}/*否則置flag為0,退出循環(huán)*/}if(flag==1)/*將滿足條件的數(shù)存入數(shù)組b中,并統(tǒng)計(jì)滿足條件的個(gè)數(shù)cnt*/{b[cnt]=a[i];cnt++;}}for(i=0;i<cnt-1;i++)/*把數(shù)組b中的數(shù)按從大到小的順序排序*/for(j=i+1;i<cnt;i++)if(b[i]<b[j]){k=b[i];b[i]=b[i];b[j]=k;}}知識點(diǎn)解析:根據(jù)題意可知,函數(shù)JsVal()要實(shí)現(xiàn)兩個(gè)功能:一是找出滿足條件的那些數(shù),并存放在數(shù)組b中;二是對數(shù)組b中的數(shù)進(jìn)行從大到小的排序。首先來實(shí)現(xiàn)找出“各位上的數(shù)字均是0或2或4或6或8”(即每一位上的數(shù)字都是偶數(shù))的4位數(shù)的功能。利用一個(gè)for循環(huán)來不斷從數(shù)組a中取出4位數(shù),并對取出的數(shù)進(jìn)行條件判斷。由于這里涉及到要對4位數(shù)的每一位進(jìn)行判斷,因此,要借助數(shù)組艙來臨時(shí)存放取得的每一位上的數(shù)字值,“bb[0]=a[i]/1000;bb[1]=a[i]%1000/100;bb[2]=a[i]%100/10;bb[3]=a[i]%10;”這4條語句就可以完成在數(shù)組bb中依次存放當(dāng)前被判斷的4位數(shù)的千位上的數(shù)字值、百位上的數(shù)字值、十位上的數(shù)字值,以及個(gè)位上的數(shù)字值。之后,對所得該數(shù)的每一位的值進(jìn)行是否為偶數(shù)的判斷,只要有一位上的數(shù)字是偶數(shù),就使標(biāo)志變量flag的值置1,否則為0,這樣最終根據(jù)flag的值來決定是否要放到數(shù)組中去,變量cnt用來統(tǒng)計(jì)數(shù)組bb中元素的個(gè)數(shù)。將所有滿足條件的數(shù)取出后利用選擇法對其進(jìn)行排序,即用當(dāng)前元素依次和它后面的元素進(jìn)行比較,發(fā)現(xiàn)有大于該數(shù)的數(shù),就將這兩數(shù)進(jìn)行交換。國家三級信息管理技術(shù)機(jī)試模擬試卷第2套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN13.DAT中存有300個(gè)四位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請編制一個(gè)函數(shù)jsValue(),其功能是:求出千位數(shù)上的數(shù)加百位數(shù)上的數(shù)等于十位數(shù)上的數(shù)加個(gè)位數(shù)上的數(shù)的個(gè)數(shù)cnt,再把所有滿足條件的四位數(shù)依次存入數(shù)組b中,然后對數(shù)組b中的四位數(shù)按從大到小的順序進(jìn)行排序,最后調(diào)用寫函數(shù)writeDat()把數(shù)組b中的數(shù)輸出到OUT13.DAT文件。例如:7153,7+1=5+3,則該數(shù)滿足條件存入數(shù)組b中,且個(gè)數(shù)cnt=cnt+1。8129,8+1≠2+9,則該數(shù)不滿足條件,忽略。注意:部分源程序已給出。程序中已定義數(shù)組:a[300],b[300]已定義變量:cnt。請勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。[試題程序]#include<stdio.h>inta[300],b[300],cnt=0;voidjsValue(){}main(){inti;readDat();jsValue();writeDat();for(i=0;i<cnt;i++)printf("b[%d]=%d\n",i,b[i]);}readDat(){FILE*fp;inti;fp=fopen("IN13.DAT","r");for(i=0;i≤300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("OUT13.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprint{(fp,"%d\n",b[i]);fclose(fp);}標(biāo)準(zhǔn)答案:voidjsValue(){inti,thou,hun,ten,data,j;for(i=0;i<300;i++){thou=a[i]/1000;/*取得四位數(shù)的千位數(shù)字*/hun=a[i]%1000/100;/*取得四位數(shù)的百位數(shù)字*/ten=a[i]%100/10;/*取得四位數(shù)的十位數(shù)字*/data=a[i]%10;/*取得四位數(shù)的個(gè)位數(shù)字*/if(thou+hun==data+ten){b[cnt]=a[i];cnt++;}}for(i=0;i<cnt-1;i++)/*將數(shù)組b中的四位數(shù)按從大到小的順序進(jìn)行排序*/for(j=i+1;j<cnt;j++)if(b[i]<b[j]){data=b[i];b[i]=b[j];b[j]=data;}}[解析]此題型考查的知識點(diǎn)包括以下幾方面:(1)運(yùn)算符“/”(相除)和“%”(取余)的靈活運(yùn)用;(2)循環(huán)結(jié)構(gòu)的使用;(3)數(shù)據(jù)的排序(在這里主要是使用.選擇排序法);(4)選擇結(jié)構(gòu)的使用。此函數(shù)的功能是:將滿足“千位數(shù)+百位數(shù)=十位數(shù)+個(gè)位數(shù)”的四位數(shù)依次存入數(shù)組b中,然后對數(shù)組b中的四位數(shù)按從大到小的順序進(jìn)行排序。知識點(diǎn)解析:暫無解析國家三級信息管理技術(shù)機(jī)試模擬試卷第3套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、請編寫函數(shù)countValue(),它的功能是:求n以內(nèi)(不包括n)同時(shí)能被3與7整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回,最后結(jié)果s輸出到文件OUT11.DAT中。例如,若n為1000時(shí),函數(shù)值應(yīng)為s=153.909064。注意:部分源程序已給出。請勿改動(dòng)主函數(shù)main()和輸入輸出函數(shù)progReadWrite()的內(nèi)容。試題程序:#include<conio.h>#include<math.h>#include<stdio.h>doublecountValue(intn){}main(){clrscr();printf("自然數(shù)之和的平方根=%f\n",countValue(1000));progReadWrite();}progReadWrite(){FILE*wf;inti,n;floats;wf=fopen("OUT11.DAT","w"s=countValue(1000);fprintf(wf,"%f\n",s);fclose(wf);}標(biāo)準(zhǔn)答案:doublecountValue(intn){doublexy=0.0;inti;for(i=1;i<n;i++)if(i%3==0&&i%7==0)xy+=i;/*求n以內(nèi)(不包括n)同時(shí)能被3與7整除的所有自然數(shù)之和*/xy=sqrt((double)xy);/*再對總和求平方根*/returnxy;}知識點(diǎn)解析:本題的解題思路是:利用一個(gè)for循環(huán)依次從n個(gè)自然數(shù)當(dāng)中取數(shù),對當(dāng)前取出的數(shù)進(jìn)行條件判斷。判斷條件為:既能被3整除同時(shí)也能被7整除,因此,用“&&”運(yùn)算符來連接兩個(gè)條件表達(dá)式,當(dāng)某數(shù)滿足判斷條件時(shí),就把該數(shù)累加到變量xy中(xy的初始值為0.0),當(dāng)所有滿足條件的數(shù)都被找完后,對累加求得的變量xy的值進(jìn)行求平方根的計(jì)算,并把所求得的結(jié)果作為函數(shù)值返回。國家三級信息管理技術(shù)機(jī)試模擬試卷第4套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN14.DAT中存有300個(gè)四位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中。請編制一個(gè)函數(shù)jsValue(),其功能是:求出所有這些四位數(shù)是素?cái)?shù)的個(gè)數(shù)cnt,再把所有滿足此條件的四位數(shù)依次存入數(shù)組b中,然后對數(shù)組b中的四位數(shù)按從小到大的順序進(jìn)行排序,最后調(diào)用寫函數(shù)writeDat()把結(jié)果輸出到OUT14.DAT文件。例如:5591是素?cái)?shù),則該數(shù)滿足條件存入數(shù)組b中,且個(gè)數(shù)cnt=cnt+1。9812是非素?cái)?shù),則該數(shù)不滿足條件,忽略。注意:部分源程序已給出。程序中已定義數(shù)組:a[300]、b[300];已定義變量:cnt。請勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。[試題程序]#include<stdio.h>inta[300],b[300],cnt=0;intisP(intm){inti;for(i=2;i<m;i++)if(m%i==0)return0;return1;}voidjsValue(){}main(){inti;readDat();jsValue();writeDat();for(i=0;i<cnt;i++)printf("b[%d]=%d\n",i,b[i]);}readDat(){FILE*fp;inti;fp=fopen("IN14.DAT","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("OUT14.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}標(biāo)準(zhǔn)答案:voidjsValue(){intj,i,value;for(i=0;i<300;i++)if(isP(a[i])){b[cnt]=a[i];cnt++;}for(i=0;i<cnt-1;i++)/*將數(shù)組b中的四位數(shù)按從小到大的順序進(jìn)行排序*/for(j=i+1;j<cnt;j++)if(b[i]>b[i]){value=b[i];b[i]=b[j];b[j]=value;}}[解析]此題型考查的知識點(diǎn)包括以下幾方面:(1)運(yùn)算符“/”(相除)和“%”(取余)的靈活運(yùn)用;(2)循環(huán)結(jié)構(gòu)的使用;(3)數(shù)據(jù)的排序(在這里主要是使用選擇排序法);(4)選擇結(jié)構(gòu)的使用。此函數(shù)的功能是:求出所有這些四位數(shù)中是素?cái)?shù)的數(shù)值,并依次存入數(shù)組b中,然后對數(shù)組b中的四位數(shù)按從小到大的順序進(jìn)行排序。程序中判斷素?cái)?shù)的函數(shù)isP()已給出。知識點(diǎn)解析:暫無解析國家三級信息管理技術(shù)機(jī)試模擬試卷第5套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN85.DAT中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)jsVal(),其功能是:如果一個(gè)4位數(shù)的千位數(shù)字上的值加十位數(shù)字上的值恰好等于百位數(shù)字上的值加上個(gè)位數(shù)字上的值,并且此4位數(shù)是偶數(shù),則統(tǒng)計(jì)出滿足此條件的數(shù)的個(gè)數(shù)cnt并把這些4位數(shù)按從小到大的順序存入數(shù)組b中,最后調(diào)用寫函數(shù)writeDat()把結(jié)果cnt及數(shù)組b中符合條件的4位數(shù)輸出到OUT85.DAT文件中。注意:部分源程序已給出。程序中已定義數(shù)組:a[200],b[200],已定義變量:cnt。請勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN85.DAT","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}main(){inti;readDat();jsVal();printf("滿足條件的數(shù)=%d\n",cnt);for(i=0;i<cnt;i++)printf("%d",b[i]);printf("\n");writeDat();}writeDat(){FILE*fp;inti;fp=fopen("OUT85.DAT","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}標(biāo)準(zhǔn)答案:voidisVal(){inti,thou,hun,ten,data,j;for(i=0;i<200;i++){thou=a[i]/1000;/*求四位數(shù)的千位數(shù)字*/hun=a[i]%1000/100;/*求四位數(shù)的百位數(shù)字*/ten=a[i]%100/10;/*求四位數(shù)的十位數(shù)字*/data=a[i]%10;/*求四位數(shù)的個(gè)位數(shù)字*/if(thou+ten==hun+data&&a[i]%2!=1){/*如果千位數(shù)加十位數(shù)等于百位數(shù)加上個(gè)位數(shù),并且此數(shù)是偶數(shù)*/b[cnt]=a[i];/*則將滿足條件的數(shù)存入數(shù)組b中*/cnt++;/*統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/}}for(i=0;i<cnt-1;i++)/*將數(shù)組b中的數(shù)按從小到大的順序排列*/for(j=i+1;j<cnt;j++)if(b[i]>b[j]){data=b[i];b[i]=b[j];b[j]=data;}}知識點(diǎn)解析:本題考查的知識點(diǎn)如下:(1)運(yùn)算符“%”及“/”的使用。(2)選擇結(jié)構(gòu)中多個(gè)條件的布爾運(yùn)算。(3)數(shù)據(jù)的排序.在本題中,首先要將一個(gè)4位數(shù)的千位、百位、十位、個(gè)位拆成獨(dú)立的數(shù)字。這里借助特殊運(yùn)算符號“%”(取余)和“/”(整除),拆分方法略。題中給出的兩個(gè)條件必須同時(shí)滿足,所以兩條件之間用“與”運(yùn)算。將符合條件的數(shù)先存入數(shù)組b中,再對b中的數(shù)據(jù)進(jìn)行排序。排序使用“選擇排序法”。國家三級信息管理技術(shù)機(jī)試模擬試卷第6套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、下列程序的功能是:選出5000以下符合條件的自然數(shù)。條件是:千位數(shù)字與百位數(shù)字之和等于十位數(shù)字與個(gè)位數(shù)字之和,且千位數(shù)字與百位數(shù)字之和等于個(gè)位數(shù)字與千位數(shù)字之差的10倍。計(jì)算并輸出這些4位自然數(shù)的個(gè)數(shù)cnt及這些數(shù)的和sum。請編寫函數(shù)countValue0實(shí)現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDAT()把結(jié)果cnt和sum輸出到文件OUT67.DAT中。注意:部分源程序已給出。請勿改動(dòng)主函數(shù)main()和寫函數(shù)writeDAT()的內(nèi)容。試題程序:#include<stdio.h>intcnt,sum;voidcountValue(){}voidmain(){cnt=sum=0;countValue();printf("滿足條件的自然數(shù)的個(gè)數(shù)=%d\n",cnt);printf("滿足條件的自然的值的和=%d\n",sum);writeDAT();}writeDAT(){FILE*fp;fp=fopen("OUT67.DAT","w");fprintf(fp,"%d\n%d\n",cnt,sum);fclose(fp);}標(biāo)準(zhǔn)答案:voidcountValue(){inti,thou,hun,ten,data;for(i=5000;i>=1000;i--){thou=i/1000;/*求四位數(shù)的千位數(shù)字*/hun=i%1000/100;ten=i%100/lO;/*求四位數(shù)的十位數(shù)字*/data=i%10;/*求四位數(shù)的個(gè)位數(shù)字*/if(thou+hun==ten+data&&thou+hun==(data-thou)*10){/*千位數(shù)與百位數(shù)之和等于十位數(shù)與個(gè)位數(shù)這和,且千位數(shù)與百位數(shù)之和等于個(gè)位數(shù)與千位數(shù)之差的10倍*/cnt++;/*則統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/sum+=i;/*將滿足條的件的數(shù)求和*/}}}知識點(diǎn)解析:本題考查的知識點(diǎn)如下:(1)“%”與“/”的使用。(2)判斷結(jié)構(gòu)中多個(gè)條件的布爾運(yùn)算。(3)循環(huán)結(jié)構(gòu)的使用。本題要求選出5000以下符合條件的4位數(shù),所以選擇范圍是1000到5000。這里要借助運(yùn)算符“%”與“/”將4位數(shù)各位上的數(shù)拆成獨(dú)立的數(shù)字:將1個(gè)4位數(shù)整除1000則可得到其千位上的數(shù)字,除以1000取余再整除100則可得百位上的數(shù)字,除以100取余再整除10則可得十位上的數(shù)字,除以10取余則得個(gè)位上的數(shù)字。題中給出的兩個(gè)條件都要滿足,所以兩條件之間用“與”運(yùn)算。使用循環(huán)結(jié)構(gòu)對1000到5000之間的數(shù)依次進(jìn)行上述的處理。國家三級信息管理技術(shù)機(jī)試模擬試卷第7套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件in38.dat中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)JsVal(),其功能是:若一個(gè)4位數(shù)的千位數(shù)字上的值小于等于百位數(shù)字上的值,百位數(shù)字上的值小于等于十位數(shù)字上的值,以及十位數(shù)字上的值小于等于個(gè)位數(shù)字上的值,并且此4位數(shù)是偶數(shù),則統(tǒng)計(jì)出滿足此條件的數(shù)的個(gè)數(shù)cnt并把這些4位數(shù)按從小到大的順序存入數(shù)組b中,最后調(diào)用寫函數(shù)writeDat()把結(jié)果cnt及數(shù)組b中符合條件的4位數(shù)輸出到out38.dat文件中。注意:部分源程序已給出。程序中已定義數(shù)組:a[200],b[200],已定義變量:cnt。請勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("in38.dat","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}voidmain(){inti;readDat();jsVal();printf("滿足條件的數(shù)=%d\n",cnt)for(i=0;i<cnt;i++)printf("%d\n",b[i]);writeDat();}writeDat(){FILE*fp;inti;fp=fopen("out38.dat","w");fprintf(fp,"%d\n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}標(biāo)準(zhǔn)答案:voidjsVal(){inti,j;inta1,a2,a3,a4,k;for(i=0;i<MAX;i++){a1=a[i]/1000;/*求四位數(shù)的千位數(shù)字*/a2=a[i]%1000/100;/*求四位數(shù)的百位數(shù)字*/a3:a[i]%100/10;/*求四位數(shù)的十位數(shù)字*/a4=a[i]%10;/*求四位數(shù)的個(gè)位數(shù)字*/if((a1<=a2)&&(a2<=a3)&&(a3<=a4)&&(a[i]%2==0))/*如果該數(shù)的千位數(shù)小于等于百位數(shù),百位數(shù)小于等于十位數(shù),十位數(shù)小于等于個(gè)位數(shù),并且此4位數(shù)是偶數(shù)*/{b[cnt]=a[i];/*則將該數(shù)存入數(shù)組b中*/cnt++;/*統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/}}for(i=0;i<cnt-1;i++)/*把數(shù)組b中的4位數(shù)按從小到大的順序排列*/for(j=i+1;j<cnt;j++)if(b[i]>b[j]){k=b[i];b[i]=b[j];b[j]=k;}}知識點(diǎn)解析:本題考查的知識點(diǎn)如下:(1)循環(huán)結(jié)構(gòu)的嵌套使用。(2)運(yùn)算符“%”及“/”的使用。(3)選擇結(jié)構(gòu)中多個(gè)條件的布爾運(yùn)算。在本題中,首先要解決的問題是如何將一個(gè)4位數(shù)的千位、百位、十位、個(gè)位拆成獨(dú)立的數(shù)字。這里借助特殊運(yùn)算符號“%”——取余和“/”——整除。將一個(gè)4位數(shù)整除1000則可得到其千位上的數(shù)字,將其除以1000取余再整除100則可得百位上的數(shù)字,除以100取余再整除10則可得十位上的數(shù)字,除以10取余則得個(gè)位上的數(shù)字。千位上的數(shù)小于等于百位上的數(shù),百位上的數(shù)小于等于十位上的數(shù)……這些條件需要同時(shí)滿足,所以各條件之間要用到“與”運(yùn)算。最后的排序仍用“選擇排序法”。國家三級信息管理技術(shù)機(jī)試模擬試卷第8套一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()的功能是實(shí)現(xiàn)從文件IN2.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中;請編制函數(shù)SUOL(),該函數(shù)的功能是:以行為單位對行中以空格或標(biāo)點(diǎn)符號為分隔的所有單詞進(jìn)行倒排。最后把已處理的字符串(應(yīng)不含標(biāo)點(diǎn)符號)仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件OUT2.DAT中。例如,原文:YouHeMeIamastudent.結(jié)果:MeHeYoustudentaamI原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號和空格。注意:部分源程序已給出。請勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>charxx[50][80];intmaxline=0;/*文章的總行數(shù)*/intReadDat(void);voidWriteDat(void);voidStrOL(void){}main(){clrscr();if(ReadDat()){printf("數(shù)據(jù)文件IN2..DAT不能打開!\n\007");return;}StrOL();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN2.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("OUT2.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)答案:voidStrOL(void){inti,j,k,str1,l;charc;for(i=0;i<maxline;i++)/*把各行中多余的標(biāo)點(diǎn)符號去掉*/for(j=0;j<strlen(xx[i]);j++){c=xx[i][j];if((c>=’A’&&c<=’Z’)||(c>=’a’&&c<=’z’)||c==’’||(c>=’0’&&c<=’9’));elsexx[i][j]=’’;}for(l=0;l<maxline;l++){charch[80]={0};charpp[80]={0};str1=strlen(xx[1]);i=str1-1;k=1;while(1){while(((xx[1][i]>=’a’&&xx[1][i]<=’z’)||(xx[1][i]>=’A’&&xx[1][i]<=’Z’)||(xx[1][i]>=’0’&&xx[1][i]<=’9’))&&i>=0)/*處理字母和數(shù)字*/{for(j=k;j>=0;j--)/*從當(dāng)前行的最后一個(gè)字符開始,直到遇到空格*/pp[j+1]=pp[j];pp[0]=xx[1][i];k++;i--;}strcat(ch,pp);/*把該單詞存放到數(shù)組ch中*/strcpy(pp,"");/*清空數(shù)組pp*/k=1;if(i==-1)break;/*如果處理完了一行,則退出循環(huán)*/while((xx[l][i]<’0’||(xx[1][i]>’9’&&xx[1][i]<’A’)||xx[l][i]>’z’)&&i>=0)/*處理空格*/{for(j=k;j>=0;j--)pp[j+1]=pp[j];pp[0]=xx[l][i];k++;i--;}strcat(ch,pp);/*把空格加到數(shù)組ch中/strcpy(pp,"");/*清空數(shù)組pp*/k=0;if(i==-1)break;/*如果處理完了一行,則退出循環(huán)*/}strcpy(xx[l],ch);/*把已處理的字符串仍按行重新存入字符數(shù)組xx中/}}知識點(diǎn)解析:本題是有關(guān)字符串的處理問題。首先利用二重循環(huán)來按照先行后列的順序取得xx數(shù)組中的各個(gè)字符元素,這里用到了strlen()函數(shù),用來求字符串長度。對依次取得的字符做一些處理,即把多余的標(biāo)點(diǎn)符號去掉,使新的字符數(shù)組中只含有字母和空格。準(zhǔn)備工作做完后,從當(dāng)前行的最后一個(gè)字符開始取,不斷的取每一個(gè)字符前面的字符,直到取得一個(gè)完整的單詞后(即遇到空格分隔時(shí)),就把該單詞存放到數(shù)組ch中(用到了strcat()函數(shù)來連接兩個(gè)字符串,用strlen()函
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京混凝土合同范本
- 各種合同范本app
- 廚房墻壁維修合同范本
- 種植水稻農(nóng)村土地出租合同范本
- 醫(yī)院租賃合同范本
- 發(fā)廊給干股 合同范本
- 買賣合同范本 中日
- 沖擊鉆合同范本
- 古董繼承合同范例
- 單位之間贈(zèng)與合同范例
- 機(jī)械設(shè)計(jì)基礎(chǔ)網(wǎng)考題庫答案 吉林大學(xué)
- 建筑垃圾回收利用統(tǒng)計(jì)臺賬
- 《不一樣的你我他》(完美)課件
- 新蘇教版科學(xué)六年級下冊全冊教案(含反思)
- 原油電脫鹽電脫水技術(shù)
- 國考斷面水站建設(shè)及運(yùn)維技術(shù)要求參考
- Q∕GDW 10799.7-2020 國家電網(wǎng)有限公司電力安全工作規(guī)程 第7部分:調(diào)相機(jī)部分
- 熱工學(xué)后題答案
- 不吸煙不喝酒課件
- 奧數(shù)知識點(diǎn) 間隔問題
- 簡易旋轉(zhuǎn)倒立擺及控制裝置
評論
0/150
提交評論