![C語言函數(shù)實(shí)驗(yàn)報告_第1頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb391.gif)
![C語言函數(shù)實(shí)驗(yàn)報告_第2頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb392.gif)
![C語言函數(shù)實(shí)驗(yàn)報告_第3頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb393.gif)
![C語言函數(shù)實(shí)驗(yàn)報告_第4頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb394.gif)
![C語言函數(shù)實(shí)驗(yàn)報告_第5頁](http://file4.renrendoc.com/view/e9ada62bb39183d4926e4b5f6953fb39/e9ada62bb39183d4926e4b5f6953fb395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
北京聯(lián)合大學(xué)信息學(xué)院“程序設(shè)計(jì)基礎(chǔ)”課程調(diào)研(研究)報告題目:函數(shù)姓名(學(xué)號):專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)編制時間:2012-6-3。版本:指導(dǎo)教師:北京聯(lián)合大學(xué)-信息學(xué)院編制函數(shù)實(shí)驗(yàn)(程序)設(shè)計(jì)報告2012年6月3日班號:姓名:學(xué)號:實(shí)驗(yàn)情況概述本次實(shí)驗(yàn)主要做了判斷素數(shù)和用一個函數(shù)來實(shí)現(xiàn)將一行字符串中最長的單詞輸出、寫一函數(shù)能輸入一個十六進(jìn)制數(shù)后輸出相應(yīng)的十進(jìn)制數(shù)以及用遞歸法將一個整數(shù)轉(zhuǎn)換成字符串實(shí)驗(yàn),主要實(shí)踐了函數(shù)的定義、聲明、調(diào)用及運(yùn)用返回值等的內(nèi)容,驗(yàn)證了函數(shù)的遞歸調(diào)用和嵌套調(diào)用。理解了函數(shù)用來完成特定功能的便捷性,并初步了解并掌握了模塊化程序設(shè)計(jì)思路。實(shí)驗(yàn)記錄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用來計(jì)數(shù)。 { if(n%i!=0) j++; else break; } if(j<n) printf("%d不是素數(shù)!\n",n);else printf("%d是素數(shù)!\n",n);}寫一函數(shù),輸入一個十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制數(shù)。#include<stdio.h> intfun(void)//定義無參被調(diào)函數(shù)fun的類型、名稱{ intn; //定義int型變量n printf("Pleaseinputahexnumber:"); //打印提示信息 scanf("%x",&n); //從鍵盤上讀入數(shù)據(jù),%x表示該數(shù)以16進(jìn)制形式輸入 printf("\nItsdecimalnumberis:%d\n",n);//打印所需的結(jié)果,即十進(jìn)制數(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);}/*因?yàn)閕和10都是整數(shù),所以i=m/10的結(jié)果不會是浮點(diǎn)型,只能是整型;根據(jù)該編譯系統(tǒng)“向零取整”的規(guī)則,如果等于0,說明m就只有一位數(shù);若不為0,則說明m是一個多位數(shù),遞歸調(diào)用繼續(xù)處理i,使m除去個位的數(shù)字*/printf("%c",m%10+'0');/*m%10是取余運(yùn)算,結(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ù)來實(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,計(jì)算最長單詞的起始位置。*/intlongest(charstring[])//變量為字符型數(shù)組{inti,flag,len=0,length=strlen(string),place,point;/*flag表示單詞是否開始,flag=0表示未開始,flag=1表示單詞開始;len表示單詞已累計(jì)的字母個數(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++;/*進(jìn)入計(jì)算,+1*/ }else/*不是,比較已統(tǒng)計(jì)*/ {flag=1;if(len>=length) {length=len;place=point; len=0; } }}return(place);}/*以下14行,主函數(shù),調(diào)用longest計(jì)算最長單詞的起始位置,并輸出*/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);}實(shí)驗(yàn)程序調(diào)試的步驟:根據(jù)該題目相應(yīng)的要求,通過主動思考、查資料、與人交流等方式構(gòu)思算法,在草稿紙上編寫出簡單的流程圖,再將具體的程序在電腦上敲出來,不斷的更正并改進(jìn),得出比較完善的程序。遇到的問題:如圖所示,調(diào)試程序時無錯誤,但運(yùn)行完后,求得的是最長單詞及其長度不是預(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ù)來實(shí)現(xiàn)將一行字符串中最長的單詞輸出,且此行字符串從主函數(shù)傳遞給該函數(shù)。這樣,我們不妨輸入幾組容易辨別的單詞組,再夾雜一些數(shù)字或符號的混合組,查看是否與預(yù)期結(jié)果相符。測試用例:(1)abcabcd(2)abcdabc(3)3a2bc@#$abc根據(jù)測試的結(jié)果進(jìn)行分析和修改:部分運(yùn)行結(jié)果如下:有結(jié)果可知,經(jīng)過改進(jìn)后,運(yùn)行結(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,計(jì)算最長單詞的起始地址。*/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表示單詞已累計(jì)的字母個數(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)計(jì)除首字母外該單詞的長度 }else//若string[i]不是字母,而是空格或其他符號 {flag=1;//將flag變?yōu)?,當(dāng)下一個字符是字母時就計(jì)數(shù)if(length0>length)//length代表該字符串?dāng)?shù)組中的單詞的最大長度,初始化賦值為0 {length=length0;//當(dāng)length0大于length時,把length0賦給lengthplace=point;//把該單詞的首字母地址作為所求的最長單詞的起始位置 length0=0;//將統(tǒng)計(jì)的前一個單詞的長度清零,以便統(tǒng)計(jì)下一個單詞長度 } }}return(place);//將所求最長單詞的初始位置返回給主調(diào)函數(shù)}/*以下是主調(diào)函數(shù),調(diào)用longest計(jì)算最長單詞的起始位置,并輸出*/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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 洛陽理工學(xué)院《食品質(zhì)量與安全專業(yè)綜合實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海音樂學(xué)院《軟件工程綜合課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西農(nóng)業(yè)工程職業(yè)學(xué)院《中國古代文學(xué)史三宋元文學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 暨南大學(xué)《醫(yī)藥廣告學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 福建技術(shù)師范學(xué)院《土木工程概預(yù)算課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 長春汽車工業(yè)高等專科學(xué)?!峨x散結(jié)構(gòu)》2023-2024學(xué)年第二學(xué)期期末試卷
- 東華大學(xué)《生物材料檢驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 晉中職業(yè)技術(shù)學(xué)院《幼兒語言教育》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢設(shè)計(jì)工程學(xué)院《機(jī)械基礎(chǔ)實(shí)驗(yàn)課》2023-2024學(xué)年第二學(xué)期期末試卷
- 濟(jì)南工程職業(yè)技術(shù)學(xué)院《分析化學(xué)C(醫(yī)學(xué))》2023-2024學(xué)年第二學(xué)期期末試卷
- 護(hù)士團(tuán)隊(duì)的協(xié)作和領(lǐng)導(dǎo)力培養(yǎng)培訓(xùn)課件
- QFD模板含計(jì)算公式計(jì)分標(biāo)準(zhǔn)說明模板
- 慢阻肺試題練習(xí)
- 人工智能在生物醫(yī)學(xué)倫理與法律中的基因編輯與生命倫理問題研究
- 饅頭制作過程
- 國有資產(chǎn)管理辦法-國有資產(chǎn)管理辦法條例
- 公務(wù)車輛定點(diǎn)維修車輛保養(yǎng)(附彩圖) 投標(biāo)方案
- 00015-英語二自學(xué)教程-unit3
- 第二章共混改性基本原理
- 乳腺專業(yè)知識課件
- 碳納米管及其應(yīng)用課件
評論
0/150
提交評論