版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1.調(diào)rwdata(),IN.dat10(mk值),primenum函arrayuprimenum(intm,intk,intarray[]),該函數(shù)的功能是:mk個素數(shù)存array并在屏幕上顯示。OUT.dat中。39,則5711131719232931注意:部分程序己經(jīng)給出。請勿改動主函數(shù)maino和輸出數(shù)據(jù)函數(shù)rwdata()的#include<conio.h>#include<stdio.h>voidrwdata();voidprimenum(intm,intk,int m,n,printff'\nPleaseentertwointegers:”);scanf("%d%d",&m,&n);primenum(m,n,array);for(m=0;m<n;printf("%dprin氓void m,n,array[1000], *readfile,*writefile;readfile=fbpen("in.dat",T);writefile=fbpen("out.dat",”w”);for(i=0;i<10;i++) fscanf(readfile,n%d%d",&m,primenum(m,n,for(m=0;m<n;m-H-fprintf(writefile,【知識點播】素數(shù)的定義如果一個數(shù)的正因1和這個數(shù)【題目分析】分析題目可知,題中需要解決的問題就是Primenum函能問題(rwdata函數(shù)功能題中己經(jīng)給出),而Primenum的功能是求在指定數(shù)m之后的k個素因此本題的關(guān)鍵在于如何判斷一個數(shù)是之后就可以通過一個for循環(huán)來求得在m之后的k個素數(shù)了?!窘忸}思路】根據(jù)素數(shù)的定義,本題采用的算法是:首先定義一個變量Value,并把m之后的2~value/2value,value2value/2之中的任何一個整數(shù)整除,value不是素數(shù),結(jié)束循環(huán);value2value/2之間的數(shù)整除,則退出循環(huán),然后判斷循ivalue/2,如果大于,則value是并將value值賦給array[n],然 再判斷n是否大于等于k,如果大于等于k,就完了程序要求的功能,退出循環(huán),value加1,根據(jù)以上算法繼續(xù)voidprimenum(intm,intk,int{intvalue=m+1;inthalf,n=0,i;{half=if(value%i= if(n>=看能否被m整除,如果能整除,就不是素數(shù),否則是在文件IN.dat中有200個正整數(shù),且每個數(shù)均在1000-9999之間函數(shù)RData()讀取這200個數(shù)存放到數(shù)組original中。請編寫函數(shù) 其功能是:要求按每個數(shù)的后3位的大小進行升序排列,然后取出滿足此條件的前10個數(shù)依次存入數(shù)組result中,如果后3位的數(shù)值相等,則按原先的數(shù)值進行降序排列。最后調(diào)用函數(shù)WData(),把結(jié)果result輸出到文件OUT.dat中。處理后:9012601270258088 讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)#include<stdio.h>#include<string.h>#include original[200],void for(i=0;i<200; out=fopen(”O(jiān)UT.dat”,for(i=0;i<10; printf(n%dn,void 【題目分析】首先我們來看看題中要求我們解決的問題有哪些。riginal數(shù)組中各元素數(shù)3大小進如果數(shù)值相等,則按原先的數(shù)值進行降序排列排original10result【解題思路】根據(jù)上面的第1步首先分解出數(shù)組中兩個元素的后這里采用在兩次循環(huán)中求出正整數(shù)original[j]^1000的2后比較兩個數(shù)余數(shù)的大小,如果正整數(shù)original]和original[j]對1000的余數(shù)不相同,則按照升序進行排序,如果相同,則比較original^]和original!j]的大小,按照降序進3步:利for循環(huán)語句把original10個數(shù)result i,j,for(i=0;i<l99; if(original[i]%1000> data=original[i];original[i]=originalfj];original]]=data;elseif(original[i]%1000== if(original[i]< original[i]=original[j];original[j]=data;for(i=0;i<10;容錯分析:數(shù)組originalb中兩個數(shù)的位置交換要借助中IN.dat100個產(chǎn)品銷售每個產(chǎn)品銷售記錄由產(chǎn)code((長整型)5部分組成。其中:金額=單價X數(shù)量。函數(shù)讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫函數(shù) 若產(chǎn)品代碼相同,則按金額從大到小進行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WDataQ,把結(jié)果輸出到文件OUT.dat中。部分程序己給出。請勿改動主函數(shù)讀數(shù)據(jù)函數(shù)#include<stdio.h>#include<string.h>#include#include<stdlib.h>#defineMAX100typedefstruct /*產(chǎn)品代碼 name[l /*產(chǎn)品名稱 /* /*數(shù)量 /*金額}PROvoidRData();voidWData();voidvoid memset(sell,0,sizeoRsell));void str[80],ch[l ip=fbpen(”IN.dat”,for(i=0;i<100; fgets(str,80,memcpy(sell[i].code,str,memcpy(sell[i].name,str+4,memcpy(ch,str+14,ch[4]=memcpy(ch,str+18,ch[5]=sell[i].amount=sell[i].sum=(long)sell[i].uprice*void fp=fbpen(,,OUT.dat,\for(i=0;i<100; %s%4d%5dsell[i].code,sell[i].name,sell[i].uprice,sell[i].amount,iprintf(ip,M%s%s%4dsell[i].code,sell[i].name,sell[i].uprice,sell[i].amount,}要求我們解決的問題有哪些。①按產(chǎn)品代碼排列,若產(chǎn)品代碼相同,則按金額從大到小進行排列 列結(jié)果存入結(jié)構(gòu)數(shù)組sell中分析題目可知,sell來保存銷售記錄。產(chǎn)品代碼sell結(jié)構(gòu)code成員中,金額存儲在sum成員中?!窘忸}我們可以利用兩個for循環(huán)結(jié)構(gòu)對產(chǎn)品銷售記錄(strcmp(sell[i],code,sell[j].code))兩兩進行循環(huán)比較,如果這個表達式返回結(jié)果值小于0,0,說明這兩個產(chǎn)品的代碼相同,sell[i].sumsell[j].sumsell[i].sumvsellUl.sum,則進行兩個數(shù)據(jù)的交換,實現(xiàn)金額從大到小進行排序。void for(i=0;i<99;if(strcmp(sell[i].code,sell[j].code)<temp=sell[i];sell[i]=sell[j];sell[j]=temp;elseif(strcmp(sell[i].code,sell[j].code)==if(sell[i].sum<temp=sell[i];sell[i]=sell[j];sell[j]=temp;函數(shù)RData()實現(xiàn)從文件IN.dat中讀取一篇英文文章,存入到字符串數(shù)組和中;請編寫encryptChar()函數(shù),其功能是:按給定的替代關(guān)系對數(shù)組str中的所有字符進行替代,仍存入數(shù)組str對應(yīng)的位置上,WData(),str輸出OUT.dat中。替代關(guān)系:f(p)=p*Hmod256(p是數(shù)組中某一個ASCII值,flp)是計算后新ASCII值),如果f(p)132130,則該字符不變,f(p)應(yīng)的字符進行原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80注意部分程序己給出。請勿改動主函 讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)#include<stdio.h>#include<string.h>#include#include<ctype.h>unsignedchar maxline0;/*文章的總行數(shù)intRData(void);voidWData(void);voidvoid printf(”數(shù)據(jù)文件IN.datint i= if((fp=fopen('TN.dat",T))==returnwhile(fgets(str[i],80,fp)!= p=strchr(str[i],*\n*);returnvoid fbr(i=0;i<maxline; printf(n%s\n'\fprintf(fp,,,%s\n\【題目分析】分析題目可知,題中需要解決的問題就是實現(xiàn)encryptChar函數(shù)而encryptChar函數(shù)的功能是:實現(xiàn)"按照指定的替代關(guān)系將數(shù)組str中的所有字符進行替代,替代后仍存入數(shù)組str的對應(yīng)位置上”。因此本題的關(guān)鍵在于用什么樣的C程序語言實現(xiàn)指【解題思路】首先通過fbr循環(huán)對數(shù)組st巾]中的每一個英文字符按照題目*pf*ll%256計算出其對應(yīng)的ASCHASCII13032進行13032,ASCII for(i=0;i<maxline; while(*pf!= if(*pfHl%256V=130&&*pPM容錯分析:題目中的條件是:f(p)值小32130,則該字符不變。程序中這個條件寫成:*pf*ll%256<=130&&RData()IN.dat中讀取一篇英文文str中,請編寫函數(shù)DescSort(),其功能是:以行為單位對字符按從大到小的順序進行排序,排序后的結(jié)果仍按行重新存入字符strWData(),strOUT.dat中。原始數(shù)據(jù)文件存放的格式是:每行的寬度80號和空格)。例如,注意部分程序已給出。請勿改動主函 讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)的#include<stdio.h>#include<string.h>#include<conio.h> maxline0;/*文章的總行數(shù)intRData(void);voidWData(void);voidvoid printf(”數(shù)據(jù)文件IN.dat不能int i= if((fp=fopen(”IN.dat"JT))==returnwhile(fgets(str[i],80,fp)!= *p=maxline=i;return0;void fp=fopen(,,OUT.datn,for(i=0;i<maxline; printf(M%s\nM,【題目分析】分析題目題中需要問題就是實現(xiàn)DescSort函數(shù)的功能問題,而DescSort函數(shù)的功能是:以行為單位對字符按從大到小的順序進行排序后的結(jié)果仍按行重新存串數(shù)組str因此本題的關(guān)鍵在于如何判斷將字符串單獨的之后個三重循環(huán)來將所有字符逐個比較字母的并存入數(shù)組str首先利用三重循第一層循環(huán)將字符讀入數(shù)組strl然后層的二重循環(huán)對文章中每一行的字符進行兩兩比較,較小的字符往行后放,較大的字符往行前放,這樣就實現(xiàn)了以行為單位對字符從大在程序中的語句是if(str[i]Lj]<str[i][k])成str[i][j]和str[i][k]就交換數(shù)據(jù)。void i,j,k, fbr(i=0;i<maxline; strl=for(j=O;j<strl-fbr(k=j+l;k<strl; str[i][j]=str[i][k]=j0到strl-l,kj+16函數(shù)RData()實現(xiàn)從文件lN.dat中讀取一篇英文文章存入字符串數(shù)組original中,請編寫StrCharMove()函數(shù),其功能是:以行為單位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串對應(yīng)的位置上。最后把已處理的字符串仍按行重新存入字符串數(shù)組original中。最后調(diào)用函數(shù)WData(),originalOUT.dat中。原始數(shù)據(jù)文件存放的格80(含注意部分程序己給出。請勿改動主函數(shù)main()讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)#include<stdio.h>#include<string.h>#include intmaxline0;/*文章的總行數(shù)intvoidvoid int i= if((fp=fopen(”IN.dat",T))==returnwhile(fgets(original[i],80,fp)!= p=strchr(original[i],return0;void ip=fbr(i=0;i<maxline; fprintf(fp,,,%s\n\【知識點播】ASCH碼值的右移運算可以通過(?)來實現(xiàn),左移運【題目分析】分析題目可知,題中需要解決的問題是實現(xiàn)StrCharMove函數(shù)而StrCharMove函數(shù)的功以行為單位把字符串中所有字符的ASCII值右移4位,然后把的字符ASCII值再加上原字符的ASCII值,的字符仍存入原字符串對應(yīng)的位最后把已處理的字符串仍按行重新存入字符串數(shù)組original因的關(guān)鍵在于如何進行ASCII值運算?!窘忸}思路】首先用字符strlen求出每行的長度,fbr循環(huán)語句中將每個字符將得到的ASCII碼值轉(zhuǎn)換成字符并存original中。void i,j,for(i=0;i<maxline;strl=for(j=0;j<strl;original[i][j]+=ASCII碼值右移4位,再和原值相加,用語句original[i][j]編findStr(),其功能是:統(tǒng)計一個2的子字符串在另一個字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為”asdasasdfgasdaszx67asdmklo",子字符串為”as”,函數(shù)返回6。函數(shù)ReadWriteo實現(xiàn)從文件IN.dat中讀取兩個字符串,并調(diào)用函數(shù)findStr。,輸出到文件OUT.dat部分程序己經(jīng)給出。請勿改動主函數(shù)maino和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)的花括號中填入編寫的若干#include<stdio.h>#include<string.h>#includeintfindStr(char*str,charvoid str[81],substr[10], n,len,i= *rf,rf=ft)pen("IN.dat”,wf=fopen(,,OUT.datM,while(i< fgets(str,fgets(substr,10,len=strlen(substr)-if(ch='\n‘||substr[len]=n=findStr(str,fprintfifwf,H%d\nu, charstr[81],substr[lintn=findStr(str,printf("n=%d\n",目可知,題中需要解決的問題就是實現(xiàn)findStrfindStr函數(shù)的功能是:統(tǒng)計滿足"一個長度為2的子字符串在另一個字符串"條件的字符串出現(xiàn)的次數(shù)。因此本題的關(guān)鍵在于如何判斷一個字符串在另外一個字符串中?!窘忸}思路】pr分別指向while循環(huán)中比較*r*p的值,如果兩者的值相等,rp1;如果兩者不相等,則對*r的值進行如果*r的值等于則說明在字符串*str中找到了一個與*substr相匹配的字符串,n1。然后str1,進入下一個尋找與子字符相匹配循環(huán),直while(*str)循環(huán),返回n值就是與子字符串相匹配字符串的個數(shù)。intfindStr(char*str,char *p,n=while P=r=whileif(*r= return容錯分析:字符串的最后一個字符是null,所以當字符串指針str和r達到字符while有自然數(shù)之和的平方根s,progRcadWrite從Ndat文件中讀取10組數(shù)據(jù),分別得出OUT.datn1000時,注意部分程序己經(jīng)給出。請勿改動main()progReadWriteo#include<conio.h>#include<math.h>#include<stdio.h>doubleCountValue(intn)void *fp, i, if(fp==NULL) wf=fbpen("out.dat",fbr(i=0;i<10; s=(float)countValue(n);fprintf(wf,H%f\nn,s); printf("1000以內(nèi)符合條件的自然數(shù)之和的平方根=%1\11",(:01111/仙 n以內(nèi)所有能被和7整除的整數(shù) 這些整數(shù)相加求它們的和;對這個和求平方根【解題思路】這里我們forn37整除的整數(shù)這些數(shù)求和;然后把和轉(zhuǎn)化為雙精度型數(shù)據(jù),利用開平方函數(shù)sqrt()求出這個和數(shù)的平doublecountValue(int xy= fbr(i=l;i<n;if(i%3==0&&xy+=return37整除的整數(shù)的條件為:i%3==0&&i%7==0;在求和的平方根首先要把和9IN.datN(N<200)實數(shù),RData()N個實數(shù)并存originalCalValue,要求實現(xiàn)的功能有:N個實數(shù)的平均值 N個實數(shù)的整數(shù)部(sumint)以及小數(shù)部最后調(diào)用函數(shù)WData()把所求的結(jié)果輸出到文件OUT.dat注意:部分源程序己給出。請勿改動主函數(shù)main。、讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)#include<stdio.h>#include<conio.h> MAXNUM200 aver=0.0; sumint=0; sumdec=0.0;intRData(void);void for(i=0;ivMAXNUM;if printf(”數(shù)IN.datprintff平均值=%.21f\n",printff小數(shù)部分之和=%.2If\n”,sumdec);int i=if((fp=fopen(,,IN.datH,HrM))==returnwhilereturnvoid fp=fopen(,,OUT.datn,【題目分析】分析題目可知,CalValue函數(shù)2個功能N個實數(shù)的平(aver);N個實數(shù)的整數(shù)部分之和(sumint)以及小數(shù)部分之和(sumdec)。這里我們可以利用for循環(huán)語句對數(shù)組origina口中的每一個實數(shù)逐個進行處理。對于每一個實數(shù)originalu],在其數(shù)據(jù)前面加上(int)就得到這個實數(shù)的整數(shù)部分用original[i]減去(int)original[i]就得到這個實數(shù)的小數(shù)部分。然后分別求出MAXNUM個實數(shù)的和(sum)分的和(sumint)、小數(shù)部分的和(sumdec)最后用sum除以MAXNUM就得到平均值(aver)。void for(i=0;ivMAXNUM; sumint=sumint+(int)original[i];x=original[i]-(int)original[i];sumdec=sumdec+x;sum=容錯分析實數(shù)分成整數(shù)部分和小數(shù)部分,在實數(shù)前面加上(int)就實數(shù)減去整數(shù)部分就得到小數(shù)IN.dat300個四位數(shù),并已調(diào)用RdataOaprimeNum(),其功能是:求出所count,再把所有滿足此條件的四位數(shù)依次存b中,然后b的四位數(shù)按從小到大的順序進行排序。最后調(diào)用寫函數(shù)Wdata(),把結(jié)果輸出到OUT.dat文件中。例如,5591素數(shù),則該數(shù)滿足條件存b中,count=count+l。9812則該數(shù)不滿足條件,b中,count值1注意部分源程序已經(jīng)給出。程序中己定a[300]、b[300],已定義變量count。#include intisP(int for(i=2;i<m;i-H-if(m%i=returnreturnvoidprimeNum for(i=0;i<300;void fp=fbr(i=0;i<count;i-H-main for(i=0;i<count;i++)printf("b[%d]=%d\n",i,b[i]);【題目分析】分析題目可知,本題只要實現(xiàn)primeNum()函數(shù)的功能即可。primeNum()要實現(xiàn)的功能是:求出所有這些四位數(shù)是素數(shù)的個數(shù)count,再把所有滿足此條件的四位數(shù)依次存入數(shù)組b對數(shù)組b因此解答本題的關(guān)鍵在【解題思路】用for循環(huán)對300個整數(shù)調(diào)用子函數(shù)isP(a[i])進行判斷其是否是素數(shù),如果是素數(shù),則把a[i]賦b,同時計count1。最后利用雙b中的元素void{intj,i,for(i=0;i<300;i++) for(i=0;i<count-l;for(j=i+l;j<count;j-H- fori+1開始直到count序的功能是:把S字符串中的所有字符左移一個位置,字符串中的第一個字符移到最后。請編寫函數(shù)change(char*s實現(xiàn)程序要求,最后調(diào)用函數(shù)readwriteDAT從IN.dat文中讀取50組分且把結(jié)果輸出到OUT.dat文件中。例如,s字符串中原有內(nèi)容為:Mn.l23xyZ,調(diào)用該函注意:部分源程序己經(jīng)給出。請勿改動主函數(shù)main和輸出數(shù)據(jù)函數(shù)readwriteDAT()#include<string.h>#include<stdio.h> N81voidvoid printff'Enterastringprintff'Theoriginalstringis:printff'Thestringaftermodified:");void *rf,rf=fbpen(,,IN.datn,wf=for(i=0;i<50; 用rintRwf,”%s\n”,【題目分析】分析題目可知,本題只要實現(xiàn)change(char*s要實能是把s字符的所有字符左移一個中的第符移到因此解的關(guān)鍵在于如何將字符串拆分成單個字符并賦值給數(shù)組,并組的下標將字符逐一位?!窘忸}思路】首先用字符串函數(shù)strlen求出字符串s的長度,賦strl;首字符賦給字符變量chfor循環(huán)語句中,i0遞增到strLl,字符串s中的所有字符左移一個位置;最后把字符變量ch的值賦給*(s+strl-l),即完成了題目要求的void i, ch=for(i=0;i<strl-l;*(s+i)=容錯分析:在字符串左移時要首先把首100以內(nèi))count以i之和sumprimeNum(實現(xiàn)程序要求的功能,writeDat(),countsum輸出到文件OUT.dat中。#include count,intisPrime(int i,tag=for(i=2;tag&&i<=number/2;i-H-if(number%i=tag=returnvoidvoid fp=fbpen(,,OUT.dat,\void count=sum=printf("滿足條件的整數(shù)的個數(shù)=%d\n",【題目分析】分析題目可知,本題只要實現(xiàn)primeNum(函數(shù)即可。primeNum()要實現(xiàn)的功能是找出所有100以內(nèi)(含100)滿足ii+4i+10都的整數(shù)i(i+10也在100以內(nèi))的個數(shù)count以及這些i之和sum因此解答本題的關(guān)鍵在于”i、i+4、i+10都是素數(shù)"條件轉(zhuǎn)換成C語言表達式?!窘忸}思路】fbr循環(huán)語句中i290,isPrime(),用來判斷i、i+4、i+103數(shù)是否成立,如果成立,count1i加到sum上,求得這些i的和。voidprimeNum intif(isPrime(i)&&isPrime(i+4)&& i+10100以內(nèi),所以i290一個字母,如果a,則改寫成字母z。大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不變,最后把已處理的字符串仍按行重新存入字符串數(shù)組string中。最后調(diào)用Wdata(),string輸出到文件OUT.dat中。Wdata()的#include<stdio.h>#include<string.h>#include<conio.h> /*文章的總行數(shù)intvoidvoidvoid int i= if((fp=fopen(”IN.dat"JT))==returnwhile(fgets(string[i],80,fp)!= p=strchr(string[i],returnvoid fbr(i=0;i<maxline; printf(n%s\n'\fprintf(fp,"%s\n",【題目目本題只要實現(xiàn)ConvertCharDConvertCharD要實現(xiàn)的功能是以行為單位把中的所有小寫字母改寫成該字母的上一個如果是字母a,則改寫成字母z。大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不變。最后把己處理的字符串仍按行重新存入字符串數(shù)組string如何實現(xiàn)字【解題思路】for循環(huán)語中當自0maxline時,就完成了對一篇文章中每一a,就用字符zb,而z的ASCII碼值,就對其ASCII碼值減1?!局R拓展】字符間的轉(zhuǎn)換可ASCH值來ASCH值比上ASCII【答void for(i=0;i<maxline; pf=while *pf=elseif(*pf>='b'&&*pf-=容錯分析:判斷字符的范圍是否b而小于等于字符Z;對a,行7或11整除的所有整數(shù),將它們放在數(shù)組an返回這些數(shù)的個數(shù)。主函調(diào)Wdata()OUT.dat注意:部分源程序已經(jīng)main()Wdata()的#include#includevoidcountValue(int*a,int intFILE巾fbpenC^ut.daf,countValue(aa,for(k=0;k<n;k-H-if((k+l)%10==fprintf(fp, aa[1000],n,k;countValue(aa,&n);for(k=0;k<n;k-H-)if((k+l)%10=printf(^^%5d\n^^,【題目分析】分析題目可知,本題只要實現(xiàn)countValue()函數(shù)的功能即可。count 將它們放在數(shù)組a中并通過n返回這些數(shù)的個數(shù)。因此解答本題的關(guān)鍵在于如何將一個指定的關(guān)系轉(zhuǎn)換為C語言表達式。i%7=0&&i%lli%7&&i%ll==0的邏輯判斷,如果其中一個表達式成立,則把數(shù)字i輸an1,數(shù)組指針a向后移動一位。voidcountValue(int*a,int int*n=if(i%7=0&& *a= *a=*n=711711整除的整數(shù)的條或i%7&&i%ll==0,其一定成立已知數(shù)據(jù)文件IN.dat中存有300個四位數(shù),并已調(diào)用讀函數(shù)Rdata()把這些數(shù)存入數(shù)組a中,請編寫函數(shù)primeCal(),其功能是:求出這些四位數(shù)中素數(shù)的個數(shù)count,再求出所有滿足此條件的四位數(shù)的平均值A(chǔ)vel以及不滿足此條件的四位數(shù)的平均值最后調(diào)用寫函數(shù)Wdata(),把結(jié)果 Ave2輸出到OUT.dat文件中。例如,5591是素數(shù),則該數(shù)滿足條件計算Avel,count=count+l。9812素數(shù),則該數(shù)不滿足條件計算注意:部分源程序己經(jīng)給出。程序中己定義數(shù)組a[300],己定請勿改動主函 讀函數(shù)Rdata()和寫函數(shù)Wdata()的內(nèi)容 Avel=0.0,Ave2=intisP(int if(m%i==returnreturnvoid fp=for(i=0;i<300; void 巾 fprintf(fp,H%d\n%7.2f\n%7.2f\nn,count,Avel, printf(ncount=%d\nAvel=%7.2f\nAve2=%7.2f\n",count,Avel,【題目分析】分析題目可知,本題只要實現(xiàn)PrimeCal函數(shù)的功能即可。PrimeCalo要實現(xiàn)這些四位數(shù)中是素數(shù)的個數(shù)count,再求出所有滿足此值A(chǔ)vel以及不滿足此條件的四位數(shù)的平均值因此解答本題的關(guān)鍵在于如何判斷一素數(shù)。for循環(huán)語句中當1299時,對數(shù)組a中的每一a[i]調(diào)否則把a[i]Ave2上。當退出循環(huán)時,Avel除以count就得到所有滿足此條件數(shù)的平均值,用Ave2除以300-count就得到所有不滿足此條件的四位void for(i=0;i<300; Avel=容錯分析:退出for循環(huán)時,變量Avel的值是所有滿足條件的四位數(shù)的和;變量Ave2的值下列程序的功能是:尋找并輸出11999之間的數(shù)m,它滿足 m2和m3均為回文數(shù)。所謂回文數(shù)是指各位數(shù)字左右對稱的整數(shù),例如121、676、94249等。滿足上述條件的數(shù)如m=l1,m2=121,m3=1331皆為回文數(shù)。請編寫函數(shù)intpalindromevalue(longn)實現(xiàn)功能:如果是回文數(shù),則函數(shù)返回1,反之則返回0。最后,把結(jié)果輸出到文件OUT.dat中。注意:部分源程序已給出。請main()的#include<stdio.h>#include<stdlib.h>#includeintpalindromevalue(long out for(m=ll;m<1000;if(palindromevalue(m)&&palindromevalue(m*m)&& printR"m=%41d,m*m=%61d,m*m*m=%8ki\n",m,m*m,m*m*m);fprintf(out,nm=%41d,m*m=%61d,m*m*m=%81d\nu,m,m*m,m*m*m);【題目分析】分析題目可知,本題只要實現(xiàn)palindromevalue函數(shù)的功能即可。palindromevakie要實現(xiàn)的功能是:尋找并輸出11至999之間的數(shù)m,它滿 m2和均為回文數(shù)。因此解答本題的關(guān)鍵在于如何判斷m是【解題判斷數(shù)字是否為回要對比該數(shù)字的對立的數(shù)是否相等這里我把要判斷是否是回文數(shù)的數(shù)字通過Itoa將其拆分成單個并存入到一個字符數(shù)組中,然后從字符數(shù)組的開始位置時向其中間位置逐個字符的進行比較如果首尾位置的兩個字符不則退出說明這個數(shù)不是回如果比較中間位置時都則說明這個數(shù)字是回文數(shù)。intpalindromevalue(long{inti,strl,half;chartemp[20];ltoa(n,temp,for(i=0;i<half;if(i>=return容錯分析:字符串尾部指針的自減為-str,17請補充程序,使得程序能實IN.dat200numbercntl和偶數(shù)的個數(shù)以及數(shù)組number下標為偶數(shù)的元素值的算術(shù)平均值ave2位小數(shù))。ave輸出到OUT.dat注意:部分程序、讀數(shù)據(jù)函數(shù)read_dat(intnumber[200])#include<conio.h>#include<stdio.h>#defineN200voidread_dat(int fp=fbpen(nIN.datn,fbr(i=0;i<20; cntl,cnt2, j= fw=fopen(,'OUT.datM,【題目分析】分析題目可知,本題程序要實現(xiàn)的功能是從文件IN.dat200個整數(shù)至number中,求出奇數(shù)cntl和偶數(shù)cnt2以number下標為偶數(shù)的元素值的算術(shù)平均值ave(保留2位小數(shù)),而讀取數(shù)據(jù)的程序題中己經(jīng)給出。因此只要編寫求出數(shù)組中奇數(shù)的個數(shù)和偶數(shù)的個數(shù),以及下標為偶數(shù)的所有元素的平均值即可?!窘忸}思路】在fbr循環(huán)語句中,對數(shù)組number中的每一個元素21,numberw是奇數(shù),奇數(shù)的個數(shù)變量cntl1,否則偶數(shù)的個數(shù)變量cnt21。number下i2numbcr[i]j相加。退j的值除以(N/2)得number下標為偶數(shù)的元素值的算術(shù)平均值,成單精度實數(shù)賦for(i=0,j=0,ent1=0,cnt2=0;i<N; ifif(i%2=j+=容錯分析:在進行求算術(shù)平均值的時候,要把函數(shù)Rdata()實現(xiàn)從文件IN.dat中讀取一篇英文存入到字符串數(shù)組string請編寫函數(shù)CharRight(),其功以行為單位把字符串中的最后一個字符的ASCII值右移4位后加倒數(shù)第二個字符的ASCII值,得到最后一個新的字符;倒數(shù)第二個字符的ASCII值右移4位后加倒數(shù)第三個字符的ASCII值,得到倒個新的字符;依此一直處理到第二個第一個字符的ASCH值加原最后一個字符的ASCH得到第一個新的得別存放在原字符串對應(yīng)的位最后己處理的字符串仍按行重新存串數(shù)組string中。最后調(diào)用函數(shù)Wdata(),把結(jié)果string輸出到文件OUT.dat中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符(含標點符號和空注意:部分源程序己經(jīng)給出。請勿改動主函 讀函數(shù)Rdata()和寫函數(shù)Wdata()的#include<string.h>#include<conio.h> /*文章的總行數(shù)intvoidvoid int if((fp=fopen(”IN.dat”,T))==return returnvoid fpfor(i=0;i<maxline; 實現(xiàn)的功能是:按"將字符的ASCII值右移4位并加上該字符前面的一個字符的ASCII值等到新的字符,然后存在原位"的替代關(guān)系,將字符串數(shù)組string中的字符全部替換。因此解答本題的關(guān)鍵在于讀取字符串數(shù)組中的字符,然后轉(zhuǎn)換成ASCII碼值,最后進行替換運算【解題這里我們通過for循環(huán)語句來實現(xiàn)讀取字符串的所有當自變量i從0遞增到maxline就完成了對一篇文章每一行的對一行的字符串首先利串函數(shù)strlen求出字符串數(shù)組string[i的長度輸給變量strl,把字的最后一個字符賦給然后在for循環(huán)語自變量j從strl-l遞減到0對每一個字符的ASCII值右移4位,右移4位的字符與其前一個字符相加,兩者的和仍然存入字string[i][j]中;最后替換第一個字符ASCIIch相加,得到第一個新的void i,j, for(i=0;i<maxline; strl=strlen(string[i]);ch=string[i][strl-l];for(j=strl-l;j>O;j-) string[i皿string[i][j]+=string[i][j-string[i][0]+=ASCII4位,用表達式string[i皿》=4已知數(shù)據(jù)文件IN.dat中存有200個四位數(shù),并已調(diào)用讀函數(shù)rdata()把這些數(shù)存入數(shù)組a 其功能是:如果四位數(shù)每位上的數(shù)字均是0、2、4、6或8,則統(tǒng)計出滿足此條件的四位數(shù)的個數(shù)count,并把這些四位數(shù)按從大到小的順序存入數(shù)組b中。最后maino函數(shù)調(diào)用寫函數(shù)wdata(),把結(jié)果count以及數(shù)組b中符合條件的四位數(shù)輸至lJOUT.dat 己定義變量請勿改數(shù)IN.dat中的任何數(shù)據(jù)及主函數(shù)rdata()和wdata() MAX a[MAX],b[MAX],count=voidvoid fp for(i=0;ivMAX; "%dj, fpfor(i=0;i<count;Srintfg"%d\n”,void printf(”滿足條件的數(shù)=%d\n”,fbr(i=0;i<count;i-H-【題目分析題目題中需要問題就是實現(xiàn)evenvalue函數(shù)的功能而evenvalue函數(shù)的功能是:統(tǒng)計滿足"四位數(shù)每位上的數(shù)字均是0246或8的數(shù)字個數(shù)count,并四位數(shù)按從大到小的順序存入數(shù)組b因此本題的關(guān)鍵在于如何判的每位數(shù)都滿足條件,之后就可以通過一個for循環(huán)來對這200個數(shù)逐個判斷?!窘忸}思路】解答本題可分為以下4個1步:分解出這個四位數(shù)的每位數(shù)字。a[i]1000a[i]的千位上的數(shù)字,bb[O](這里要定義一個數(shù)組a[i]1000求余數(shù)100a[i]百位上的數(shù)字存入用a[i]10010得到a[i]十位上的數(shù)字存入用a[i]10求余得到a[i]的個位上的數(shù)字,然bb[3],這bb[4]就a[i]的每位上2步:判斷每位數(shù)字是否為"02468"。這bb[4]中2求余,如果每個元素的0,02468,flag1這里要定義一Hag),flag0。3步:將符合條件的數(shù)存入數(shù)組b[count]中。這里只要對flag進行判斷即可,即如果flag的值為1,則說明a[i]各位上的數(shù)字均是0或2或4或68。把a[i]的值賦給數(shù)組b[count],變量count1。在for語句執(zhí)行完成后,就200個四位數(shù)中所有符4步:執(zhí)行for語句b的各元素進行從大到小void i,j,k,for(i=0;i<200; bb[0]=a[i]/1000;bb[l]=a[i]%1000/100;bb[2]=a[i]%100/10;bb[3]=a[i]%10; j<4; if(bb[j]%2= Aag= flag=if(flag= b[count]=for(i=0;i<count-l;for(j=i+l;jvcount;j-H- k=b[i];b[i]=本題主要考點:求余運算、fbr循環(huán)語句、函數(shù)RData()實現(xiàn)從文件IN.dat中讀取一篇英文文章存StrResult請編寫Strmove()函數(shù),其功以行為單位,依次把字符串中所有小寫字母"o"左邊的字符串內(nèi)容移到該的右邊存放,然后把小寫字母刪除,余下的內(nèi)容移到已處理字符之后把已字符串仍按行重新存串數(shù)組StrResult最后main()函數(shù)調(diào)用函數(shù)WData(),把結(jié)果StrResult輸出到文件OUT.dat原始數(shù)據(jù)文件存放的格式的寬度均小于80個含標點符號和空格。例如,原文:nanyfield.Yucancreateanyouhavethe結(jié)果:nanyfield.Yucancreateanrd.yuhavethe注意:部分源程序己經(jīng)給出。請勿改動主函數(shù)RData()和#include<stdio.h>#include<string.h>#include maxline0;/*文章的總行數(shù)intvoid int if((fp=fopen(,,IN.datH,HrM))==returnwhile(fgets(StrResult[i],80,fp)!= *p=return0;void for(i=0;i<maxline; 【題目解答本題的關(guān)鍵點在于讀懂弄清題目分析題目題中需要解決的問題就是實現(xiàn)Strmove函數(shù)而Strmove函數(shù)的功能是:輸出以行為單位依次把字符串寫字母o字符串內(nèi)容移到該串的右邊然后把小寫字余下的字符串內(nèi)容移到已處理的左邊之處理的仍按行重新存串數(shù)組StrResult中的所有因此本題的關(guān)鍵在于如何判斷字符串中的某個字符是否為"0",可以通過一個for循環(huán)來對整個文章進行判斷。本題從每一行字符串的頭對每一行的字符串首先從的結(jié)尾處循環(huán)判斷當前字符是否"0",如果是,就把當前除并把串拷貝串數(shù)組buf最后串數(shù)組buf拷貝串數(shù)組StrResult[i這樣就實現(xiàn)了題目的要求。void for(i=0;i<maxline; j=strlen(StrResult[i])-StrResult[i][j]=strcpy(buf,while strcat(buf,StrResult[i][j]=strcat(buf,strcpy(StrResult[i],容錯分析注意每行的字符80,所buf的80。strcat的連接,函數(shù)strcpy是字函數(shù)RData(實現(xiàn)從文件IN.dat中讀取一篇英文文章并存入到字符串數(shù)組StrResult中,請編寫函數(shù)StrRes(),以行為單位以空格或標點符號為分隔的所有單詞進行倒排。最后把己字符串(應(yīng)不符號)重新存串數(shù)組StrResult最后調(diào)用函數(shù)WData(),把結(jié)果StrResult輸出到文件OUT.dat原始數(shù)據(jù)文的格式是:每行的寬度均小于80個含標點符號和空格。例如,原文:YouHeIama結(jié)果:MeHestudentaam注意部分程序已給出。請勿改動主函 讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)的#include<stdio.h>#include<string.h>#include<conio.h>#include /*intRData(void);voidWData(void);charStrRes(void)void int i= if((fp=fopen(,,IN.datH,HrH))==returnwhile(fgets(StrResult[i],80,fp)!= p=maxline—return fp=fbpen(HOUT.datM,for(i=0;i<maxline;3單詞為單位將每行中(即逆排);中的標點符號不顯示出來;重新存到數(shù)組StrResult中,并輸出到Out.dat文件中。【解題思路】根據(jù)上面第1步:確定如何判斷一個單詞結(jié)束和如何判斷一行結(jié)束。如果函數(shù)的值為零時,說明一個單詞結(jié)束;如果變量i的值小于零,第2步題中要求最后輸出的結(jié)果不能包含標點有非英文字母和非空字符改成空第3步:用臨時字符串數(shù)組ch和pp作為中轉(zhuǎn)數(shù)組將每行的字符從行尾到行頭進行置換。置換的方法是:首先把數(shù)組pp中的每一個元素都向后移動一個位置,然后把StrResult[l]國存入數(shù)組元素PP 接著變量k加1,變量i減1,依次循環(huán)直到變量i減到零,即對一行的字符處理完畢。4最后把字符串數(shù)組ch的內(nèi)容拷貝到字符串數(shù)組StrResult[l]中來實現(xiàn)倒【答char i,j,k,strl,for(i=0;i<maxline;for(j=0;j<(int)strlen(StrResult[i]);if(!isalpha(StrResult[i][j])&&StrResult[i][j]!=' ch[80]= pp[80]=strl=i=strl-k= while(isalpha(StrResult[l][i])&&i>= ppU+l]=pp[j];strcat(ch,while(!isalpha(StrResult[l][i])&&i>= fbr(j=k;j>=O;j-pp[j+l]pp[0]=strcat(ch,k=strcpy(StrResult[l],容錯分柝字符串的倒排要考慮字符為英文字符和非英文字符兩種情況,出錯者往往慮到非英文字符的str字符串中的所有字母改寫成該字母的下一個z成字 要求大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不做改變請編CharChange(char*str)實現(xiàn)程序要求,最后調(diào)RWData()從IN.dat文50組數(shù)據(jù),分別得出結(jié)果,并把結(jié)果輸出到文件OUT.dat例如,str字符串中原有的內(nèi)容為:Mn.l23Zxy,則調(diào)用該函注意:部分程序已經(jīng)給出。請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)RWData()#include<conio.h>#include<string.h>#include<stdio.h>#include<ctype.h> N81voidRWData();voidCharChange(char printff'Theoriginalstrtringistr:printff'Thestrtringaftermodified *rf,for(i=0;i<50; fscanf(rf,**%strM,a);【題目分析】分析題目可知,題中需要解決問題就是實現(xiàn)CharChange函的功能問題,而CharChange函數(shù)的功能是:實"把str字符串的所有字母改寫成該字母的下一個字母,字母z改寫成字母 要求大寫字母仍為大寫字母,小字母仍為小寫字母其他字符不做改變”。因此本題的關(guān)鍵在于如何判斷將字符串拆分成單獨字母之后就可以通過一個循環(huán)來將所有字符逐個替換并存入數(shù)組str中。【解題思路】首先要考zZ的處理,因zZ的ASCII值a和A的ASCII25,所以要z和Z改寫成字符a和A,只需要用字符z和Z的ASCII25,就得aAASCII值;對其他的字符,只需要對1,就得到其ASCII值。voidCharChange(char{while if(*str=-z*||*str=-elseif*str+=容錯分析:zZ的ASCII25就得到字符aAASCII己知在文件IN.dat中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由品代碼code(字符型4位)、產(chǎn)品名稱nam(字符型10位)、單價upric(整型)、數(shù)量amoun(整型)、金額sum(長整型5部分組成其中金單價X數(shù)量函數(shù) 讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫AscendSort函數(shù),其功能是按品名稱從小到大進行排列若產(chǎn)品名稱相等則按金額從小到大進行排列終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中最后調(diào)用函數(shù) 把結(jié)果輸出到文件OUT.dat中。注意部分程序己給出。請勿改動主函 讀數(shù)據(jù)函 和輸出數(shù)據(jù)函#include<stdio.h>#include#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct /*產(chǎn)品代碼 /*產(chǎn)品名稱 /*單價 /*數(shù)量 /*金額} voidvoidvoidvoid memset(sell,0, fp= memcpy(sell[i].code,str,memcpy(sell[i].name,str+4,memcpy(ch,str+14,ch[4]=memcpy(ch,str+18,sell[i].sum=(long)sell[i].uprice*void fp=fbpen(',OUT.datn,for(i=0;i<100; printf("%s%s%4d%5d%5d\n'',sell[i].code,sell[i].name,sell[i].uprice, %5d\n",sell[i].code,sell[i].narne,sell[i],amount,【題目分析】分析題目可知,題中需要解決的問題就是實現(xiàn)AscendSort而AscendSort函數(shù)的功”按產(chǎn)品名稱從小到大進行排列,若產(chǎn)品名稱金額從小到大進行最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell因此本題的關(guān)鍵在于對數(shù)組進行排序?!窘忸}思路】要實現(xiàn)產(chǎn)品從小到大就需要兩個整型變量j分別來記錄當前和后一個要用一個雙重循環(huán)來對100個產(chǎn)品的記錄進行重循環(huán)中用字較函數(shù)strcmp()對兩個產(chǎn)品名稱進行并將小的往大的往實品名稱從小到大進行如果產(chǎn)品名稱則比較這兩的金額實現(xiàn)按產(chǎn)品金額從小到大進行排序的功能。void for(i=0;i<99;i-H-forif(strcmp(sell[i].name,sell[j].name)> temp=sell[i];sell[j]=temp; if(sell[i].sum>{temp=sell[i];sellfj]=temp;容錯分析:字符類型的兩個數(shù)據(jù)進行比較要用到字符串比中,請編寫函數(shù) 其功能是若一個四位數(shù)的千位上的數(shù)字值小于等于百位上的數(shù)字值百位上的數(shù)字值小于等于十位上的數(shù)字值以及十位的數(shù)字值小于等于個位上的數(shù)字值,并且該位數(shù)是偶數(shù),則統(tǒng)計出滿足此條件的個數(shù)count,并把這四位數(shù)按從小到大的順序存入數(shù)組b中最后調(diào)寫函數(shù)WData(),把結(jié)果count以及數(shù)組b中符合條件四位數(shù)輸出到OUT.dat文件中。程序中己定義數(shù) b[200],己定義變注意;部分程序已經(jīng)給出。請勿改動數(shù)據(jù)文件IN.dat中的任何數(shù)據(jù)及主函 #include MAX a[MAX],b[MAX],count=voidvoid fp=fbpen(,,IN.datn,for(i=0;ivMAX;void fp=fopen(nOUT.dat'\fbr(i=0;i<count;void 【題目分析】分析題目可知,題中需要問題就是實現(xiàn)evenVal函數(shù)而evenVal函數(shù)的功能是統(tǒng),若一個四位數(shù)的千位上的數(shù)字值小于等于百位上的數(shù)字值,百位上的數(shù)字值小于等于十位上的數(shù)以及十位上的數(shù)字值小于等于個位上的數(shù)字值,并且該四位數(shù)是偶數(shù)"條件的個數(shù)count,并四位數(shù)按從小到大的順序存入數(shù)組b中。因此本題的關(guān)鍵在于如何將一個四位數(shù)拆分成單個數(shù)字?!窘忸}思路】首先用一個四位數(shù)除以1000,就得到這個四位數(shù)的千位上的數(shù)字,賦用這個四位數(shù)對1000求余數(shù),余數(shù)再除以100,就得到這個四位數(shù)的百位上的數(shù)字,賦給變量用這個四位數(shù)對100求余數(shù),余數(shù)再除以10,就得到這個四位數(shù)的十位上的數(shù)字,賦給變量用這個四位數(shù)對10求余數(shù),余數(shù)就是這個四位數(shù)的個位上的數(shù)字,賦給變量然后如果 a[i]%2==0同時成立,則a[i]就是要求的數(shù)把a[i]賦給b[count],同時變量count加1。最后對數(shù)組b中的數(shù)據(jù)從小到大進行排序 al,a2,a3,a4,for(i=0;ivMAX; ala2=a3=if((al<=a2)&&(a2<=a3)&&(a3<=a4)&&(a[i]%2= for(i=0;i<count-l;for(j=i+l;j<count; b[i]=b[j]=k;容錯四位數(shù)對1000求余數(shù),余數(shù)再除以100,就得到這個四位數(shù)的百a[i]%204個條件同時a[i]就是要求下列程在三位整數(shù)(100999)中尋找符合條件的整數(shù)并依次從小到大存入數(shù)該整數(shù)全平方數(shù),又有兩個數(shù)字例如144、676請編寫函數(shù)SearchVal(實現(xiàn)此滿足該條件的整數(shù)的個數(shù)通過的函數(shù)最后調(diào)用函數(shù)把結(jié)果輸出到文件OUT.dat中。注意:部分源程序已給出。請勿改動主函數(shù)maino和寫函數(shù)WData()的#includeSearchVal(intvoidWData(intnum,int out printff%d\n",num); for(i=0;i<num;i++) b[20],num;num=SearchVal(b);WData(num,b);【題目分析】分析題目可知,本題只要實現(xiàn)SearchValoSearchVal()要實現(xiàn)兩個功 100999中既是完全平方數(shù),又有兩個數(shù)字相同的數(shù)些數(shù)按從小到大的順序存入一個數(shù)【解題首先我們來確定如何判斷一個數(shù)是平方數(shù):如果一個三位整數(shù)是完全平方數(shù),則其平一個兩位數(shù),所以循環(huán)自變量從10當然題目要求是100999因此當i*i大于等于10000就停止循環(huán)。然后我們來判斷求出的平方數(shù)是否有兩個一樣的數(shù)字:第1步,先求出該數(shù)的每位數(shù)字,用i*i除以100得到三位數(shù)的百位數(shù)字,用i*i除以10再對10求余數(shù)得到三位數(shù)的十位數(shù)字,用i*i對10求余數(shù)得到三位數(shù)的個位數(shù)字,分別賦給整型變量 第2步判斷c這3個數(shù)字是否兩兩相等,如果兩兩相等那么這個三位數(shù)就是所求的數(shù)字然后把 i,a,b,c,ent=0;for(i=10;i*i<1000;i++) a=b=if(a==b||b==c||bb[cnt-H-]=return容錯分析:判 c這3個數(shù)字是否兩兩相等應(yīng)該用表達式a==b||b=c||c==a來表示個表達式之間的關(guān)系是或26IN.dat300并已調(diào)用RData()把這些數(shù)存入數(shù)組a中,請編jsVahie(),其功能是:求出千位數(shù)上的數(shù)減百位數(shù)上的數(shù)減十位數(shù)上的數(shù)減個位數(shù)上的0count,再把所有滿足此條件的四位數(shù)依次存b至lJOUT.dat文例如,9123,9.1.23>0,則該數(shù)滿足條件存入數(shù)組6中,且個數(shù)(:011m=(:011N+1。9812,9.8.1-程序中己定義數(shù)組 己定義變注意:部分程序已經(jīng)給出。請勿改動主函 讀函數(shù)RData()和寫函數(shù)WData()的 a[300],b[300],count=voidvoid for(i=0;i<300; void fbr(i=0;i<count; prints,,count=%d\nn,for(i=0;i<count;i-H-【題目分析】分析題目要實現(xiàn)jsValue函數(shù)的功能函數(shù)jsValue要實現(xiàn)的功能是求出千位數(shù)上的數(shù)減百位數(shù)上的數(shù)減十的數(shù)減個位數(shù)上的數(shù)count,再把所有滿足此四位數(shù)依次存入數(shù)組b然后對數(shù)組b的四位數(shù)按從小到大的順序進行排序。因此解答本題的關(guān)鍵在于如何的各位上的數(shù)字拆分成單個數(shù)字?!窘忸}思路】對于每一個四位數(shù),用這個四位數(shù)除以1000,可得到這個四位數(shù)的千數(shù)字輸給變量這個四1000余然后100,可得到這個四位數(shù)百位上的數(shù)字輸給變量這個四100求余然后10,可得到這個四位數(shù)十位上的數(shù)字輸給變量這個四位數(shù)對10求余,可得到這個四位數(shù)個位上的數(shù)字輸給變量然后判斷表達式thou-hun-ten-data0,如0,則這個四位數(shù)是滿足題目條件的數(shù)字,這個b,同時計count1。最后利用兩重循環(huán)b的元27函數(shù)Rdata()實現(xiàn)從文件IN.dat中讀取一篇英文文章存入到字符串數(shù)組string中,請編寫 其功能是:以行為單位把字符串中所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,則原字符保持不變,否則就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串對應(yīng)的位置上。最后把已處理的字符串仍按行重新存入字符串數(shù)組string中,最后調(diào)用函數(shù)Wdata(),把結(jié)果string輸出到文件OUT.dat中。注意:部分源程序己經(jīng)給出。請勿改動主函數(shù)讀數(shù)Rdata()和輸出數(shù)#include#include#include /*文章的總行數(shù)intvoidvoidvoid if int if((fp=fopen(nIN.datH,V))==returnwhile(fgets(string[i],80,fp)!= p=strchr(string[i],*p=returnvoid fp=fbpen(,^OUT.dat,^,for(i=0;i<maxline; 【題目分析題目要實現(xiàn)CharLeRCharLeR要實現(xiàn)的功能是行為單位把字的所有字符的ASCII值左移4如果左移后其字符的ASCII于等于32或大于100,則原字符保持否則就把左移后的字符ASCII值再字符ASCII值,得到新的字符仍存入原字符串對應(yīng)的位因此解答本題的關(guān)鍵在于如何實現(xiàn)字以及ASCH值的左移運算。【解題思路】fori0maxline時,就對一行的字符串數(shù)組,首先利用字符串函數(shù)strlen求出字符串數(shù)組stringb的for循環(huán)語j0str時,對ASCII4432100,如果條件成立,則原碼值與左移4位后得到的字符的ASCII碼值相加,相加之和仍然void for(i=0;i<maxline; ch=if(ch>32&&string[i][j]+=容錯分析:ASCII4位,string[i][j]vv4已知IN.dat中存有若干個?200)RData()讀取這若干個正整數(shù)并存入數(shù)組original中。請編寫函數(shù)CalValueo,其功能要求是求出這個文件中共有多少個正整數(shù)totNum;求這些數(shù)右移1位后,產(chǎn)生的新數(shù)是偶數(shù)的數(shù)的個數(shù)toteven,以及滿足此條件的totavg。最后調(diào)用函數(shù)WData()把所求的結(jié)果輸出到OUT.dat文件中。注意:部分程序己經(jīng)main。、RData()WData()#include<stdio.h>#include<conio.h> MAXNUM200 totNum=0; toteven= totavg=intRData(void);voidWData(void);voidCalValue(void)void fbr(i=0;ivMAXNUM; printR”文件IN.dat中共有正整數(shù)=%d個\n”,totNum);printf("符合條件的正整數(shù)的個數(shù)=%d個m",toteven);printff平均值=%.2f\n",totavg);int i=if((fp=fopen(',IN.daf,,V))==returnwhilefscanfiffp,M%d,n,returnvoid fp=fopen(nOUT.datn,fprintf(fp,H%d\n%d\n%6.2f\nu,totNum,toteven,totavg);2個功能:求出這個文件中共有多少個正整數(shù)totNum;求這些1位后,產(chǎn)生的新數(shù)是偶數(shù)的數(shù)的個數(shù)toteven,以及滿足此條件的這些數(shù)(右移前的值)的算術(shù)平均值totavg。因此解答本題的關(guān)鍵在于如何一個數(shù)是否為正整數(shù),如何將數(shù)右移和判斷一個數(shù)【解題思路】在循環(huán)語句中對數(shù)組original中的每個數(shù)進行判斷,如果這0,則退出循環(huán)進入下輪循環(huán),如果0,totNum加1;然后對當前這個數(shù)1得到新數(shù)字,用這個新2余數(shù),如果0,則說明這個新數(shù)的變量toteven加1,并且把當前這個數(shù)字和變量totavg對數(shù)組original中所有數(shù)掃描完變量totavg的值就是符合條件的數(shù)字然后用這個和除以符合條件的數(shù)的個數(shù)變量toteven,就得到了符合條件的數(shù)字的算術(shù)平均值。void i,for(i=0;ivMAXNUM; ifif(original[i]>totNum-H-if(data%2= toteven-H-totavg+=totavg/=中,請編寫函數(shù)spellValo,其功能是:把千位數(shù)字和十位數(shù)字重新組成一個新的二位數(shù)ab(新二位數(shù)的十位數(shù)字是原四位數(shù)的千位數(shù)字,新二位數(shù)的個位數(shù)字是原四位數(shù)的十位數(shù)字),以及把個位數(shù)字和百位數(shù)字組成另一個新的二位數(shù)cd(新二位數(shù)的十位數(shù)字是原四位數(shù)的個位數(shù)字,新二位數(shù)的個位數(shù)字是原四位數(shù)的百位數(shù)字),如果新組成的兩個二位數(shù)ab-cdn0ab-cd<10且兩個數(shù)均是奇數(shù),同時兩個新數(shù)的十位數(shù)字0,則將滿足此條件的四位數(shù)按從大到小的順序存入數(shù)組b中,并要計算滿足上述條件的四位數(shù)的個數(shù)輸出到OUT.dat文件中。部分程序己經(jīng)給出。a[200]、b[200],已定義變量ent。請勿改動數(shù)據(jù)文件IN.dat中的任何數(shù)據(jù)及maino、RData和WData()的內(nèi)容。#include<stdio.h> MAX a[MAX],b[MAX],ent=0voidvoid fp=for(i=0;i<MAX;i++)void for(i=0;i<cnt;voidmain printfC滿足條件的數(shù)=%d\n",for(i=0;i<cnt;【題目分析】分析題目可知,要實現(xiàn)spellVal函數(shù)spellValo要實現(xiàn)的功能是:把千位數(shù)字和十位數(shù)字重新組成一個新的十位數(shù)a(新的十位數(shù)字是四位數(shù)的千位數(shù)字,新十位數(shù)的個位數(shù)字是原四十位數(shù)字),以及把個位數(shù)字和百位數(shù)字組成另一個新的十位數(shù)cd(新十位數(shù)的十位數(shù)四位數(shù)的個位新十位數(shù)的個位數(shù)字是原四位數(shù)的百位數(shù)字),如果新組成的兩個十位數(shù)ab-cdbO且ab-cdWIO,且兩個數(shù)均是時兩個新數(shù)的十位數(shù)字均不則將滿足的四位數(shù)按從大到小的順序存入數(shù)組b并要計算滿足上述四位數(shù)的個數(shù)count。因此解的關(guān)鍵在于如何將一個四位數(shù)的各位上的數(shù)字拆分成單個數(shù)字,并將兩個單個數(shù)字組合成一個兩位數(shù)?!窘忸}思路】對于每一個四位數(shù),用這個四位數(shù)除以1000,可得到這個四位數(shù)的千數(shù)字輸給變量thou:這個四1000求100,可得到這個四位數(shù)百位上的hun100求余然后10,可得到這個四位數(shù)十位上的數(shù)字輸ten;這個四位數(shù)對10求余,可得到這個四位數(shù)個位上的data。因為thoudata作為重新組成新的兩個二位數(shù)的十位上數(shù)字,所以其值0,組建兩個二位數(shù)之前,首先要判斷thou和data這兩個數(shù)字不能為0;然后用邏輯ab-cd^Oab-cd≤10且兩個數(shù)均為奇數(shù)的如果上述邏輯表達式成立,則這個四位數(shù)是符合題目條件的一個數(shù)字,把其存入數(shù)組b同時計count1b中元voidspellVal i,thou,hun,ten,data, ab,for(i=0;i<200; ten=if(thou==0||data==0)cd=if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==l&& b[cnt]=for(i=0;i<cnt-l;for(j=i+l;j<cnt; 容錯分析:已知數(shù)IN.dat200個四位數(shù),并己調(diào)用讀函數(shù)RData()把這aseVal(),其功能是:依次a中取出一個四位數(shù),如果該四位數(shù)連續(xù)小于該5個數(shù)且該數(shù)是偶數(shù)(該四4個數(shù),則不統(tǒng)計),則統(tǒng)計出滿足此條件的個數(shù)count并把這些四位數(shù)按從小b中。最后調(diào)用WData(),count以b中符合條件的四位數(shù)輸出到OUT.dat文件中。部分程序已經(jīng)給出。a[200]、b[200],已定義變量count。請勿改動IN.datmain()、RData()WData()#include MAX a[MAX],b[MAX],count=void fp=for(i=0;i<MAX;fccanfi(fp,n%d,n, intfprintf(fp,H%d\nn,fbr(i=0;i<count;i++)void printf(”滿足條件的數(shù)=%d\n”,fbr(i=0;i<count;printf(”%d”,IN.dat200個四位數(shù),并已調(diào)用RDatao把這a中,seVal(),其功能是:依次a中取出一個四位數(shù),如果該
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年促銷活動方案范文(63篇)
- 框架柱混凝土置換施工方案
- 企業(yè)內(nèi)部知識管理平臺建設(shè)合同
- 畢節(jié)市初一數(shù)學(xué)試卷
- 機場行業(yè)旅客安檢與登機方案
- 竹排柵施工方案
- 在線旅游平臺運營及推廣合作協(xié)議
- 巴中初三數(shù)學(xué)試卷
- 跨境電商物流信息化平臺方案
- 梅州英式花園施工方案
- 品質(zhì)異常處理及要求培訓(xùn)
- 模具部年終總結(jié)--ppt課件
- 立式熱虹吸再沸器機械設(shè)計說明書
- 國家開放大學(xué)電大《生產(chǎn)與運作管理》2025-2026期末試題及答案
- 質(zhì)量保證大綱(共14頁)
- 關(guān)于歐盟新版EMC標準EN55032的解析
- 云南省普通初中學(xué)生成長記錄基本素質(zhì)發(fā)展初一初三
- 木材材積表0.1-10米.xls
- 輕質(zhì)隔墻板安裝合同協(xié)議書范本標準版
- 車輛管理各崗位績效考核量表
- 挺身式跳遠單元教學(xué)計劃
評論
0/150
提交評論