版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
三級(jí)網(wǎng)絡(luò)上機(jī)1.已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱me(字符型10位),單價(jià)dj(整型),轆si(整型),癡je(長(zhǎng)整型)五部分組成。其中:金額=單價(jià)*數(shù)量計(jì)算得出。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SortDatO,其功能要求:按產(chǎn)品名稱從大到小進(jìn)行排列,若產(chǎn)品名稱相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sei1中o最后main()函數(shù)調(diào)用函數(shù)WriteDatO把結(jié)果輸出到文件0UT10.DAT中。提示:若中間變量為PROtemp,則可以直接使用結(jié)構(gòu)賦值語句進(jìn)行解題;產(chǎn)品名稱比較請(qǐng)用函數(shù)stremp進(jìn)行解題。例如:sell[i]=temp;注意:部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDatO的內(nèi)容。ttinclude<stdio.h>ttinclude<string.h>ttinclude<conio.h>#include<stdlib.h>#defineMAX100typedefstruct(chardm[5];/*產(chǎn)品代碼*/char /*產(chǎn)品名稱*/intdj; /*單價(jià)*/intsi; /*數(shù)量*/longje; /*金額*/}PRO;PROsell[MAX];voidReadDat();voidWriteDatO;voidSortDat(){}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();)voidReadDat(){FILE*fp;charstr[80],ch[11];inti;fp=fopen(*IN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memepy(sell[i].dm,str,4);memepy(sell[i].me,str+4,10);memepy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memepy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].si;)fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen(^OUTIO.DAT","w");for(i=0;i<100;i++){printf(*%s%s%4d %5d %10d\n*,sell[i].dm,sei1[i].me,sell[i].dj,sell[i].si,sell[i].je);fprintf(fp,*%s%s%4d %5d %5d\n*,sell[i].dm,sell[i].me,sell[i].dj,sell[i].si,sell[i].je);}fclose(fp);}本題為了實(shí)施兩個(gè)數(shù)組元素的交換,另外定義了?個(gè)結(jié)構(gòu)變量cell。同時(shí)要注意的是比較產(chǎn)品名稱大小的時(shí)候用strcmp()函數(shù)實(shí)現(xiàn)。程序使用兩次二重循環(huán)來實(shí)現(xiàn)要求的功能。voidSortDat(){inti,j;PROcell;/*定義結(jié)構(gòu)變量*/for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(strcmp(sell[i].me,sell[j].me)<0)/?stremp()函數(shù)功能是比較產(chǎn)品名稱大小*/{cell=sell[i];/*按產(chǎn)品代碼從大到小進(jìn)行排序處理*/sell[i]=sell[j];sell[j]=cell;}for(i=0;i<99;i++)for(j=i+l;j<100;j++)if((stremp(sell[i].me,sell[j].me)==0)4&(sell[i].je<sell[j].je)) /*判斷若產(chǎn)品名稱相同,則按金額從大到小進(jìn)行排序處理*/{readDat();{readDat();jsSort();writeDat();{cell=sell[i];sell[i]=sell[j];sell[j]=cell;/*/*定義局部變量*//*判斷i的值若小于/*strlen(xx[i])函2.函數(shù)ReadDat()實(shí)現(xiàn)從文件in.dat中讀取20行數(shù)據(jù)存放到字符串?dāng)?shù)組xx中(每行字符串長(zhǎng)度均小于80)。請(qǐng)編制函數(shù)jsSortO,其函數(shù)的功能是:以行為單位對(duì)字符串變量的下標(biāo)為奇數(shù)的字符按其ASCII值從小到大的順序進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件out.dat中。例如:位置01234567源字符串hgfedcba則處理后字符串hafcdebg部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<windows.h>charxx[20][80];voidjsSort()|}readDat(){FILE*in;inti=0;char*p;in=ropen(.in.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;out=fopen("out.dat","w");system("cis");for(i=0;i<20;i++){printf("%s\n”,xx[i]);fprintf(out,"%s\n”,xx[i]);)fclose(out);}voidmain()本題for循環(huán)條件里采用的步長(zhǎng)為2,這是因?yàn)橐笾粚?duì)下邊為奇數(shù)的元素進(jìn)行判斷。程序使用三重循環(huán)來實(shí)現(xiàn)要求的功能。外層的while循環(huán)用來實(shí)現(xiàn)行間遍歷,內(nèi)層的二重for循環(huán)用來遍歷行內(nèi)下標(biāo)為奇數(shù)的元素。voidjsSort(){inti,j,k,1,P,temp;i=0;while(i<20)20,則執(zhí)行內(nèi)嵌語句*/{j=strlen(xx[i]);數(shù)的功能是統(tǒng)計(jì)第i行字符串中字符的個(gè)數(shù)*/for(k=l:k<j;k=k+2){p=k;for(l=k+2;Kj;1=1+2)if(xx[i][l]<xx[i][P]) /*比較兩個(gè)字符的ASCH值按從小到大的順序進(jìn)行排序處理*/P=l;if(p!=k){temp=xx[i][p];xx[i][p]=xx[i][k]:xx[i][k]=temp;i++;}}3.已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱me(字符型10位),單價(jià)dj(整型),數(shù)量si(整型),僦je(長(zhǎng)整型)五部分組成。其中:金額=單價(jià)*數(shù)量計(jì)算得出。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sei1中。請(qǐng)編制函數(shù)SortDatO,其功能要求:按產(chǎn)品代碼從大到小進(jìn)行排列,若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT8.DAT中。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()讀數(shù)據(jù)函數(shù)ReadDat。和輸出數(shù)據(jù)函數(shù)WriteDat。的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>^defineMAX100typedefstruct{chardm[5];/*產(chǎn)品代碼*/char /*產(chǎn)品名稱*/intdj; /*單價(jià)*/intsi; /*數(shù)量*/longje; /*金額*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()(}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp=fopen(*IN.DAT","r");for(i=0;i<100;i-H-){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].me,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sei1[i],sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].si;)fclose(fp);)voidWriteDat(void){FILE*fp;inti;fp=fopenCz0UT8.DAT","w");for(i=0;i<100;i++){printf("%s%s%4d %5d %5d\n,z,sell[i].dm,sell[i].me,sell[i].dj,sell[i].si,sell[i].je);fprintf(fp,"%s%s%4d %5d %5d\n”,sell[i].dm,sell[i],me,sell[i].dj,sell[i].si,sell[i].je);)fclose(fp);)本題為了實(shí)施兩個(gè)數(shù)組元素的交換,另外定義了一個(gè)結(jié)構(gòu)變量cell。同時(shí)要注意的是比較代碼大小的時(shí)候不能直接比較,因?yàn)樗鼈兌际亲址?。正確的比較方法是用atoi對(duì)代碼做變換。程序使用兩次二重循環(huán)來實(shí)現(xiàn)要求的功能。voidSortDat(){inti,j;PROcell;/*定義結(jié)構(gòu)變量*/for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(atoi(sell[i].dm)<atoi(sell[j].dm))/*atoi函數(shù)功能是將字符串轉(zhuǎn)換成一個(gè)整數(shù)值*/{cell=sell[i];/*按產(chǎn)品代碼從大到小進(jìn)行排序處理*/sell[i]=sell[j];sell[j]=cell;}for(i=0;i<99;i++)for(j=i+l;j<100;j++)if((atoi(sell[i].dm)=atoi(sell[j].dm))&&(sell[i].je<sell[j].je))/*判斷若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排序處理*/{cell=sell[i];sell[i]=sell[j];sell[j]=cell;})4.下列程序progl.c的功能是:在三位整數(shù)(100至999)中尋找符合條件的整數(shù)并依次從小到大存入數(shù)組中;它既是完全平方數(shù),又是兩位數(shù)字相同,例如144、676等。請(qǐng)編制函數(shù)實(shí)現(xiàn)此功能,滿足該條件的整數(shù)的個(gè)數(shù)通過所編制的函數(shù)返回。最后調(diào)用函數(shù)writeDat()把結(jié)果輸出到文件out.dat中。請(qǐng)勿改動(dòng)主函數(shù)main。和寫函數(shù)writeDat()的內(nèi)容。#include<stdio.h>intjsValue(intbb口){)writeDat(intnum,intb[]){FILE*out;inti;out=fopen("out.dat","w");printf("%d\n",num);fprintf(out,num);for(i=0;i<num;i++){printf("%d\n",b[i]);fprintf(out,b[i]);}fclose(out);)main(){intb[20],num;num=jsValue(b);writeDat(num,b);}本題采用for循環(huán)結(jié)合if語句來實(shí)現(xiàn)功能。循環(huán)的起始點(diǎn)為10,終止點(diǎn)32。因?yàn)榇硕叩钠椒角『冒?00和1000.在循環(huán)體內(nèi)計(jì)算出變量a的值,這樣可以保證每次檢查的數(shù)都是平方數(shù)。然后再得出此數(shù)的各位數(shù)值。如果符合條件則將其傳遞給數(shù)組bb。intjsValue(intbb[])(inti,a,d,e,c,p; /*定義局部變量*/P=0;for(i=10;i<32;i++) /*設(shè)置循環(huán)起始值和終止值*/{a=i*i; /*設(shè)定檢查的數(shù)是平方數(shù)*/if(a>=100&&a〈1000) /*判斷a的取值范圍*/{c=a/100; /*求數(shù)值的百位數(shù)的數(shù)字*/e=(a-c*100)/10; /*求數(shù)值的十位數(shù)的數(shù)字*/d=a-c*100-e*10; /*求數(shù)值的個(gè)位數(shù)的數(shù)字*/if((c==e)||(c==d)||(d==e)) /*判斷數(shù)值是否有兩位數(shù)字相同*/{bb[p]=a; /*將符合條件的數(shù)值存入數(shù)組中*/P++;)returnp——;}5.已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱me(字符型10位),單價(jià)dj(整型),數(shù)量si(整型),獺je(長(zhǎng)整型)五部分組成。其中:金額=單價(jià)*數(shù)量計(jì)算得出。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SortDatO,其功能要求:按金額從大到小進(jìn)行排列,若金額相同,則按產(chǎn)品代碼從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT4.DAT中。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct(chardm[5];/*產(chǎn)品代碼*/char /*產(chǎn)品名稱*/intdj; /*單價(jià)*/intsi; /*數(shù)量*/longje; /*金額*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();)voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp=fopen(/*IN.DAT","r");for(i=0;i<MAX;i++){fgets(str,80,fp);memepy(sell[i].dm,str,4);memepy(sell[i].me,str+4,10);memepy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memepy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].si;)fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp二fopen("0UT4.DAT","w");for(i=0;i<MAX;i++){printf(*%s%s%4d%5d%5d\n”,sell[i].dm,sell[i].me,sell[i].dj,sell[i].si,sell[i].je);fprintf(fp,"%s%s%4d%5d%5d\n”,sell[i].dm,sell[i].me,sell[i].dj,sell[i].si,sell[i].je);)fclose(fp);}本題為了實(shí)施兩個(gè)數(shù)組元素的交換,另外定義了一個(gè)結(jié)構(gòu)變量cell。同時(shí)要注意的是比較代碼大小的時(shí)候不能直接比較,因?yàn)樗鼈兌际亲址U_的比較方法是用atoi對(duì)代碼做變換。程序使用兩次二重循環(huán)來實(shí)現(xiàn)要求的功能。voidSortDat(){inti,j;PROcell; /*定義結(jié)構(gòu)變量*/for(i=0;i<99;i++)for(j=i+l:j<100;j++)if(sell[i].je<sell[j].je)/*判斷金額的大小*/{cell=sell[i]; /*按金額從大到小進(jìn)行排序處理*/sell[i]=sell[j];sell[j]=cell;}for(i=0;i<99;i++)for(j=i+l;j<100;j++)if((atoi(sell[i].dm)<atoi(sell[j].dm))&&(sell[i],je==sell[j].je))/*atoi函數(shù)的功能是將字符串轉(zhuǎn)換成一個(gè)整數(shù)值*/{cell=sell[i];/*按產(chǎn)品代碼從大到小進(jìn)行排序處理*/sell[i]=sell[j]:sell[j]=cell;})6.已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱me(字符型10位),單價(jià)dj(整型),數(shù)量si(整型),獺je(長(zhǎng)整型)五部分組成。其中:金額=單價(jià)*數(shù)量計(jì)算得出。函數(shù)ReadDatO是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SortDatO,其功能要求:按金額從小到大進(jìn)行排列,若金額相同,則按產(chǎn)品代碼從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDatO把結(jié)果輸出到文件0UT2.DAT中。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDatO的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*產(chǎn)品代碼*/char /*產(chǎn)品名稱*/intdj; /*單價(jià)*/intsi; /*數(shù)量*/longje; /*金額*/}PRO;PROsell[MAX];voidReadDat();voidWriteDatO;voidSortDat(){)voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[11];inti;fp二fopen("IN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memepy(sell[i].dm,str,4);memepy(sell[i].me,str+4,10);memepy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memepy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].si;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("0UT2.DA『,"w");for(i=0;i<100;i++){printfC/%s%s%4d %5d %5d\n”,sell[i].dm,sell[i].me,sell[i].dj,sell[i].si,sell[i].je);fprintf(fp,*%s%s%4d %5d %5d\n”,sell[i].dm,sei1[i].me,sell[i].dj,sell[i].si,sell[i].je);}fclose(fp);}本題為了實(shí)施兩個(gè)數(shù)組元素的交換,另外定義了一個(gè)結(jié)構(gòu)變量cel1。同時(shí)要注意的是比較代碼大小的時(shí)候不能直接比較,因?yàn)樗鼈兌际亲址U_的比較方法是用atoi對(duì)代碼做變換。程序使用兩次二重循環(huán)來實(shí)現(xiàn)要求的功能。voidSortDat(){inti,j;PROcell; /*定義結(jié)構(gòu)變量*/for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(sell[i].je>sell[j].je)/*判斷金額的大小*/{cell=sell[i];/*按金額從小到大進(jìn)行排序處理*/sell[i]=sell[j];sell[j]-cell;}for(i=0;i<99;i++)for(j=i+l:j<100;j++)if((atoi(sell[i].dm)<atoi(sell[j].dm))&&(sell[i].je==sell[j].je))/*atoi函數(shù)功能是將字符串轉(zhuǎn)換成一個(gè)整數(shù)值*/{cell=sel1[i];/*按產(chǎn)品代碼從大到小進(jìn)行排序處理*/sell[i]=sell[j]:sell[j]=cell;))7.某級(jí)數(shù)的前兩項(xiàng)Al=l,A2=l,以后各項(xiàng)具有如下關(guān)系:An=An-2+2AnT下列程序progl.c的功能是:要求依次對(duì)于整數(shù)M=100,1000和10000求出對(duì)應(yīng)的n值,使其滿足:Sn<MMSn+1>=M,這里Sn=Al+A2+...+An,并依次把n值存入數(shù)組單元b[0],1>[1]和1)[2]中,請(qǐng)編制jsValue。函數(shù)來實(shí)現(xiàn)此功能,最后調(diào)用函數(shù)writeDat()把數(shù)組b口中的值輸出到out.dat文件中,請(qǐng)勿改動(dòng)主函數(shù)main。和寫函數(shù)writeDat()的內(nèi)容。#include<stdio.h>intb[3];jsValue()writeDat(){FILE*fp;fp=fopen("out.dat","w");printf(*%d\n%d\n%d\n*,b[0],b[l],b[2]);fprintf(fp,"%d\n%d\n%d\n”,b[0],b[l],b[2]);fclose(fp);}main(){jsValue();printf("M=100,n=%d\nM=1000,n=%d\nM=10000,n=%d\n\b[0],b[l](b[2]);writeDat();)本題針對(duì)三種不同的要求使用了三個(gè)while循環(huán)來實(shí)現(xiàn)要求的功能。最后一項(xiàng)的序號(hào)用變量i在每次循環(huán)體內(nèi)記錄,然后在循環(huán)結(jié)束后將其傳遞給數(shù)組b。jsValue(){inti,al,a2,a,Sn; /*定義局部變量*/al=l;a2=l;Sn=al;i=l; /*給變量賦初值*/while(Sn<100)/*判斷如果Sn小于100則執(zhí)行內(nèi)嵌語句*/{Sn=Sn+a2;a=ai;a1=a2;a2=a+2*a1;if(Sn<100)i++;)b[0]=i;al=l;a2=l:Sn=al;i=l;while(Sn<1000) /*判斷如果Sn小于1000則執(zhí)行內(nèi)嵌語句*/{Sn=Sn+a2;a=ai;ai=a2;a2=a+2*al;if(Sn<1000)i++;}b[l]=i;al=l;a2=l;Sn=a1;i=l;while(Sn<10000) /*判斷如果Sn小于10000則執(zhí)行內(nèi)嵌語句*/{Sn=Sn+a2;a=al;al=a2;a2=a+2*a1;if(Sn<10000)i++:}b[2]=i;}8.函數(shù)ReadDatO實(shí)現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中,請(qǐng)編制函數(shù)CharConvAO,其函數(shù)的功能是:以該文章中的行為單位把字符串中的最后一個(gè)字符的ASCII值右移4位二進(jìn)制位,高位補(bǔ)0后加最后第二個(gè)字符的ASCII值,得到最后一個(gè)新的值,最后第二個(gè)字符的ASCII值右移4位二進(jìn)制位,高位補(bǔ)0后加最后笫三個(gè)字符的ASCH值,得到最后第二個(gè)新的值,依此類推一直處理到第二個(gè)字符,注意:第一個(gè)字符的ASCII值加原最后一個(gè)字符的ASCII值,得到第一個(gè)新的值。得到的新值分別存放在原字符串對(duì)應(yīng)的位置上。之后把已處理的結(jié)果仍按行重新存入數(shù)組xx中。最后main。函數(shù)調(diào)用函數(shù)writeDat()把結(jié)果xx輸出到文件0UT10.DAT中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格,并也按字符處理。注意:部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)writeDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>^include<string.h>^include<conio.h>#include<windows.h>charxx[50][80];intmaxline=0;/*文章的總行數(shù)*/intReadDat(void);voidWriteDat(void);voidCharConvA()(}voidmain(){system("cls");if(ReadDat()){printf("數(shù)據(jù)文件IN.DAT不能打開!\n\007*);return;}CharConvA();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN.DAT","r"))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'\n');if(p)*p=0;i++;}maxiine=i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;fp=fopen(*0UT10.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n”,xx[i]);)fclose(fp);}本題主要是考察移位操作符》的使用。另外,第一個(gè)元素先用變量P保存,然后在程序結(jié)尾單獨(dú)處理。voidCharConvA(){inti,j,k,p;/*定義局部變量*/i=0;while(i<maxline)/*判斷i是否小于文章的總行數(shù)*/{j=strlen(xx[i]);/*strlen(xx[i])函數(shù)的功能是統(tǒng)計(jì)第i行字符串中字符的個(gè)數(shù)*/p=xx[i][0];/*將第一個(gè)元素先保存在變量p中*/xx[i][0]=xx[i][0]+xx[i][j-1];/*得到第一個(gè)的新字符*/for(k=j-l;k>=2;k—){xx[i][k]=(xx[i][k]?4)+xx[i][k-l];}/*利用移位操作符求出各個(gè)新字符*/xx[i][l]=(xx[i][l]?4)+p;/*得到第二個(gè)的新字符*/i++;})9.下列程序的功能是:找出所有100以內(nèi)(含100)滿足I,1+4,1+10都是素?cái)?shù)的整數(shù)I(1+10也在100以內(nèi))的個(gè)數(shù)ent以及這些I之和sum。請(qǐng)編寫函數(shù)countValue()實(shí)現(xiàn)程序要求的功能,最后調(diào)用函數(shù)writeDat()把結(jié)果ent和sum輸出到文件out.dat中。部分源程序存在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。8include<stdio.h>intent,sum;intisPrime(intnumber){inti,tag=l;for(i=2;tag&&i<=number/2;i++)if(number%i==0)tag=0;returntag;)voidcountValueO()writeDat(){FILE*fp;fp=fopen("out.dat","w");fprintf(fp,*%d\n%d\n*,ent,sum);fclose(fp);)voidmain(){cnt=sum=0;countValue();printf("滿足條件的整數(shù)的個(gè)數(shù)=%d\n”,ent);printf("滿足條件的整數(shù)的和值=%d\n”,sum);writeDat();)本題因?yàn)榻o出了判斷素?cái)?shù)的函數(shù)isPrime,所以僅使用一個(gè)if判斷語句就解決了問題。另外在循環(huán)條件中只需使用i+10<100就包含了其他的條件。voidcountValueO{inti; /*定義局部變量*/i=2; /*為變量賦初值*/cnt=0;sum=0;while(i+10<100)/*設(shè)置循環(huán)結(jié)束條件為:i+10>100*/{if((isPrime(i)!=0)&&(isPrime(i+4)!=0)&&(isPrime(i+10)!=0)) /*調(diào)用isPrime函數(shù)判斷i,i+4,i+10的值是否都是素?cái)?shù)*/{cnt=cnt+l: /*統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/sum=sum+i; /*計(jì)算滿足條件的數(shù)之和*/)i=i+l;))10.函數(shù)ReadDatO實(shí)現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中,請(qǐng)編制函數(shù)StrCharJRO,其函數(shù)的功能是:以行為單位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCH值,得到新的字符仍存入原字符串對(duì)應(yīng)的位置上。最后把已處理的字符串仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)writeDat()把結(jié)果xx輸出到文件0UT8.DAT中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDatO的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<windows.h>charxx[50][80];intmaxline=0;/*文章的總行數(shù)*/intReadDat(void);voidWriteDat(void);voidStrCharJR(){)voidmain()(system(*cls,z);if(ReadDat()){printf("數(shù)據(jù)文件IN.DAT不能打開!\n\007");return;)StrCharJRO;WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen(*IN.DAT*,*r*))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],f\n);if(p)*p=0;i++;}maxiine=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;system("cls");fp=fopenC0UT8.DA『,"w〃);for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp/%s\n*,xx[i]);)fclose(fp);}本題考察的重點(diǎn)是是否知道使用移位操作符?。并使用二重循環(huán)來遍歷輸入數(shù)據(jù)。voidStrCharJR(){inti,j; /*定義局部變量*/i=0;while(i<maxline) /*判斷i是否小于文章的總行數(shù)*/{for(j=0;j<(int)strlen(xx[i]);j++)/*strlen函數(shù)的功能是統(tǒng)計(jì)第i行字符串中字符的個(gè)數(shù)*/xx[i][j]=xx[i][j]+(xx[i][j]?4); /*利用移位操作符求出各個(gè)新字符*/i++;)}11.函數(shù)ReadDat()實(shí)現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中,請(qǐng)編制函數(shù)StrOLO,其函數(shù)的功能是:以讀入文章的行為單位,以空格或標(biāo)點(diǎn)符號(hào)(數(shù)據(jù)文件中僅含','或'作為標(biāo)點(diǎn)符號(hào))作為分隔符,對(duì)行中所有單詞進(jìn)行倒排,單詞間仍以空格作為分隔符,之后把已處理的字符串(應(yīng)不含標(biāo)點(diǎn)符號(hào))仍按行重新存入字符串?dāng)?shù)組xx中,最后main。函數(shù)調(diào)用函數(shù)writeDat()把結(jié)果xx輸出到文件OUT6.DAT中。例如:原文:YouHeMeIamastudent.Ilikestudy.結(jié)果:MeHeYoustudylikeIstudentaamI原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>#include<windows.h>charxx[50][80];intmaxline=0;/*文章的總行數(shù)*/intReadDat(void);voidWriteDat(void);voidStrOL(void){)voidmain(){system(〃cls");if(ReadDat()){printf("數(shù)據(jù)文件IN.DAT不能打開!\n\007");return;)StrOLO;WriteDat();)intReadDat(void){FILE*fp;inti=0;char*p;if((fp二fopen("IN.DAT","r"))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p二strchr(xx[i],'\n');if(p)*p=0;i++;}maxiine=i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;system("cls");fp=fopen(zz0UT6.DAT","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp/%s\n",xx[i]);}fclose(fp);}本程序首先定義了一個(gè)字符串,即一個(gè)長(zhǎng)度為80的數(shù)組lineo然后在逐行的循環(huán)中將每一行從第一個(gè)單詞裝入lineo這樣就可以實(shí)現(xiàn)按單詞倒序排列。然后在行內(nèi)循環(huán)結(jié)束的時(shí)候?qū)⒄麄€(gè)字符串復(fù)制給xx[i]。程序中達(dá)到判斷單詞是否結(jié)束功能的函數(shù)是isalpha。實(shí)現(xiàn)裝入功能的函數(shù)是strcat,即連接字符串函數(shù)。voidStrOL(void){intn;charline[80];/*字義一個(gè)長(zhǎng)度為80的字符型數(shù)組*/inti;for(i=0;Kmaxline;i++)/*設(shè)置循環(huán)初始值和終止值*/{line[0]=0;n=strlen(xx[i]);"strlen函數(shù)的功能是統(tǒng)計(jì)第i行字符串中字符的個(gè)數(shù)*/while(—n){if(!isalpha(xx[i][n]))/*調(diào)用isalpha函數(shù)判斷單詞是否結(jié)束*/(strcat(line,xx[i]+n+1);/*strcat函數(shù)的功能是實(shí)現(xiàn)字符串的連接*/strcat(line,"");xx[i][n]=0;})strcat(line,xx[i]);strcpy(xx[i],line); /*strcpy函數(shù)的功能是將后一字符串拷貝到前一字符中*/})12.函數(shù)ReadDat()實(shí)現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中,請(qǐng)編制函數(shù)ConverCharDO,其函數(shù)的功能是:以行為單位把字符串中的所有小寫字母改寫成該字母的上一個(gè)小寫字母,如果是字母a,則改寫成字母z。大寫字母仍為大寫字母,其它字符不變。最后把已處理的字符串仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)writeDat()把結(jié)果xx輸出到文件OUT4.DAT中。例:原文:Adb.Bcdzaabck.LLhj結(jié)果:Aca.Bbcyzzabj.LLgi原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<windows.h>charxx[50][80];intmaxline=0;/*文章的總行數(shù)*/intReadDat(void);voidWriteDat(void);voidConvertCharD(void)(}voidmain(){system("cis");if(ReadDat()){printf("數(shù)據(jù)文件IN.DAT不能打開!\n\007〃);return;]ConvertCharD();WriteDat();)intReadDat(void){FILE*fp;inti=0;char*p;if((fp二fopen(〃IN.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;voidnum(intm,intk,intxx[])/*/*定義局部變量*//*判斷i是否小于k*//*調(diào)用isP函數(shù)判斷p是否是素?cái)?shù)*//*將P的值傳遞給數(shù)組XX*/voidWriteDat(void){FILE*fp;inti;system("cls");fp=fopen(*0UT4.DAT","w");for(i=0;i<maxline;i++){printfr%s\n*,xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}本題只需要對(duì)小寫字母進(jìn)行處理,因此只需要在判斷循環(huán)中區(qū)分是否為a,如果是則用z代替。voidConvertCharD(void){inti,j,n,p;i=0;while(i<maxline)/*判斷i是否小于文章的總行數(shù)*/{n=strlen(xx[i]); /*strlen?數(shù)的功能是統(tǒng)計(jì)第i行字符串中字符的個(gè)數(shù)*/for(j=0;j<n;j++){if(xx[i][j]>97&axx[i][j]<=122) /*判斷字符是否是除a以外的小寫字母*/{P=xx[i][j]T;/*根據(jù)題面要求改寫小寫字母*/xx[i][j]=p;}elseif(xx[i][j]==97)/*判斷字符若是a,則改寫為z*/xx[i][j]=122;)i++;13.下列程序的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入數(shù)組xx。請(qǐng)編寫函數(shù)num(intm,intk,intxx口)實(shí)現(xiàn)程序的要求,最后調(diào)用函數(shù)readwriteDatO把結(jié)果輸出到文件out.dat中。例如:若輸入175則應(yīng)輸出:1923293137。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。和輸出數(shù)據(jù)函數(shù)readwriteDat()的內(nèi)容。#include<conio.h>#include<stdio.h>#include<windows.h>voidreadwriteDat();intisP(intm){inti;for(i=2;i<m;i++)if(m%i==0)return0;return1;})main(){intm,n,xx[1000];system(〃cls");printf(*\nPleaseentertwointegers:");scanf("%d%d”,&m,&n);num(m,n,xx);for(m=0;m<n;m++)printf(*%dxx[m]);printf("\n");readwriteDat();}voidreadwriteDat(){intm,n,xx[1000],i;FILE*rf,*wf;rf=fopenCrin.dat*,"r");wf=fopen(//out.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,zz%dxx[m]);fprintf(wf,"\n");}fclose(rf);fclose(wf);}本題在while循環(huán)中采用的條件變量是已找到的素?cái)?shù)的個(gè)數(shù)變量k。如果找到的數(shù)字是素?cái)?shù),則將其傳遞給數(shù)組XX,數(shù)組的下標(biāo)使用的自增運(yùn)算符。voidnum(intm,intk,intxx[]){inti,p,r;p=m;r=0;i=0;while(i<k){p=p+l;if(isP(p)!=0){xx[r++]=p;i=i+l;}))14.函數(shù)ReadDat()實(shí)現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中,請(qǐng)編制函數(shù)SortCharDO,其函數(shù)的功能是:以行為單位對(duì)字符按ASCII碼從大到小的順序進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組xxU」,最后main。函數(shù)調(diào)用函數(shù)writeDat()把結(jié)果xx輸出到文件0UT2.DAT中。例:原文:dAe,BfC.CCbbAA結(jié)果:fedCBA.,bbCCAA原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<string.h>#include<conio.h>#include<windows.h>charxx[50][80];intmaxline=0;/*文章的總行數(shù)*/intReadDat(void);voidWriteDat(void);voidSortCharD(void)()voidmain(){system("cls");if(ReadDat()){printf(〃數(shù)據(jù)文件IN.DAT不能打開!\n\007*);return;}SortCharD();WriteDat();)intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen(*IN.DAT*,*r*))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL)(p=strchr(xx[i],'\n');if(p)*p=0;i++;}maxiine=i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;fp=fopen(*0UT2.DAT","w");for(i=0;i〈maxline;i++){printfxx[i]);fprintf(fp,,z%s\n*,xx[i]);}fclose(fp);)本題采用了二重循環(huán)的冒泡排序法來實(shí)現(xiàn)行內(nèi)的排序。而while循環(huán)則用來實(shí)現(xiàn)行間的遍歷。voidSortCharD(void){inti,j,p,k,temp; /*定義局部變量*/i=0;while(i<maxline)/*判斷i是否小于文章的總行數(shù)*/{ for(j=0;j<(int)strlen(xx[i])-1;j++)/*strlen函數(shù)的功能是統(tǒng)計(jì)第i行字符串中字符的個(gè)數(shù)*/{p=j;for(k=j+l;k<(int)strlen(xx[i]);k++) /*此循環(huán)求出第i行中ASCII值最大的字符*/if(xx[i][k]>xx[i][p])P=k;if(p!=j) /*按從大到小的順序進(jìn)行排序*/{temp=xx[i][p];xx[i][p]=xx[i][j];xx[i][j]=temp;}}i++;}}15.下列程序的功能是:把s字符串中的所有字母改寫成該字母的下一個(gè)字符,字母z改寫成字母a。要求大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不做改變。請(qǐng)編寫函數(shù)chg(char*s)實(shí)現(xiàn)程序的要求,最后調(diào)用函數(shù)readwriteDat()把結(jié)果輸出到文件out.dat中。例如:s字符串中原有的內(nèi)容為:Mn.123Zxy,則調(diào)用該函數(shù)后,結(jié)果為No.123Ayz。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。#include<conio.h>#include<string.h>#include<stdio.h>#include<ctype.h>#include<windows.h>#defineN81voidreadwriteDATO;voidchg(char*s){)main(){chara[N];system("cls");printf(*Enterastring:*);gets(a);printf(zzTheoriginalstringis;");puts(a);chg(a);printf("Thestringaftermodified:");
puts(a);readwriteDAT();)voidreadwriteDAT(){inti;chara[N];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen(*out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s”,a);chg(a);fprintf(wf,"%s\n",a);)fclose(rf);fclose(wf);)本題使用一個(gè)for循環(huán)在行內(nèi)遍歷。在檢查每個(gè)元素的值后按要求進(jìn)行替換。并將字符z和Z單獨(dú)處理。voidchg(char*s){inti,j;charb[81]; /*定義局部字符型數(shù)組b*/strcpy(b,s);/*利用strcpy函數(shù)將s字符串拷貝到b中*/i=strlen(b);/*利用strlen函數(shù)將b中字符的個(gè)數(shù)賦值給i*/for(j=0;j<i;j++)/*實(shí)現(xiàn)行內(nèi)的遍歷*/給i*/for(j=0;j<i;j++)/*實(shí)現(xiàn)行內(nèi)的遍歷*//*判斷字符是否為除了z和Z之外的字母*/b[j]=b[j]+l;/*將第j個(gè)字母改為該字母的下一個(gè)字符*/elseif(b[j]=122)b[j]=97;elseif(b[j]==90)b[j]=65;/*判斷該字母是否為elseif(b[j]=122)b[j]=97;elseif(b[j]==90)b[j]=65;/*將該字母改為a*//*判斷該字母是否為Z*//*將該字母改為A*/strcpy(s,b);/*利用strcpy函數(shù)將b字符串拷貝到s中*/16.已知數(shù)據(jù)文件in.dat中存有300個(gè)四位數(shù),并已調(diào)用讀函數(shù)ReadDatO把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)jsValueO,其功能是:求出千位數(shù)上的數(shù)加個(gè)位數(shù)等于百位數(shù)上的數(shù)加十位數(shù)上的數(shù)的個(gè)數(shù)ent,再求出所有滿足此條件的四位數(shù)平均值pjzl,以及不滿足此條件的四位數(shù)平均值Pjz2,最后調(diào)用寫函數(shù)把結(jié)果輸出到。ut.dat文件。例如:6712,6+2=7+1,則該數(shù)滿足條件計(jì)算平均值pjzl,且個(gè)數(shù)cnt=cnt+l。8129,8+901+2,則該數(shù)不滿足條件計(jì)算平均值pjz2。部分源程序存在文件progl.c中。程序中已定義數(shù)組:a[300],已定義變量:ent,pjzl,pjz2o請(qǐng)勿改動(dòng)主函數(shù)main。、讀函數(shù)ReadDat()和寫函數(shù)writeDat()的內(nèi)容。#include<stdio.h>inta[300],cnt=0;doublepjzl=O.0,pjz2=0.0;jsValueO(}readDat(){FILE*fp;inti;fp=fopen(^in.dat","r");for(i=0;i<300;i++)fscanf(fp, ;fclose(fp);}writeDat(){FILE*fp;fp=fopen(//out.dat","w");fprintf(fp,"%d\n%7.2f\n%7.2f\n”,ent,pjzl,pjz2);fclose(fp);}main()(readDat();jsValueO;writeDat();printf("cnt=%d\n滿足條件的平均值pzjl=%7.2f\n不滿足條件的平均值pzj2=%7.2f\n”,ent,pjzl,pjz2);}本題使用一個(gè)for循環(huán)來遍歷數(shù)組a中的元素。在循環(huán)體內(nèi)使用if語句來判斷是否符合要求,然后將其直接累加進(jìn)平均值中。同時(shí)記錄滿足條件的元素?cái)?shù)。在循環(huán)結(jié)束后得出最后的平均值。jsValueO{inti,b,c,d,e; /*定義局部變量*/pjzl=0;pjz2=0;for(i=0;i<300;i++)/*設(shè)置循環(huán)的初始值和終止值*/{b=a[i]/1000; /*求出某四位數(shù)的千位數(shù)*/c=(a[i]-b*1000)/100;/*求出某四位數(shù)的百位數(shù)*/d=(a[i]-b*1000-c*100)/10; /*求出某四位數(shù)的十位數(shù)*/e=a[i]-b*1000-c*100-d*l0; /*求出某四位數(shù)的個(gè)位數(shù)*/if((b+e)==(c+d)) /*判斷千位數(shù)加個(gè)位數(shù)的值是否等于百位數(shù)加十位數(shù)的值*/{cnt++; /*統(tǒng)計(jì)符合條件的數(shù)的個(gè)數(shù)*/pjzl=pjzl+a[i];} /*計(jì)算符合條件的數(shù)的和*/else{pjz2=pjz2+a[i];}/*計(jì)算不符合條件的數(shù)的和*/}if(cnt==O)pjzl=O; /*計(jì)算符合條件的數(shù)的平均值*/elsepjzl=pjzl/cnt;if((300-cnt)==0) pjz2=0;/*計(jì)算不符合條件的數(shù)的平均值*/elsepjz2=pjz2/(300-cnt);}17.現(xiàn)有一個(gè)10個(gè)人100行的選票數(shù)據(jù)文件IN.DAT,殿據(jù)存放的格式是每條記錄的長(zhǎng)度均為10位,第一位表示第一個(gè)人的選中情況,第二位表示第二個(gè)人的選中情況,依此類推:內(nèi)容均為字符0和1,1表示此人被選中,0表示此人未被選中,若一張選票人數(shù)小于等于5個(gè)人時(shí)被認(rèn)為無效的選票。給定函數(shù)ReadDatO的功能是把選票數(shù)據(jù)讀入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)CountRsO來統(tǒng)計(jì)每個(gè)人的選票數(shù)并把得票數(shù)依次存入yy[0]至Uyy[9]中。把結(jié)果yy輸出到文件OUT.DAT中。部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。#include<stdio.h>charxx[100][11];intyy[10];intReadDat(void);voidWriteDat(void);voidCountRs(void){}voidmain(){inti;for(i=0;i<10;i++)yy[i]=0;if(ReadDat()){printf(〃選票數(shù)據(jù)文件IN.DAT不能打開!\n\007”);return;)CountRsO;WriteDat();}intReadDat(void){FILE*fp;inti;if((fp=fopen(*IN.DAT*,*r*))==NULL)return1;for(i=0;i<100;i++){if(fgets(xx[i],12,fp)==NULL)return1;xx[i][10]=\0J;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen(*0UT.DAT","w");for(i=0;i<10;i++){fprintf(fp,,z%d\n*,yy[i]);printf("第%d個(gè)人的選票數(shù)=%d\n",i+1,yy[i]);)fclose(fp);)本程序首先在最外層使用一個(gè)for循環(huán)來遍歷十張選票,然后在此循環(huán)體內(nèi)使用一個(gè)while循環(huán)來統(tǒng)計(jì)當(dāng)前選票的選中數(shù),如果所選不高于5個(gè)人則作廢此選票。還有就是要注意體內(nèi)的for循環(huán)的寫法,其終止條件比較特殊。voidCountRs(void){inti,j,ent;char*pch; /*定義指向字符型變量的指針變量*/for(i=0;i<100;i++) /*設(shè)置循環(huán)的初始值和終止值*/{ent=0;pch=xx[i];while(*pch) /*統(tǒng)計(jì)這張選票所選的人數(shù)*/{if(*(pch++)=='1')cnt++;}if(ent<=5) /*小于等于5人,無效*/continue;for(j=0;xx[i][j];j++) /*統(tǒng)計(jì)每個(gè)人的選票數(shù)*/{if(xx[i][j]=='r)yy[j]++;}/*將得票數(shù)依次存入yy數(shù)組中*/18.已知數(shù)據(jù)文件in.dat中存有300個(gè)四位數(shù),并已調(diào)用讀函數(shù)ReadDatO把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)jsValueO,其功能是:求出千位數(shù)上的數(shù)加百位數(shù)等于十位數(shù)上的數(shù)加個(gè)位數(shù)上的數(shù)的個(gè)數(shù)ent,再求出所有滿足此條件的四位數(shù)平均值pjzl,以及不滿足此條件的四位數(shù)平均值pjz2,最后調(diào)用寫函數(shù)writeDat()把結(jié)果輸出到out.dat文件。例如:7153,7+1=5+3,則該數(shù)滿足條件計(jì)算平均值pjzl,且個(gè)數(shù)cnt=cnt+l。8129,8+1!=2+9,則該數(shù)不滿足條件計(jì)算平均值pjz2。部分源程序存在文件progl.c中。程序中已定義數(shù)組:a[300],已定義變量:ent,pjzl,pjz2o請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)writeDateO的內(nèi)容。#include<stdio.h>inta[300],cnt=O;doublepjzl=O.0,pjz2=0.0;jsValue()(}readDat(){FILE*fp;inti;fp=fopen("in.dal",〃r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);)writeDat(){FILE*fp;fp=fopen("out.dat","w");fprintf(fp,*%d\n%7.2f\n%7.2f\n”,ent,pjzl,pjz2);fclose(fp);)main(){readDat();jsValueO;writeDat();printf("cnt=%d\n滿足條件的平均值pzjl=%7.2f\n不滿足條件的平均值pzj2=%7.2f\n”,ent,pjzl,pjz2);)本題使用一個(gè)for循環(huán)來遍歷數(shù)組a中的元素。在循環(huán)體內(nèi)使用if語句來判斷是否符合要求,然后將其直接累加進(jìn)平均值中。同時(shí)記錄滿足條件的元素?cái)?shù)。在循環(huán)結(jié)束后得出最后的平均值。其中ent如果為0則會(huì)出現(xiàn)除數(shù)為0的情況,所以要單獨(dú)處理。jsValueO{inti,b,c,d,e; /*定義局部變量*/pjzl=0;pjz2=0;for(i=0;i<300;i++)/*設(shè)置循環(huán)的初始值和終止值*/{b=a[i]/1000; /*計(jì)算出四位數(shù)的千位數(shù)*/c=(a[i]-b*1000)/100; /* 計(jì)算出四位數(shù)的百位數(shù)*/d=(a[i]-b*1000-c*100)/10; /* 計(jì)算出四位數(shù)的十位數(shù)*/e=a[i]-b*1000-c*l00-d*l0; /*計(jì)算出四位數(shù)的個(gè)位數(shù)*/if((b+c)==(d+e))/*判斷千位數(shù)加百位數(shù)的值是否等于十位數(shù)加個(gè)位數(shù)的值*/{cnt++; /*統(tǒng)計(jì)符合條件的數(shù)的個(gè)數(shù)*/pjzl=pjzl+a[i]; /*計(jì)算符合條件的數(shù)的和*/}else{pjz2=pjz2+a[i];/*計(jì)算不符合條件的數(shù)的和*/)}if(cnt-O) /*計(jì)算符合條件的數(shù)的平均值*/pjzl=O;elsepjzl=pjzl/cnt;if((300-cnt)==0)/*計(jì)算不符合條件的數(shù)的平均值*/pjz2=0;elsepjz2=pjz2/(300-cnt);)19.已知數(shù)據(jù)文件in.dat中存有300個(gè)四位數(shù),并已調(diào)用讀函數(shù)ReadDat()把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)jsValueO,其功能是:求出千位數(shù)上的數(shù)減百位數(shù)減十位數(shù)上的數(shù)減個(gè)位數(shù)上的數(shù)大于零的個(gè)數(shù)ent,再求出所有滿足此條件的四位數(shù)平均值pjzl,以及不滿足此條件的四位數(shù)平均值pjz2,最后調(diào)用寫函數(shù)writeDat()把結(jié)果輸出到out.dat文件。例如:9123,9-1-2-3>0,則該數(shù)滿足條件計(jì)算平均值pjzl,且個(gè)數(shù)cnt=cnt+l。9812,9-8-1-2<0,則該數(shù)不滿足條件計(jì)算平均值Pjz2。部分源程序存在文件progl.c中。程序中已定義數(shù)組:a[300],已定義變量:ent,pjzl,pjz2o請(qǐng)勿改動(dòng)主函數(shù)main。、讀函數(shù)ReadDat()和寫函數(shù)writeDat()的內(nèi)容。#include<stdio.h>inta[300],cnt=0;doublepjzl=0.0,pjz2=0.0;jsValueO()readDat(){FILE*fp;inti;fp=fopen(*in.dat*,'r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);)writeDat(){FILE*fp;fp=fopen(^out.dat","w");fprintf(fp,"%d\n%7.2f\n%7.2f\n”,ent,pjzl,pjz2);fclose(fp);main(){readDat();jsValueO;writeDat();printf("cnt=%d\n滿足條件的平均值pzjl=%7.2f\n不滿足條件的平均值pzj2=%7.2f\n”,ent,pjzl,pjz2);)本題使用一個(gè)for循環(huán)來遍歷數(shù)組a中的元素。在循環(huán)體內(nèi)使用if語句來判斷是否符合要求,然后將其直接累加進(jìn)平均值中。同時(shí)記錄滿足條件的元素?cái)?shù)。在循環(huán)結(jié)束后得出最后的平均值。其中ent如果為。則會(huì)出現(xiàn)除數(shù)為0的情況,所以要單獨(dú)處理。jsValue(){inti,b,c,d,e; /*定義局部變量*/pjzl=0;pjz2=0;for(i=0;i<300;i++)/*設(shè)置循環(huán)的初始值和終止值*/{b=a[i]/1000; /*計(jì)算出四位數(shù)的千位數(shù)*/c=(a[i]-b*1000)/100;/*計(jì)算出四位數(shù)的百位數(shù)*/d=(a[i]-b*1000-c*100)/10;/*計(jì)算出四位數(shù)的十位數(shù)*/e=a[i]-b*1000-c*100-d*10;/*計(jì)算出四位數(shù)的個(gè)位數(shù)*/if((b-c-d-e)>0)/*判斷千位數(shù)減百位數(shù)減十位數(shù)減個(gè)位數(shù)的值是否大于零*/{cnt++: /*統(tǒng)計(jì)符合條件的數(shù)的個(gè)數(shù)*/pjzl=pjzl+a[i]; /*計(jì)算符合條件的數(shù)的和*/)else(pjz2=pjz2+a[i]; /*計(jì)算不符合條件的數(shù)的和*/))if(cnt-O) /*計(jì)算符合條件的數(shù)的平均值*/pjzl=O;elsepjzl=pjzl/cnt;if((300-cnt)-0)/*計(jì)算不符合條件的數(shù)的平均值*/pjz2=0;elsepjz2=pjz2/(300-cnt);}20.請(qǐng)編制函數(shù)ReadDat()實(shí)現(xiàn)從文件IN.DAT中讀取1000個(gè)十進(jìn)制整數(shù)到數(shù)組xx中;請(qǐng)編制函數(shù)Compute。分別計(jì)算出xx中奇數(shù)的個(gè)數(shù)odd,奇數(shù)的平均值avel,偶數(shù)的平均值ave2以及所有奇數(shù)的方差totfc的值,最后調(diào)用函數(shù)WriteDatO把結(jié)果輸出到OUT.DAT文件中。計(jì)算方差的公式如下:1H2totfc= 2(xx[i]-avel)Ni=l設(shè)N為奇數(shù)的個(gè)數(shù),xx[i]為奇數(shù),avel為奇數(shù)的平均值。原始數(shù)據(jù)文件存放的格式是:每行存放10個(gè)數(shù),并用逗號(hào)隔開。(每個(gè)數(shù)均大于0且小于等于2000)部分源程序存在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。和輸出數(shù)據(jù)函數(shù)writeDat。的內(nèi)容。#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleavel=0.0,ave2=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void){inti;FILE*fp;if((fp=fopenClN.DAT*,"r>z))==NULL)return1;for(i=0;i<MAX;i++){fscanf(fp,"%d,”,&xx[i]);if((i+l)%10==0)fscanf(fp,"\n");}fclose(fp);return0;)voidCompute(void)(}voidmain(){inti;for(i=0;i<MAX;i++)xx[i]=0;if(ReadDat()){printf("數(shù)據(jù)文件IN.DAT不能打開!\007\rT);return;}Compute();printfC0DD=%d\nAVEl=%f\nAVE2=%f\nT0TFC=%f\n*,odd,avel,ave2,totfc);WriteDat();}voidWriteDat(void){FILE*fp;fp=fopen(//OUT.DAT","w");fprintf(fp,"%d\n%f\n%f\n%f\n”,odd,avel,ave2,totfc);fclose(fp);}本題首先計(jì)算奇數(shù)和偶數(shù)各自的累加和,同時(shí)記錄奇數(shù)的個(gè)數(shù)。然后在計(jì)算平均值的時(shí)候要注意。dd為0的情況要單獨(dú)處理。方差則用一個(gè)for循環(huán)來計(jì)算。
voidCompute(void){inti,yy[MAX];/*定義局部變量和數(shù)組/*定義局部變量和數(shù)組*/for(i=0;i<MAX;i++)/*設(shè)置循環(huán)的初始值和終止值*/if(xx[i]%2!=0){yy[odd]=xx[i];odd++;avel=avel+xx[i];}else{even++;ave2=ave2+xx[i];}if(odd==0)avel=0;elseavel=avel/odd;if(even==
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 委托轉(zhuǎn)讓公司協(xié)議
- 商超布展合作協(xié)議
- 《雅思閱讀技巧》課件
- 2025版五星酒店廚師長(zhǎng)職位競(jìng)聘與特聘合同書3篇
- 2025年全球及中國(guó)商用蘑菇殺菌設(shè)備行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球便攜式ALD系統(tǒng)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)氧化鈮蒸發(fā)材料行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)磁力鎖支架行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)手語口譯服務(wù)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)非接觸式26G高頻雷達(dá)物位計(jì)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 化學(xué)-河南省TOP二十名校2025屆高三調(diào)研考試(三)試題和答案
- 智慧農(nóng)貿(mào)批發(fā)市場(chǎng)平臺(tái)規(guī)劃建設(shè)方案
- 林下野雞養(yǎng)殖建設(shè)項(xiàng)目可行性研究報(bào)告
- 2023年水利部黃河水利委員會(huì)招聘考試真題
- Python編程基礎(chǔ)(項(xiàng)目式微課版)教案22
- 01J925-1壓型鋼板、夾芯板屋面及墻體建筑構(gòu)造
- 欠電費(fèi)合同范本
- 2024年新高考地區(qū)數(shù)學(xué)選擇題填空壓軸題匯編十八含解析
- 大型商場(chǎng)招商招租方案(2篇)
- 2022年袋鼠數(shù)學(xué)競(jìng)賽真題一二年級(jí)組含答案
- 英語主語從句省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論