![算法與編程實(shí)習(xí)報(bào)告_第1頁(yè)](http://file4.renrendoc.com/view/39f848fc61d0e3c5a355fb739bcc4fa5/39f848fc61d0e3c5a355fb739bcc4fa51.gif)
![算法與編程實(shí)習(xí)報(bào)告_第2頁(yè)](http://file4.renrendoc.com/view/39f848fc61d0e3c5a355fb739bcc4fa5/39f848fc61d0e3c5a355fb739bcc4fa52.gif)
![算法與編程實(shí)習(xí)報(bào)告_第3頁(yè)](http://file4.renrendoc.com/view/39f848fc61d0e3c5a355fb739bcc4fa5/39f848fc61d0e3c5a355fb739bcc4fa53.gif)
![算法與編程實(shí)習(xí)報(bào)告_第4頁(yè)](http://file4.renrendoc.com/view/39f848fc61d0e3c5a355fb739bcc4fa5/39f848fc61d0e3c5a355fb739bcc4fa54.gif)
![算法與編程實(shí)習(xí)報(bào)告_第5頁(yè)](http://file4.renrendoc.com/view/39f848fc61d0e3c5a355fb739bcc4fa5/39f848fc61d0e3c5a355fb739bcc4fa55.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
算法與編程實(shí)習(xí)報(bào)告第一題:統(tǒng)計(jì)字母的使用頻率一、題目:統(tǒng)計(jì)字母的使用頻率目的與規(guī)定1.目的:通過(guò)編寫程序統(tǒng)計(jì)字母的使用頻率,培養(yǎng)學(xué)生綜合運(yùn)用C語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力,熟悉字符串的操作辦法,加強(qiáng)函數(shù)的運(yùn)用,提高軟件系統(tǒng)分析能力和程序文檔建立、歸納總結(jié)的能力。2.基本規(guī)定:1)規(guī)定用C語(yǔ)言編程,在VisualC++環(huán)境下調(diào)試完畢;2)規(guī)定按照程序功效分成幾個(gè)功效模塊來(lái)實(shí)現(xiàn),各個(gè)功效模塊分別使用函數(shù)來(lái)完畢;3)規(guī)定應(yīng)用本課所講授的程序設(shè)計(jì)語(yǔ)言知識(shí)來(lái)解決問(wèn)題設(shè)計(jì)辦法和基本原理1.課題功效描述:本程序的功效,就是要統(tǒng)計(jì)英文字母的使用頻率。2.問(wèn)題具體描述為統(tǒng)計(jì)英文字母的使用頻率,輸入一種不涉及空格的由英文字母構(gòu)成的字符串,長(zhǎng)度不超出200個(gè)字符。統(tǒng)計(jì)26個(gè)英文字母的使用頻率,不分辨大小寫。最后按使用頻率從大到小輸出字母(小寫字母)和使用頻率(出現(xiàn)的次數(shù))。3.問(wèn)題的解決方案按照程序規(guī)定,本程序應(yīng)采用模塊化設(shè)計(jì)辦法,設(shè)計(jì)幾個(gè)功效模塊。例如(僅供參考):◆將字符串中的大寫字母轉(zhuǎn)換為小寫字母◆統(tǒng)計(jì)輸入的字符串中字母的使用頻率◆按使用頻率從大到小進(jìn)行排序主函數(shù)中控制輸入、函數(shù)調(diào)用和輸出。重要技術(shù)問(wèn)題的描述根據(jù)三的分析,重要問(wèn)題在于:1)為統(tǒng)計(jì)字母的使用頻率,定義一種長(zhǎng)度為26的int數(shù)組寄存所統(tǒng)計(jì)的各個(gè)字母的使用頻率。2)在統(tǒng)計(jì)字母的使用頻率時(shí),不要使用if語(yǔ)句或switch語(yǔ)句,運(yùn)用字母的ASCII碼與數(shù)組元素下標(biāo)之間的關(guān)系來(lái)求得。3)按使用頻率從大到小進(jìn)行排序時(shí),建議使用指針數(shù)組更為方便。創(chuàng)新規(guī)定實(shí)現(xiàn)程序功效后,可進(jìn)行創(chuàng)新設(shè)計(jì):1)使用多文獻(xiàn),即主函數(shù)和各個(gè)函數(shù)分別寄存在不同的.c文獻(xiàn)中,在頭文獻(xiàn)中進(jìn)行函數(shù)原型聲明。2)讀入一篇英文文檔,并對(duì)其進(jìn)行字母頻率分析。功效描述1.程序運(yùn)行第一步進(jìn)行模式選擇:從屏幕讀入一串字母或從文獻(xiàn)中讀取文章(從屏幕讀入時(shí)字符串長(zhǎng)度不超出200)。2.讀取文章完畢后,統(tǒng)計(jì)各個(gè)字母的使用頻率,并按從大到小的次序打印出來(lái),同時(shí),對(duì)使用次數(shù)相似的字母按字母表次序打印,對(duì)使用次數(shù)為0的字母不予打印。開(kāi)始三、解決方案(流程圖)MMain函數(shù)Chang函數(shù)(大寫字母轉(zhuǎn)換為小寫字母后返回)Mode_Num=1?Cal函數(shù)(統(tǒng)計(jì)某一字母的使用頻率)Fprint函數(shù)(按次序打印字母及使用頻率)結(jié)束Fread函數(shù)(讀入一篇文檔)YN重要函數(shù)描述1.Main函數(shù):負(fù)責(zé)變量的定義、模式的選擇及函數(shù)的調(diào)用。2.change函數(shù):負(fù)責(zé)將大小寫字母統(tǒng)一成小寫字母后返回小寫字母。3.calculate函數(shù):負(fù)責(zé)統(tǒng)計(jì)某一字母的使用頻率并輸出。4.read函數(shù):讀入位于f://單詞開(kāi)頭大寫.txt,通過(guò)調(diào)用函數(shù)統(tǒng)計(jì)字母頻率并對(duì)應(yīng)輸出。5.fprint函數(shù):按字母使用頻率從大到小的次序輸出字母及其使用頻率。重要技術(shù)問(wèn)題程序以下:#include<stdio.h>#include<stdlib.h>#defineN200 /*判斷字母并將大寫字母轉(zhuǎn)換為小寫字母后返回*/ voidchange(char*p) { inti=0; for(i=0;*(p+i)!='\0';i++) *(p+i)=(('a'<=(*(p+i))&&(*(p+i))<='z'))?*(p+i):(*(p+i)+32); //判斷字母}的值,將全部字母轉(zhuǎn)換成小寫/*統(tǒng)計(jì)某一字母的使用頻率*/voidcalculate(char*p,int*q){ inti=0,temp=0; for(i=0;*(p+i)!='\0';i++) (*(q+(*(p+i)-'a')))++;//對(duì)對(duì)應(yīng)統(tǒng)計(jì)字母的數(shù)組進(jìn)行操作,統(tǒng)計(jì)對(duì)應(yīng)字母的使用}頻率/*找出使用次數(shù)最多的字母并按次序打印*/ voidfind(intb[]){ inti=0,max=0,j=0,k=0; while(k<26) //依次判斷各個(gè)字母的使用次數(shù) { for(i=0;b[i]!=-1;i++) if(b[i]>max) max=b[i],j=i; //統(tǒng)計(jì)最大使用次數(shù)為max if(max==0) return; b[j]=0; printf("%c%6d\n",'a'+j,max); //按次序打印各字母及其使用次數(shù) k++; max=0; }}/*讀入位于f://單詞開(kāi)頭大寫.txt,通過(guò)調(diào)用函數(shù)統(tǒng)計(jì)字母頻率并對(duì)應(yīng)輸出*/voidread(){ FILE*fp;//定義文獻(xiàn)指針 charch; inti; inta[27]={0}; a[26]=-1; if(!(fp=fopen("f:\\單詞開(kāi)頭大寫.txt","r"))){ printf("ERROR!!"); exit(1); } ch=fgetc(fp); while(ch!=-1){//文檔的結(jié)束符為-1 if(ch==-1) continue; ch=(('a'<=ch&&(ch)<='z'))?ch:(ch+32);//字母大小寫統(tǒng)一 if('a'<=ch&&(ch)<='z') a[ch-'a']++; ch=fgetc(fp);//獲取下一種字符 } fclose(fp);//關(guān)閉文獻(xiàn)指針 for(i=0;i<=25;i++) { printf("%d",a[i]);//統(tǒng)計(jì)并打印該文檔中各字母的使用頻率 printf(""); } return;}voidmain()//主函數(shù){ chara[N]; inti; intb[27]={0},Mode_Num;//Mode_Num為模式選擇 b[26]=-1; printf("PleasechoosetheMODE:\n1--toreadfromthescreen\n2--toreadfromfile\n"); scanf("%d",&Mode_Num); if(Mode_Num==1){ scanf("%s",a);//輸入字符串 change(a);//調(diào)用change函數(shù),將全部字母統(tǒng)一為小寫字母 calculate(a,b);//調(diào)用calculate函數(shù),統(tǒng)計(jì)個(gè)字母的使用頻率 for(i=0;i<=25;i++) { printf("%d",b[i]);//對(duì)26個(gè)字母一次統(tǒng)計(jì)并打印 printf(""); } } else { read(); }}運(yùn)行成果:六、實(shí)驗(yàn)心得通過(guò)這次“統(tǒng)計(jì)字母使用的頻率”算法編程的實(shí)習(xí),我學(xué)習(xí)并掌握了函數(shù)的調(diào)用、形參為指針或數(shù)組的傳遞辦法以及讀取文獻(xiàn)數(shù)據(jù)的辦法。同時(shí),在編程過(guò)程中,也碰到了許多問(wèn)題:1.在文獻(xiàn)調(diào)用的過(guò)程中,使用課本上的“while(ch!=EOF)”不能實(shí)現(xiàn)對(duì)文獻(xiàn)結(jié)尾的判斷,造成函數(shù)進(jìn)入死循環(huán),不能及時(shí)退出。心得:當(dāng)自己的程序出現(xiàn)邏輯錯(cuò)誤且自己不懂得錯(cuò)誤的地點(diǎn)時(shí),用調(diào)試的辦法一步步觀察程序的運(yùn)行方式,就能夠發(fā)現(xiàn)錯(cuò)誤的因素并加以改正。2.在輸出字母及其使用頻率的過(guò)成中,曾由于不懂得運(yùn)用轉(zhuǎn)義字符而重新定義了一種數(shù)組用來(lái)寄存a~z的英文字母,在一次翻書(shū)的過(guò)程中忽然看見(jiàn)了轉(zhuǎn)義字符的使用辦法,從而使自己的程序大幅度的簡(jiǎn)化。心得:即使這并不屬于程序的語(yǔ)法或邏輯錯(cuò)誤,但這次通過(guò)使我明白了:程序的編譯每個(gè)人可能都有不同的辦法,但辦法與辦法之間是存在差別的,只有用心思考,才干以最簡(jiǎn)樸明了的方式實(shí)現(xiàn)程序的功效。第二題:四則運(yùn)算題目:四則運(yùn)算目的與規(guī)定1.目的:通過(guò)編寫四則運(yùn)算程序,培養(yǎng)學(xué)生綜合運(yùn)用C語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力,熟悉字符串的操作辦法,加強(qiáng)函數(shù)的運(yùn)用,提高軟件系統(tǒng)分析能力和程序文檔建立、歸納總結(jié)的能力。2.基本規(guī)定:1)規(guī)定用C語(yǔ)言編程,在VisualC++環(huán)境下調(diào)試完畢;2)規(guī)定按照程序功效分成幾個(gè)功效模塊來(lái)實(shí)現(xiàn),各個(gè)功效模塊分別使用函數(shù)來(lái)完畢;3)規(guī)定應(yīng)用本課所講授的程序設(shè)計(jì)語(yǔ)言知識(shí)來(lái)解決問(wèn)題.設(shè)計(jì)辦法和基本原理1.課題功效描述本程序的功效,就是實(shí)現(xiàn)數(shù)的加減乘除四則運(yùn)算,如自動(dòng)計(jì)算3+5*8的成果。2.問(wèn)題具體描述程序運(yùn)行時(shí),首先提示顧客輸入四則運(yùn)算體現(xiàn)式(體現(xiàn)式中最多有3個(gè)運(yùn)算符,數(shù)據(jù)范疇為1-100的整數(shù));輸入結(jié)束后,程序自動(dòng)進(jìn)行計(jì)算并給出成果。如:輸入13-10+5/8時(shí)輸出3.625。3.問(wèn)題的解決方案注意:?jiǎn)栴}的解決方案有諸多,下面給出的僅供同窗們參考。該問(wèn)題重要注意四則運(yùn)算的優(yōu)先級(jí)問(wèn)題:乘除運(yùn)算比加減運(yùn)算優(yōu)先級(jí)高,同級(jí)運(yùn)算按從左到右的次序運(yùn)算。本程序應(yīng)采用模塊化設(shè)計(jì)辦法,設(shè)計(jì)幾個(gè)功效模塊。例如(僅供參考):◆字符串解析函數(shù)(將輸入字符串分解成數(shù)和運(yùn)算符)◆將數(shù)據(jù)(字符數(shù)組中)轉(zhuǎn)換成十進(jìn)制數(shù)(long)◆判讀與否存在高優(yōu)先級(jí)運(yùn)算符,若存在首先計(jì)算其運(yùn)算成果并保存?!敉?jí)運(yùn)算按先后次序進(jìn)行。創(chuàng)新規(guī)定實(shí)現(xiàn)程序功效后,可進(jìn)行創(chuàng)新設(shè)計(jì):1)使用多文獻(xiàn),即主函數(shù)和各個(gè)函數(shù)分別寄存在不同的.c文獻(xiàn)中,在頭文獻(xiàn)中進(jìn)行函數(shù)原型聲明;2)在程序中增加自動(dòng)出題功效及自動(dòng)批卷功效3)不限定運(yùn)算符個(gè)數(shù)4)允許括號(hào)運(yùn)算的存在。功效描述本程序的功效,就是實(shí)現(xiàn)數(shù)的加減乘除四則運(yùn)算,同時(shí)支持多重括號(hào),算是的長(zhǎng)度不超出20個(gè)運(yùn)算符(能夠修改數(shù)量)。并且,程序中包含自動(dòng)出題及自動(dòng)閱卷功效,對(duì)答錯(cuò)的問(wèn)題會(huì)給出對(duì)的答案,最后會(huì)給出整體分?jǐn)?shù)。解決方案(流程圖)開(kāi)始開(kāi)始Main函數(shù)(變量的定義、函數(shù)的調(diào)用)用)Scan函數(shù)(將字符型算式轉(zhuǎn)化為數(shù)字型)Cal函數(shù)(計(jì)算算式的值并輸出)結(jié)束K=1?Ftext函數(shù)(出題模式)YN重要函數(shù)描述main函數(shù):變量的定義,模式的選擇以及函數(shù)的調(diào)用。disg函數(shù):判斷該字符與否為數(shù)字3.scan函數(shù):給運(yùn)算符賦優(yōu)先級(jí),同時(shí)調(diào)用函數(shù)cal,向主函數(shù)返回最后計(jì)算值4.cal函數(shù):計(jì)算算式的值并返回。5.ftext函數(shù):程序的出題模式重要技術(shù)問(wèn)題程序以下:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>#defineN20structyun //統(tǒng)計(jì)算式構(gòu)造的構(gòu)造體參數(shù){ charkind;//算式的算術(shù)類型 doublea;//算式的第一種參數(shù) doubleb;//算式的第二個(gè)參數(shù) intflag;//算式的優(yōu)先級(jí)}y[N];//定義一種構(gòu)造體數(shù)組,使每個(gè)y[N]中含以上4個(gè)參數(shù)/*判斷該字符與否為數(shù)字*/intdisg(chara){ if(a>='0'&&a<='9')return(1); elsereturn(0);}/*計(jì)算算式的值*/doublecal(structyuny[],intMinflag){ inti=0,j=0; doubletemp; while(Minflag<=1){ //最高優(yōu)先級(jí)為括號(hào)外的'+'法運(yùn)算,其優(yōu)先級(jí)為1,故令Minflag<=1 for(i=0;y[i].b!=0;i++)//此循環(huán)用于計(jì)算一種符號(hào)的運(yùn)算成果,并對(duì)應(yīng)修改前后 {運(yùn)算符的參數(shù) if(y[i].flag==Minflag)//按照優(yōu)先級(jí)次序計(jì)算 { switch(y[i].kind){ case'+':temp=y[i].a+y[i].b; y[i-1].b=y[i+1].a=temp;break; case'-':temp=y[i].a-y[i].b; y[i-1].b=y[i+1].a=temp;break; case'*':temp=y[i].a*y[i].b; y[i-1].b=y[i+1].a=temp;break; case'/':temp=y[i].a/y[i].b; y[i-1].b=y[i+1].a=temp;break; default:printf("ERROR!!"); } for(j=i;y[j].b!=0;j++)//一種運(yùn)算符計(jì)算完畢后,覆蓋其值 y[j]=y[j+1]; i=-1; } } Minflag++;//一種優(yōu)先級(jí)計(jì)算完畢后,計(jì)算下一優(yōu)先級(jí) } return(temp);//最后僅剩的運(yùn)算符的計(jì)算值temp即為整個(gè)算式的值}/*給運(yùn)算符賦優(yōu)先級(jí),同時(shí)調(diào)用函數(shù)cal,向主函數(shù)返回最后計(jì)算值;*/doublescan(chara[]){ inti=0,j=0,flag=0,Minflag=0,b[N]={0}; doublere; for(i=0;a[i]!='=';i++) { if(disg(a[i])&&disg(a[i+1])) //判斷與否為兩位的數(shù)字 b[j]=(a[i]-48)*10+(a[i+1]-48),i++,j++;//將兩位數(shù)字從字符狀態(tài)轉(zhuǎn)換為 else數(shù)字狀態(tài)并存入b[] if(disg(a[i])) b[j]=a[i]-48,j++; //將單位數(shù)字從字符狀態(tài)轉(zhuǎn)換為數(shù)字狀態(tài)并存入 elseb[] { switch(a[i]){ case'(':flag-=2;Minflag=flag; continue; //碰到'('則提高括號(hào)內(nèi)算式的優(yōu)先級(jí)(仍然分辨加減 case')':flag+=2;符號(hào)的優(yōu)先級(jí)) continue;//遇')'減少括號(hào)內(nèi)算式優(yōu)先級(jí)(仍然分辨加減號(hào)優(yōu)先級(jí)) default:y[j-1].kind=a[i]; //若a[i]既不是數(shù)字又不是括號(hào),則為 }運(yùn)算符 switch(y[j-1].kind){//下列是對(duì)括號(hào)外的運(yùn)算符賦優(yōu)先級(jí) case'+': case'-':y[j-1].flag=1; break; case'*': case'/':y[j-1].flag=0; break; default:printf("ERROR!!"); } if(flag!=0) //下列是對(duì)括號(hào)內(nèi)的運(yùn)算符賦優(yōu)先級(jí) { y[j-1].flag=flag; if(a[i]=='+'||a[i]=='-') y[j-1].flag++; } y[j-1].a=b[j-1]; if((j-1)!=0) y[j-2].b=b[j-1]; } } y[j-2].b=b[j-1]; re=cal(y,Minflag);//調(diào)用cal()函數(shù)計(jì)算算式的值 return(re); //返回算式的最后計(jì)算成果}/*程序的出題模式;*/voidftext(){ inta=0,b=0,i=0,j=0,k=0,l=0; doubleRe[10],Ans[10];//Ans[]統(tǒng)計(jì)顧客答案;Re[]統(tǒng)計(jì)原則答案 srand(time(0)); //隨機(jī)數(shù)初始化 printf("Herewehave10questionsforyou\n"); do { for(i=0;i<3;i++) { if(i==0) y[i].a=rand()%100;//限制隨機(jī)數(shù)的范疇為0~99 else y[i].a=y[i-1].b; y[i].b=rand()%100; switch(rand()%4){//隨機(jī)產(chǎn)生運(yùn)算符 case0:y[i].kind='+';break; case1:y[i].kind='-';break; case2:y[i].kind='*';break; case3:y[i].kind='/';break; default:printf("ERROR2"); } } printf("%.2f",y[0].a);//下列是輸出題目 for(i=0;i<3;i++) printf("%c%.2f",y[i].kind,y[i].b); printf("=\n"); Re[l++]=cal(y,0);//計(jì)算每小題的原則答案 j++; //j統(tǒng)計(jì)已出題數(shù) }while(j<10); for(i=0;i<10;i++)//下列循環(huán)校對(duì)答案,并統(tǒng)計(jì)分?jǐn)?shù) { scanf("%lf",&Ans[i]); if(fabs(Ans[i]-Re[i])<0.1) { printf("YouranswertoquestionNO.%disright\n",i); k++; } else { printf("YouranswertoquestionNO.%diswrong\nThecorrectansweris%.2f\n",i,Re[i]); } } printf("Yourfinalscoreis:%d\n",k*10); printf("Thankyouforyouruse\ncopyrightby:LDK\n");}voidmain()//主函數(shù){ chara[40]; inti=0,k=0;//k為模式選擇,1為計(jì)算機(jī)模式,2為考試模式 doublere; printf("Pleasechoosethemode:\npress1forcalcaution\npress2fortext\n"); scanf("%d",&k); if(k==1) { printf("pleaseinputtheshizi!\n"); scanf("%s",a); re=scan(a); printf("%.3f\n",re); printf("Thankyouforyouruse\ncopyrightby:LDK\n"); } else { ftext(); }}運(yùn)行成果:實(shí)驗(yàn)心得通過(guò)這次“四則運(yùn)算”算法編程的實(shí)習(xí),我學(xué)習(xí)并更加純熟地掌握了函數(shù)的調(diào)用、數(shù)組及循環(huán)體的使用,同時(shí)在編程過(guò)程中也碰到了諸多問(wèn)題:這次編程的重要問(wèn)題在于其邏輯問(wèn)題,語(yǔ)法上沒(méi)有出現(xiàn)過(guò)多問(wèn)題。邏輯上的重要問(wèn)題有:將字符型算式存儲(chǔ)為數(shù)字型算式的辦法、算式中優(yōu)先級(jí)的判斷以及給每個(gè)運(yùn)算符賦優(yōu)先級(jí)的辦法、對(duì)已知的有優(yōu)先級(jí)的算式的計(jì)算辦法…… 心得:在這次編程過(guò)程中,我明白了對(duì)于要實(shí)現(xiàn)的一種項(xiàng)目,首先應(yīng)當(dāng)將它分成若干個(gè)簡(jiǎn)樸的小功效,理清解決問(wèn)題的整體環(huán)節(jié),然后才干開(kāi)始便攜程序,不懂得各個(gè)函數(shù)的具體功效、入口、出口參數(shù)就盲目開(kāi)始編寫程序是很難實(shí)現(xiàn)隨即的功效的。第三題:解決文獻(xiàn)題目:通信錄目的與規(guī)定目的:通過(guò)編寫程序熟悉文獻(xiàn)的訪問(wèn)、文本文獻(xiàn)的讀寫。掌握如何將字符串寫入文本文獻(xiàn),從文本文獻(xiàn)中讀入字符串、隨機(jī)訪問(wèn)文獻(xiàn)中的數(shù)據(jù)以及修改文獻(xiàn)中的內(nèi)容。培養(yǎng)學(xué)生綜合運(yùn)用C語(yǔ)言對(duì)文獻(xiàn)進(jìn)行操作的能力?;疽?guī)定:1)規(guī)定用C語(yǔ)言編程,在VisualC++環(huán)境下調(diào)試完畢;2)規(guī)定按照程序功效分成幾個(gè)功效模塊來(lái)實(shí)現(xiàn),各個(gè)功效模塊分別使用函數(shù)來(lái)完畢;3)規(guī)定編寫的程序規(guī)范、有良好的可讀性和可移植性。設(shè)計(jì)辦法和基本原理課題功效描述:本程序的功效是對(duì)文獻(xiàn)進(jìn)行靈活操作。問(wèn)題具體描述從鍵盤讀入姓名、電話號(hào)碼和住宅地址,人數(shù)要10人以上。輸入的符號(hào)由英文字母、數(shù)字及中文構(gòu)成。將他們寫入一種文獻(xiàn)。如果這個(gè)文獻(xiàn)不存在,就寫入新文獻(xiàn)。如果文獻(xiàn)已存在,就將它們寫入該文獻(xiàn)。程序課添加新的姓名、電話號(hào)碼和住宅地址。問(wèn)題的解決方案按照程序規(guī)定,提供參考以下:(1)如果沒(méi)有文獻(xiàn)名,規(guī)定顧客輸入。(2)打開(kāi)文獻(xiàn)并顯示文獻(xiàn)的內(nèi)容。(3)將字符串寫入文本文獻(xiàn)。(4)從文本文獻(xiàn)讀取字符串。(5)更新文獻(xiàn)的內(nèi)容。重要技術(shù)問(wèn)題的描述重要問(wèn)題在于:(1)修改文獻(xiàn)內(nèi)容時(shí),當(dāng)新紀(jì)錄與舊統(tǒng)計(jì)的長(zhǎng)度不同時(shí),需統(tǒng)計(jì)字符串長(zhǎng)度。(2)查找文獻(xiàn)中的內(nèi)容時(shí),可在文獻(xiàn)中的設(shè)定位置,提高搜索速度。(3)建議使用構(gòu)造體。創(chuàng)新規(guī)定實(shí)現(xiàn)程序功效后,可進(jìn)行創(chuàng)新設(shè)計(jì):(1)提取指定的姓的全部電話號(hào)碼。(2)可刪除已有的項(xiàng)。(3)可在文獻(xiàn)的每條統(tǒng)計(jì)中插入圖片,進(jìn)行圖片信息提取并運(yùn)用圖片進(jìn)行檢索(進(jìn)一步創(chuàng)新規(guī)定)。功效描述本程序用于實(shí)現(xiàn)對(duì)通信錄信息的解決,涉及查找、修改、刪除通信信息等功效解決方案(流程圖)開(kāi)始開(kāi)始 主函數(shù)1.enter函數(shù):錄入通信信息2.inquiry函數(shù):查詢通信信息3.modify函數(shù):修改通信信息4.del函數(shù):刪除通信信息結(jié)束重要函數(shù)描述1.main函數(shù):負(fù)責(zé)定義變量,函數(shù)的調(diào)用及成果的顯示2.hello函數(shù):用于顯示登錄界面3.enter函數(shù):用于錄入通信信息4.inquiry函數(shù):用于查詢通信信息5.Modify函數(shù):用于修改通信信息6.del函數(shù):用于刪除通信信息7.find_free函數(shù):用于檢測(cè)通信錄里與否有空欄重要技術(shù)問(wèn)題程序以下:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX10inthello(void);//系統(tǒng)界面voidfound(void);//錄入通信信息voidinquiry(void);//查詢通信信息voidmodify(void);//修改通信信息voiddel(void);//刪除某個(gè)通信信息intfind_free(void);//檢測(cè)通信錄里與否有空欄structpeople{//通信錄構(gòu)造體 charname[30];//姓名 charphone[30];//電話 charaddr[30];//住宅地址}one[MAX];intmain()//主函數(shù){ intp; printf("\n*****歡迎登陸通訊錄系統(tǒng)*****\n"); printf("1.信息錄入;\n"); printf("2.信息查詢;\n"); printf("3.信息修改;\n"); printf("4.信息刪除;\n"); printf("5.退出系統(tǒng);\n"); printf("\n****************************\n"); printf("請(qǐng)輸入你需要的服務(wù):\n"); for(;;)//用于延時(shí) { p=hello();//調(diào)用hello()函數(shù)進(jìn)入界面 switch(p){ case1:found();break; case2:inquiry();break; case3:modify();break; case4:del();break; case5:exit(0); } } return0;}inthello()//hello()函數(shù):顯示登錄界面{ chara[10]; intb; do { gets(a); b=atoi(a); }while(b<1||b>5); returnb;}/*found()函數(shù):錄入通信信息*/voidfound(){ intp; p=find_free();//調(diào)用find_free()函數(shù),檢測(cè)通信錄里與否有空欄 if(p==MAX) { printf("\n信息儲(chǔ)存已滿,需要?jiǎng)h除其它的,才干執(zhí)行錄入操作\n"); return; } gets(one[p].name); gets(one[p].phone); gets(one[p].addr);}/*inquiry函數(shù):查詢通信信息*/voidinquiry(){ chars[30]; intp,i; gets(s); for(i=0;i<MAX;i++) { p=strcmp(s,one[i].name);//比較字符串s和one[i].name if(!p) { printf("%s%s%s\n",one[i].name,one[i].phone,one[i].addr); } }}/*modify()函數(shù):修改通信信息*/voidmodify(){ intp,i; chars[30]; gets(s); for(i=0;i<MAX;i++){ p=strcmp(s,one[i].name);//比較字符串s和one[i].name if(!p) { intj; charm[10]; printf("1.姓名\n"); printf("2.電話號(hào)碼\n"); printf("3.住宅地址\n"); printf("請(qǐng)輸入你要修改的選項(xiàng):"); do { gets(m); j=atoi(m);//將數(shù)組m[10]中的內(nèi)容轉(zhuǎn)化為int類型 }while(j<1||j>3); switch(j){ case1:gets(one[i].name);break; case2:gets(one[i].phone);break; case3:gets(one[i].addr);break; } } }}/*del()函數(shù):刪除通信信息*/voiddel(){ intp,i; chars[30]; gets(s); for(i=0;i<MAX;i++) { p=strcmp(s,one[i].name);//比較字符串s和one[i].name if(!p) { one[i].name[0]='\0'; } }}/*find_free()函數(shù):檢測(cè)通信錄里與否有空欄*/intfind_free(){ inti; for(i=0;one[i].name[0]&&i<MAX;i++) if(i==MAX)returnMAX; returni;}運(yùn)行成果:實(shí)驗(yàn)心得通過(guò)這次“通信錄”算法編程的實(shí)習(xí),我更加純熟地掌握了函數(shù)的調(diào)用、循環(huán)體的使用,掌握了switch語(yǔ)句的使用,鞏固了字符串這一塊知識(shí),固然在編程過(guò)程中也碰到了問(wèn)題:這次編程的重要問(wèn)題在于字符串操作函數(shù)的使用,語(yǔ)法上沒(méi)有出現(xiàn)過(guò)多問(wèn)題。對(duì)字符串函數(shù)的使用不夠熟悉,造成編程經(jīng)常出現(xiàn)錯(cuò)誤。 心得:通過(guò)這次編程,是我更深刻地理解:對(duì)編程語(yǔ)言各個(gè)板塊知識(shí)的均衡掌握有多重要。我會(huì)再接再厲,繼續(xù)努力的。第四題:?jiǎn)卧~開(kāi)頭大寫題目:?jiǎn)卧~開(kāi)頭大寫目的與規(guī)定目的:通過(guò)編寫程序熟悉字符串的操作辦法,加強(qiáng)函數(shù)的運(yùn)用,字母大小寫的轉(zhuǎn)換?;疽?guī)定:1)規(guī)定用C語(yǔ)言編程,在VisualC++環(huán)境下調(diào)試完畢;2)規(guī)定按照程序功效分成幾個(gè)功效模塊來(lái)實(shí)現(xiàn),各個(gè)功效模塊分別使用函數(shù)來(lái)完畢;3)規(guī)定應(yīng)用本課所講授的程序設(shè)計(jì)語(yǔ)言知識(shí)來(lái)解決問(wèn)題設(shè)計(jì)辦法和基本原理課題功效描述本程序的功效,從一種英語(yǔ)句子中找出單詞,并把單詞的首字母變成大寫。2.問(wèn)題具體描述輸入一種由多個(gè)英文單詞構(gòu)成的句
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【部編人教版】八年級(jí)上冊(cè)歷史聽(tīng)課評(píng)課記錄 第14課 中國(guó)共產(chǎn)黨誕生
- 晉教版地理八年級(jí)下冊(cè)《8.1 西雙版納──晶瑩剔透的“綠寶石”》聽(tīng)課評(píng)課記錄
- 小學(xué)二年級(jí)口算練習(xí)題
- 蘇教版四年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)口算練習(xí)題一
- 人教版七年級(jí)數(shù)學(xué)下冊(cè) 聽(tīng)評(píng)課記錄5.3.1 第1課時(shí)《平行線的性質(zhì)》
- 七年級(jí)體育教學(xué)計(jì)劃
- 商業(yè)營(yíng)銷策劃項(xiàng)目合作協(xié)議書(shū)范本
- 建筑智能化工程框架合作協(xié)議書(shū)范本
- 商用精裝房屋租賃協(xié)議書(shū)范本
- 鍋爐及附屬供熱設(shè)備安裝施工合同范本
- 高支模專項(xiàng)施工方案(專家論證)
- 深圳版初中英語(yǔ)單詞匯總
- 健康養(yǎng)生,快樂(lè)生活課件
- 《物流與供應(yīng)鏈管理-新商業(yè)、新鏈接、新物流》配套教學(xué)課件
- 物聯(lián)網(wǎng)項(xiàng)目實(shí)施進(jìn)度計(jì)劃表
- MDD指令附錄一 基本要求檢查表2013版
- 駱駝祥子1一24章批注
- 新部編人教版四年級(jí)下冊(cè)道德與法治全冊(cè)教案(教學(xué)設(shè)計(jì))
- 2021年胃腸外科規(guī)培出科考試試題及答案
- 人美版高中美術(shù)選修:《繪畫(huà)》全冊(cè)課件【優(yōu)質(zhì)課件】
- FANUC數(shù)控系統(tǒng)面板介紹與編程操作參考模板
評(píng)論
0/150
提交評(píng)論