版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章函數(shù)控制每行數(shù)據(jù)的個(gè)數(shù)1.for(i=0;i<10;i++){if(i%2==0)printf(“\n”);printf(“%d”,x);}2.for(i=1;i<=10;i++){printf(“%d”,x);if(i%2==0)printf(“\n”);}設(shè)變量已正確定義,以下不能統(tǒng)計(jì)出一行中輸入字符個(gè)數(shù)(不包含回車符)的程序段是
A)n=0;while((ch=getchar())!=”\n”)n++;
B)n=0;while(getchar()!=”\n”)n++;
C)for(n=0;getchar()!=”\n”;n++);
D)n=0;for(ch=getchar();ch!=”\n”;n++);例題:請(qǐng)輸入二個(gè)整數(shù),來判斷二個(gè)數(shù)是奇數(shù)還是偶數(shù)main(){inta,b;printf(“請(qǐng)輸入二個(gè)數(shù)來判斷是奇數(shù)還是偶數(shù):”);scanf(“%d%d”,&a,&b);if(a%2==0)//判斷a是否是偶數(shù)printf(“%d是偶數(shù)”,a);elseprintf(“%d是奇數(shù):”a);if(b%2==0)//判斷b是否是偶數(shù)重復(fù)語(yǔ)句(功能一樣)printf(“%d是偶數(shù)”,b);elseprintf(“%d是奇數(shù)”,b);}voidmain(){::::::x=x*x*x;y=y*y*y;z=z*z*z;ans1=x+y+z;
a=a*a*a;b=b*b*b;c=c*c*c;ans2=a+b+c;:::::}為什么使用函數(shù)重復(fù)多次的同一計(jì)算類型voidmain(){::::::ans1=cube(x,y,z);ans2=cube(a,b,c);:::::}intcube(inta,b,c){intans;ans=(a*a*a)+(b*b*b)+(c*c*c);returnans;}函數(shù)主程序ans函數(shù)可以把相對(duì)獨(dú)立的某個(gè)功能抽象出來,使之成為程序中的一個(gè)獨(dú)立實(shí)體??梢栽谕粋€(gè)程序或其他程序中多次重復(fù)使用函數(shù)機(jī)制的優(yōu)點(diǎn)使程序變得更簡(jiǎn)短而清晰有利于程序維護(hù)可以提高程序開發(fā)的效率提高了代碼的重用性函數(shù)類型內(nèi)置函數(shù):由C語(yǔ)言系統(tǒng)提供;用戶無(wú)須定義,也不必在程序中作類型說明;只需在程序前包含有該函數(shù)定義的頭文件;自定義函數(shù):用戶在程序中根據(jù)需要而編寫的函數(shù);內(nèi)置函數(shù)rand示例2664#include<stdio.h>#include<stdlib.h>
//#include<time.h>voidmain(){inti;printf("產(chǎn)生10個(gè)0到99之間的隨機(jī)數(shù)序列:\n\n");//srand((unsigned)time(NULL));for(i=0;i<10;i++)printf("%d",rand()%100);printf("\n");}產(chǎn)生10個(gè)0到99之間的隨機(jī)數(shù)序列:44732658379427422890Pressanykeytocontinue演示:示例47.2函數(shù)定義voiddisplayDiscount(){ floatprice,discount_amt; printf("請(qǐng)輸入價(jià)格"); scanf("%f,&price); discount_amt=0.75*price; printf("折扣額為%f",discount_amt);}doublemax(doublex,doubley){doublem;m=x>y?x:y;returnm;}該函數(shù)名為displayDiscount,無(wú)參數(shù),使用void說明無(wú)返回值,函數(shù)體內(nèi)的語(yǔ)句用于根據(jù)產(chǎn)品的價(jià)格求折扣后的價(jià)格。該函數(shù)名為max,它有兩個(gè)double類型的參數(shù),返回值為double類型。在函數(shù)體內(nèi)有三條語(yǔ)句實(shí)現(xiàn)了求兩個(gè)數(shù)中較大的數(shù),并將它返回。intdivisibleCheck(intnum){if(num%5==0)return1;elsereturn0;}
C語(yǔ)言中的函數(shù)至多可以返回一個(gè)值,不能返回多個(gè)值;返回值的數(shù)據(jù)類型必須與函數(shù)原型中返回值的數(shù)據(jù)類型匹配;當(dāng)遇到return
語(yǔ)句時(shí),函數(shù)執(zhí)行將終止。程序控制流將立即返回調(diào)用函數(shù);函數(shù)返回值C語(yǔ)言中的return語(yǔ)句用于向調(diào)用函數(shù)返回值,語(yǔ)法如下:return(<表達(dá)式>);函數(shù)返回值示例#include<stdio.h>intget_age();voidmain(){intage1,age2,age3;age1=get_age();age2=get_age();age3=get_age();if((age1>age2)&&(age1>age3)) printf("\n年齡為%d的人最大\n",age1);elseif((age2>age1)&&(age2>age3)) printf("\n年齡為%d的人最大\n",age2);elseif((age3>age1)&&(age3>age2)) printf("\n年齡為%d的人最大\n",age2);}內(nèi)存age1age26578age3intget_age(){intage;printf("\n請(qǐng)輸入年齡:");scanf("%d",&age);
returnage;} 請(qǐng)輸入年齡:65請(qǐng)輸入年齡:78請(qǐng)輸入年齡:54年齡為78歲的人最大54函數(shù)調(diào)用7.3.1函數(shù)的兩種調(diào)用方式1)當(dāng)調(diào)用的函數(shù)用于求出某個(gè)數(shù)值,即有返回值。y=add(3.0,4.0);2)僅進(jìn)行某些操作而不返回函數(shù)值。add(3.0,4.0);通過在程序中使用函數(shù)名稱,可以執(zhí)行函數(shù)中包含的語(yǔ)句,這稱為調(diào)用函數(shù)函數(shù)之間允許相互調(diào)用,也允許嵌套調(diào)用函數(shù)還可以自己調(diào)用自己,稱為遞歸調(diào)用#include<stdio.h>floatset_discount(inti,intj)floatdisplayDiscount()voidmain(){ :::::::::y=set_discount(2,3); displayDiscount(); :::::::: ::::::::}說明:1.函數(shù)名必須與所調(diào)用的函數(shù)名稱完全一致2.實(shí)參與形參個(gè)數(shù)必須一致,且一一對(duì)應(yīng)3.必須先定義后調(diào)用floatset_discount(inti,intj){::::::::::::::::::::}floatdisplayDiscount(){::::::::::::::::::::}函數(shù)調(diào)用語(yǔ)法要求voidreverse(){::::::::::::::::::::}#include<stdio.h>voidmain(){ :::::::::
palindrome(); :::::::: ::::::::}voidpalindrome(){
::::::::reverse();
::::::::}函數(shù)嵌套調(diào)用從一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)稱為函數(shù)的嵌套調(diào)用
調(diào)用函數(shù)和被調(diào)用函數(shù)之間的數(shù)據(jù)傳遞1.實(shí)參與形參之間的數(shù)據(jù)傳遞(按值傳遞)2.通過return把函數(shù)值返回調(diào)用函數(shù)
#include<stdio.h>
floatcount(intx,inty){return;}
voidmain(){...floatcount(2,3);}voidmain(){inta=0;//初始化a值為0
func(a);//調(diào)用函數(shù)funcprintf("%d",a);//輸出a的結(jié)果}//定義函數(shù)funcvoidfunc(inta){a=10;//讓參數(shù)a等于10}傳值調(diào)用0傳值調(diào)用將會(huì)輸出什么voidfunc(int);總結(jié):傳值調(diào)用在調(diào)用時(shí),系統(tǒng)將實(shí)參拷貝一個(gè)副本給形參,使形參具有與實(shí)參相同的值,即實(shí)參值分別按位置傳遞給對(duì)應(yīng)的形參,使形參獲取從實(shí)參傳遞來的值.這種調(diào)用方式的特點(diǎn)是在被調(diào)用函數(shù)中改變形參的值,只是改變其副本值,而不會(huì)影響調(diào)用函數(shù)中的實(shí)參值.#include<stdio.h>voidtry(int,int,int);main(){intx=2,y=3,z=0;printf(“(1)x=%dy=%dz=%d\n”,x,y,z);try(x,y,z);printf(“(4)x=%dy=%dz=%d\n”,x,y,z);}voidtry(intx,inty,intz){printf(“(2)x=%dy=%dz=%d\n”,x,y,z);z=x+y;x=x*x;y=y*y;printf(“(3)x=%dy=%dz=%d\n”,x,y,z);}程序的運(yùn)行結(jié)果如下:(1)x=2y=3z=0(2)x=2y=3z=0(3)x=4y=9z=5(4)x=2y=3z=0
例題7.4,編寫函數(shù)isprime(inta),判斷自變量a是否為素?cái)?shù),若是則返回1,否則,返回0#include<stdio.h>intisprime(int);main(){intx;printf(“Enteraintegernumber:”);scanf(“%d,&x));if(isprime(x))printf(“%disprime\n:”,x);elseprintf(“%disnotprime\n:”,x);}intisprime(inta){inti;for(i=2;i<=a/2;i++)if(a%i==0)return0;return1;}
例題7.5,驗(yàn)證任意大于2的偶數(shù)可以表示為兩個(gè)素?cái)?shù)之和,并輸出思路:輸入一個(gè)數(shù)偶數(shù)奇數(shù)輸出:這是一個(gè)奇數(shù)判斷是否為兩個(gè)素?cái)?shù)之和關(guān)鍵:如何判斷?示例:如何判斷x是否為兩個(gè)素?cái)?shù)之和?x=素?cái)?shù)+素?cái)?shù)?!拿出2——x/2每個(gè)數(shù)i2.判斷i是否為素?cái)?shù)&&判斷x-i是否為素?cái)?shù)#include<stdio.h>intisprime(int);voideven(int)main(){inta;printf(“Eneraevennumber:”);scanf(%d,&a);if(a%2==0)even(a);elseprintf(“The%disnotevennumber\n”,a);}voideven(intx){inti;for(i=2;i<=x/2;i++)if(ispime(i))if(isprime(x-i)){printf(%d=+%d\n”,x,i,x-i);return}}(isprime函數(shù)如上題)#includ<stdio.h>int(sumint);intf(int);main(){inta,b;printf(“Enteraintegernumber:”);scanf(“%d,&a);b=sum(a);printf(“a=%dsum=%d\n”,a,b);}intsum(intn){intx,s=0;for(x=0;x<=n;x++)s+=f(x);returns;}intf(intx){returnx*x+1;}7.10編寫函數(shù)統(tǒng)計(jì)輸入文本中單詞的個(gè)數(shù),單詞之間用空格符、換行符、跳格符隔開,用@作為輸入結(jié)束標(biāo)志。分析:a__good____beginningis_a__half__done@(_代表空格,__代表跳格符)即計(jì)算單詞第一個(gè)字符的個(gè)數(shù)。思考:怎樣辨別是單詞的第一個(gè)字符?當(dāng)前字符不是空格、回車、跳格,但當(dāng)前字符的前一個(gè)字符是空格、回車或跳格。設(shè)置一個(gè)狀態(tài)flag,記錄字符的前一個(gè)狀態(tài)。flag=0表示在單詞外邊,flag=1表示在單詞內(nèi)部,則第一個(gè)字符,即flag==0,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年品管部主管職責(zé)與權(quán)限模版(二篇)
- 2024年小學(xué)語(yǔ)文教師個(gè)人研修計(jì)劃范例(三篇)
- 2024年小學(xué)體育器材管理制度范文(三篇)
- 2024年外商投資企業(yè)勞動(dòng)合同經(jīng)典版(三篇)
- 2024年安全總監(jiān)崗位職責(zé)具體內(nèi)容模版(三篇)
- 2024年學(xué)校校本培訓(xùn)計(jì)劃模版(二篇)
- 2024年各種管理制度(二篇)
- 2024年幼兒園大班的下學(xué)期工作計(jì)劃范例(四篇)
- 2024年城鎮(zhèn)集體所有制企業(yè)職工勞動(dòng)合同格式范本(二篇)
- 【《幼兒園自然課程游戲活動(dòng)指導(dǎo)的適應(yīng)性策略探究》6400字(論文)】
- 包頭醫(yī)學(xué)院新開課程申請(qǐng)表
- 幼兒園課件:大班美術(shù)《美麗的郵票》
- (精心整理)初中物理串聯(lián)分壓和并聯(lián)分流精練
- 道路開口工程施工設(shè)計(jì)方案
- 員工勝任力評(píng)價(jià)方案
- 儀表接地技術(shù)ppt課件
- 六年級(jí)科學(xué)總復(fù)習(xí)空氣和水練習(xí)卷
- 視覺神經(jīng)生理學(xué)復(fù)習(xí)
- EN779-2012一般通風(fēng)過濾器——過濾性能測(cè)定(中文版)
- 小學(xué)六年級(jí)上冊(cè)音樂-第5課《今天是你的生日》--人音版(簡(jiǎn)譜)(11張)ppt課件
- 寶石加工工藝設(shè)計(jì)流程-圖文詳解
評(píng)論
0/150
提交評(píng)論