![C語言函數(shù)實驗報告_第1頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb391.gif)
![C語言函數(shù)實驗報告_第2頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb392.gif)
![C語言函數(shù)實驗報告_第3頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb393.gif)
![C語言函數(shù)實驗報告_第4頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb394.gif)
![C語言函數(shù)實驗報告_第5頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
北京聯(lián)合大學(xué)信息學(xué)院“程序設(shè)計基礎(chǔ)”課程調(diào)研(研究)報告題目:函數(shù)姓名(學(xué)號):專業(yè):計算機科學(xué)與技術(shù)編制時間:2012-6-3。版本:指導(dǎo)教師:北京聯(lián)合大學(xué)-信息學(xué)院編制函數(shù)實驗(程序)設(shè)計報告2012年6月3日班號:姓名:學(xué)號:實驗情況概述本次實驗主要做了判斷素數(shù)和用一個函數(shù)來實現(xiàn)將一行字符串中最長的單詞輸出、寫一函數(shù)能輸入一個十六進制數(shù)后輸出相應(yīng)的十進制數(shù)以及用遞歸法將一個整數(shù)轉(zhuǎn)換成字符串實驗,主要實踐了函數(shù)的定義、聲明、調(diào)用及運用返回值等的內(nèi)容,驗證了函數(shù)的遞歸調(diào)用和嵌套調(diào)用。理解了函數(shù)用來完成特定功能的便捷性,并初步了解并掌握了模塊化程序設(shè)計思路。實驗記錄1.寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否是素數(shù)的信息。素數(shù)定義:除了1和它本身外,不能被任何數(shù)整除且大于2的整數(shù)。#include<stdio.h>intmain(){voidfun(intn);//函數(shù)聲明intn; printf("inputanumberwhichislargerthan2:\n");scanf("%d",&n);fun(n);//調(diào)用函數(shù) return0; /*若主函數(shù)為int型用getchar()也可以,若為void則只能用getchar,或什么都不用;此處可以將return注釋掉*/}voidfun(intn)//定義被調(diào)用函數(shù){inti,j;for(i=2,j=2;i<n;i++)//i做除數(shù),j用來計數(shù)。 { if(n%i!=0) j++; else break; } if(j<n) printf("%d不是素數(shù)!\n",n);else printf("%d是素數(shù)!\n",n);}寫一函數(shù),輸入一個十六進制數(shù),輸出相應(yīng)的十進制數(shù)。#include<stdio.h> intfun(void)//定義無參被調(diào)函數(shù)fun的類型、名稱{ intn; //定義int型變量n printf("Pleaseinputahexnumber:"); //打印提示信息 scanf("%x",&n); //從鍵盤上讀入數(shù)據(jù),%x表示該數(shù)以16進制形式輸入 printf("\nItsdecimalnumberis:%d\n",n);//打印所需的結(jié)果,即十進制數(shù)輸出return0;}intmain() //主調(diào)函數(shù){intfun(void);//聲明無參被調(diào)函數(shù)的fun類型、名稱 fun(); //調(diào)用函數(shù)funreturn0;}3.用遞歸法將一個整數(shù)轉(zhuǎn)換成字符串。#include<stdio.h>voidmain(){voidexchange(intn);//聲明轉(zhuǎn)換函數(shù)exchangeintn;printf("inputaintegernumber:\n");scanf("%d",&n);printf("itsstringis:\n");if(n<0)//如果輸入的是負(fù)數(shù){putchar('-');//輸出負(fù)號“-”n=-n;//將此負(fù)數(shù)轉(zhuǎn)化為正數(shù)處理}exchange(n);//調(diào)用轉(zhuǎn)換函數(shù),該函數(shù)包括了整數(shù)的轉(zhuǎn)換和轉(zhuǎn)換成的字符串的輸出printf("\n");}voidexchange(intm)//定義轉(zhuǎn)換函數(shù),其中m為形參。{inti;if((i=m/10)!=0){exchange(i);}/*因為i和10都是整數(shù),所以i=m/10的結(jié)果不會是浮點型,只能是整型;根據(jù)該編譯系統(tǒng)“向零取整”的規(guī)則,如果等于0,說明m就只有一位數(shù);若不為0,則說明m是一個多位數(shù),遞歸調(diào)用繼續(xù)處理i,使m除去個位的數(shù)字*/printf("%c",m%10+'0');/*m%10是取余運算,結(jié)果為0~9之間的整數(shù),即整數(shù)n的最后一位數(shù)。字符'0'~'9'的ASCⅡ代碼依次比字符'0'的代碼大0~9,m%10+'0'表示所要輸出的該數(shù)的ASCⅡ代碼,這樣才能使打印出的是字符'0'~'9'中的某個字符而不是整數(shù)0~9中的某個整數(shù)。*/}4.用一個函數(shù)來實現(xiàn)將一行字符串中最長的單詞輸出。此行字符串從主函數(shù)傳遞給該函數(shù)。#include<stdio.h>#include<string.h>/*以下6行,函數(shù)fun,判斷是否為字母*/intfun(charc){if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))return(1);elsereturn(0);}/*以下30行,函數(shù)longest,計算最長單詞的起始位置。*/intlongest(charstring[])//變量為字符型數(shù)組{inti,flag,len=0,length=strlen(string),place,point;/*flag表示單詞是否開始,flag=0表示未開始,flag=1表示單詞開始;len表示單詞已累計的字母個數(shù);length表示先前單詞中最長單詞的長度;point表示當(dāng)前單詞的起始位置;place表示最長單詞的起始位置*/for(i=0;i<=strlen(string);i++){if(fun(string[i]))/*判斷是否為字母*/ {if(flag)/*是,開始*/ {flag=0;point=i; }else len++;/*進入計算,+1*/ }else/*不是,比較已統(tǒng)計*/ {flag=1;if(len>=length) {length=len;place=point; len=0; } }}return(place);}/*以下14行,主函數(shù),調(diào)用longest計算最長單詞的起始位置,并輸出*/voidmain(){charline[1000];inti,n=0;printf("pleaseinputoneline:\n");gets(line);printf("Thelongestwordis:");for(i=longest(line);fun(line[i]);i++) {printf("%c",line[i]);n++; }printf("\nItslengthis%d.\n",n);}實驗程序調(diào)試的步驟:根據(jù)該題目相應(yīng)的要求,通過主動思考、查資料、與人交流等方式構(gòu)思算法,在草稿紙上編寫出簡單的流程圖,再將具體的程序在電腦上敲出來,不斷的更正并改進,得出比較完善的程序。遇到的問題:如圖所示,調(diào)試程序時無錯誤,但運行完后,求得的是最長單詞及其長度不是預(yù)期的,而是輸入的第一個單詞。問題的解決方法:根據(jù)檢查結(jié)果,出現(xiàn)上述問題的原因是第二個函數(shù)longest內(nèi)部for循環(huán)的控制條件及for內(nèi)部的if()else()選擇結(jié)構(gòu)有重大缺陷,解決辦法主要是在賦初始值時,將flag變?yōu)閒lag=1,將length=strlen(string)改為length=0,if選擇結(jié)構(gòu)里面就不至于混亂,這樣就可以解決上述問題了。第三章.系統(tǒng)的評測測試方案:該程序是用一個函數(shù)來實現(xiàn)將一行字符串中最長的單詞輸出,且此行字符串從主函數(shù)傳遞給該函數(shù)。這樣,我們不妨輸入幾組容易辨別的單詞組,再夾雜一些數(shù)字或符號的混合組,查看是否與預(yù)期結(jié)果相符。測試用例:(1)abcabcd(2)abcdabc(3)3a2bc@#$abc根據(jù)測試的結(jié)果進行分析和修改:部分運行結(jié)果如下:有結(jié)果可知,經(jīng)過改進后,運行結(jié)果完全符合要求,達(dá)到了預(yù)期目的。第四章.程序清單#include<stdio.h>#include<string.h>/*以下是函數(shù)letter,判斷是否為字母*/intletter(charc)//定義函數(shù)letter{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))//判斷由主調(diào)函數(shù)傳來的line[i]是否在a~b或A~Z之間return(1);//是,則返回真值1給主調(diào)函數(shù)elsereturn(0);//否,則返回假值0給主調(diào)函數(shù)}/*以下是函數(shù)longest,計算最長單詞的起始地址。*/intlongest(charstring[])//定義函數(shù)longest,變量為字符串?dāng)?shù)組{intletter(charc);//聲明被調(diào)函數(shù)inti,flag=1;//flag表示單詞是否開始,flag=0表示未開始,flag=1表示單詞開始;intlength0=0,length=0;//length0表示單詞已累計的字母個數(shù);length表示先前單詞中最長單詞的長度;intpoint,place;//point表示當(dāng)前單詞的首字母地址,即起始地址;place表示最長單詞的起始地址for(i=0;i<=strlen(string);i++)//strlen(string)表示string[]的長度,strlen為測字符串長度函數(shù){if(letter(string[i]))//判斷string[i]是否為字母,string[i]代表一個字母、空格或其他符號 {if(flag)//若是,開始處理以string[i]開頭的一個單詞 {point=i; //point代表當(dāng)前單詞的起始位置,將該單詞首字母地址賦給point flag=0;//將i傳給point后,把flag變?yōu)榱?使下幾步連續(xù)執(zhí)行l(wèi)ength0++} else length0++;//統(tǒng)計除首字母外該單詞的長度 }else//若string[i]不是字母,而是空格或其他符號 {flag=1;//將flag變?yōu)?,當(dāng)下一個字符是字母時就計數(shù)if(length0>length)//length代表該字符串?dāng)?shù)組中的單詞的最大長度,初始化賦值為0 {length=length0;//當(dāng)length0大于length時,把length0賦給lengthplace=point;//把該單詞的首字母地址作為所求的最長單詞的起始位置 length0=0;//將統(tǒng)計的前一個單詞的長度清零,以便統(tǒng)計下一個單詞長度 } }}return(place);//將所求最長單詞的初始位置返回給主調(diào)函數(shù)}/*以下是主調(diào)函數(shù),調(diào)用longest計算最長單詞的起始位置,并輸出*/voidmain(){ intlongest(charstring[]);//聲明被調(diào)函數(shù) intletter(charc);//聲明被調(diào)函數(shù)charline[1000];//定義字符串?dāng)?shù)組inti,n;printf("pleaseinputoneline:\n");gets(line);//將從鍵盤輸入的數(shù)據(jù)讀入數(shù)組printf("Thelongestwordis:");for(i=longest(line),n=0;letter(line[i]);i++)//調(diào)用函數(shù)longest(char)、letter(char) {//i的初始值為longest函數(shù)的返回值place,for循環(huán)的控制條件為函數(shù)letter的返回值為真值1
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程施工綠色施工合同范本及環(huán)保要求
- 2025年油泵項目深度研究分析報告
- 2025年渣漿泵項目可行性研究報告
- 2025年自動波箱測試表行業(yè)深度研究分析報告
- 2024-2025年中國金屬包裝材料市場運行態(tài)勢及行業(yè)發(fā)展前景預(yù)測報告
- 2025年單層罐籠項目投資可行性研究分析報告
- 2025年度建筑工程承包合作協(xié)議(含BIM技術(shù)應(yīng)用)
- 2025年度建筑涂料施工綠色施工技術(shù)咨詢服務(wù)合同
- 2025年度建筑渣土運輸合同范本(升級版)
- 2025年度建筑材料采購合同綠色評價體系
- 脾破裂術(shù)后健康宣教課件
- 財務(wù)管控的間接成本
- 藏族唐卡藝術(shù)特色分析
- 操作系統(tǒng)課程設(shè)計報告
- 《學(xué)校體育科研方法》課件
- 護士團隊的協(xié)作和領(lǐng)導(dǎo)力培養(yǎng)培訓(xùn)課件
- QFD模板含計算公式計分標(biāo)準(zhǔn)說明模板
- 慢阻肺試題練習(xí)
- 人工智能在生物醫(yī)學(xué)倫理與法律中的基因編輯與生命倫理問題研究
- 國有資產(chǎn)管理辦法-國有資產(chǎn)管理辦法條例
- 公務(wù)車輛定點維修車輛保養(yǎng)(附彩圖) 投標(biāo)方案
評論
0/150
提交評論