版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
編寫程序輸出3到10000內(nèi)可逆素?cái)?shù)??赡嫠?cái)?shù)是指:一個(gè)素?cái)?shù)將其各位數(shù)字次序倒過來組成反序數(shù)也是素?cái)?shù)。如157和751均為素?cái)?shù),它們是可逆素?cái)?shù)。要求:使用函數(shù)實(shí)現(xiàn),最少兩個(gè)函數(shù)。
1/42設(shè)計(jì)main()主函數(shù):在3~10000內(nèi)經(jīng)過調(diào)用函數(shù),找出可逆素?cái)?shù)。intprime(inta)函數(shù):用于判定素?cái)?shù),返回“1”為素?cái)?shù)。intinvert(inta)函數(shù):用于倒序一個(gè)數(shù),如a=123,則invert函數(shù)返回值為321。
2/42voidmain(){inti;
intprime(inta);//函數(shù)申明intinvert(inta);for(i=3;i<10000;i++)if(prime(i))if(prime(invert(i)))printf("%5d",i);printf("\n");}
#include<stdio.h>#include<stdlib.h>#include<math.h>3/42intinvert(inta){ints=0;while(a>0){
s=10*s+a%10;a/=10;
}returns;}intprime(inta){inti;for(i=2;i<=(int)sqrt(a);i++)if(a%i==0) return0;return1;}4/42向函數(shù)傳遞信息值傳遞方式數(shù)組作函數(shù)參數(shù)?……向函數(shù)傳遞信息,是經(jīng)過參數(shù)列表完成。第7章函數(shù)(續(xù))5/42簡(jiǎn)單變量作函數(shù)參數(shù)
實(shí)參
實(shí)參實(shí)參
主調(diào)函數(shù)
被調(diào)函數(shù)
形參
形參
形參
調(diào)用時(shí)
執(zhí)行被調(diào)函數(shù)
從被調(diào)函數(shù)返回
變量值
變量值
變量值
變量值
變量值
變量值
修改
未改變
6/42
除了變量能夠作為函數(shù)參數(shù)外,數(shù)組元素、數(shù)組名也能夠是函數(shù)參數(shù)。1.數(shù)組元素作為參數(shù):與變量作參數(shù)一樣,單向、值傳送方式。
數(shù)組作為函數(shù)參數(shù)7/42數(shù)組作為函數(shù)參數(shù)數(shù)組元素作函數(shù)實(shí)參——值傳遞例1.兩個(gè)數(shù)組大小比較(教材:P193)輸入10個(gè)數(shù),輸出其中值最大元素和該數(shù)是第幾個(gè)數(shù)。432105a562312107688……i=1~9;max(m,a[i])m=a[0]m=a[1]8/42數(shù)組名作函數(shù)參數(shù)地址傳遞2.數(shù)組名作函數(shù)參數(shù):數(shù)組名代表數(shù)組問:?首地址9/42數(shù)組名作函數(shù)參數(shù)
10/42
此時(shí)形參從實(shí)參取得了數(shù)組起始地址,不是把數(shù)組元素值傳遞給形參,這么形參和實(shí)參就共指內(nèi)存同一段空間。當(dāng)形參數(shù)組中數(shù)據(jù)發(fā)生改變時(shí),實(shí)參數(shù)組元素值同時(shí)發(fā)生改變。了解:11/42數(shù)組名作函數(shù)參數(shù)實(shí)參和形參在主調(diào)函數(shù)與被調(diào)函數(shù)分別定義數(shù)組,且類型一致形參數(shù)組大小可不指定如:array[]2.數(shù)組名作函數(shù)參數(shù):12/42例求學(xué)生平均成績(jī)#include<stdio.h>
floataverage(intstu[10]);voidmain(){intscore[10],i;floatav;printf("Input10scores:\n");for(i=0;i<10;i++)scanf("%d",&score[i]);av=average(score);printf("Averageis:%.2f",av);}floataverage(int
stu[10]){inti;floatav1,total=0;for(i=0;i<10;i++)total+=stu[i];av1=total/n;returnav1;}實(shí)參用數(shù)組名形參用數(shù)組定義,
intstu[]..2109score562312….….88stu13/42修改實(shí)現(xiàn)兩個(gè)整數(shù)交換函數(shù)原:voidswap(intx,inty)修改后:voidswap(intxy[])?14/42#include<stdio.h>
voidmain()
{voidswap(intab[2]);
intxy[2]={7,11};
printf("x=%d,\ty=%d\n",xy[0],xy[1]);
printf("swapped:\n");
swap(xy);
printf("x=%d,\ty=%d\n",xy[0],xy[1]);
}
voidswap(intab[2])
{inttemp;
temp=ab[0];ab[0]=ab[1];ab[1]=temp;
}
15/42例數(shù)組排序----選擇法排序voidsort(intarray[],intn){inti,j,k,t;for(i=0;i<n-1;i++){k=i; for(j=i+1;j<n;j++) if(array[j]<array[k])k=j; if(k!=i) {t=array[i]; array[i]=array[k]; array[k]=t; }}}voidmain(){inta[10],i;for(i=0;i<10;i++) scanf("%d",&a[i]);
sort(a,10);for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}0123456789a4968573299927137688arraykjjjkjkjjjjj949i=016/42voidsort(intarray[],intn){inti,j,k,t;for(i=0;i<n-1;i++){k=i; for(j=i+1;j<n;j++) if(array[j]<array[k])k=j; if(k!=i) {t=array[i]; array[i]=array[k]; array[k]=t; }}}kjjkjkjjjjj0123456789a4968573299927137688array949kk1368i=1例數(shù)組排序----選擇法排序17/420123456789a9132732495768768899arrayi=8voidsort(intarray[],intn){inti,j,k,t;for(i=0;i<n-1;i++){k=i; for(j=i+1;j<n;j++) if(array[j]<array[k])k=j; if(k!=i) {t=array[i]; array[i]=array[k]; array[k]=t; }}}例數(shù)組排序----選擇法排序18/42請(qǐng)兩位同學(xué)將冒泡法排序程序改寫成函數(shù)調(diào)用方式(用數(shù)組名調(diào)用)。一位同學(xué)完成主程序;一位同學(xué)完成函數(shù)定義;注意:協(xié)商好函數(shù)名稱參數(shù)個(gè)數(shù)、類型P2185,6練習(xí)19/42變量的生存空間和變量的生存期20/42voidmain(){inta,b;scanf(“%d,”%d”,&a,&b);swap(a,b);printf(“%d,”%d”,&a,&b);}函數(shù)swap(x,y),實(shí)現(xiàn)兩個(gè)整型數(shù)值交換。voidswap(intx,inty){intt;t=x;x=y;y=t;}21/42局部變量:
在一個(gè)函數(shù)內(nèi)部說明變量是局部變量,它只在該函數(shù)范圍內(nèi)有效。全局變量:
在函數(shù)外部定義變量稱為全局變量。全局變量不屬于任何一個(gè)函數(shù),其作用域是:從定義位置開始,到本文件結(jié)束為止。生存空間22/42局部變量特點(diǎn)局部變量---內(nèi)部變量特點(diǎn):main中定義變量只在有效不一樣函數(shù)中同名變量,占內(nèi)存單元形參屬于變量在復(fù)合語句中可定義有效局部變量main中不一樣局部23/42floatf1(inta){intb,c;…….}charf2(intx,inty){inti,j;……}main(){intm,n;…….}a,b,c有效x,y,i,j有效m,n有效例不一樣函數(shù)中同名變量main(){inta,b;a=3;b=4;printf("main:a=%d,b=%d\n",a,b);sub();printf("main:a=%d,b=%d\n",a,b);}sub(){inta,b;a=6;b=7;printf("sub:a=%d,b=%d\n",a,b);}例復(fù)合語句中變量#defineN5voidmain(){inti;inta[N]={1,2,3,4,5};for(i=0;i<N/2;i++)
{
inttemp; temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp;
}for(i=0;i<N;i++)printf("%d",a[i]);}運(yùn)行結(jié)果:54321運(yùn)行結(jié)果:main:a=3,b=4sub:a=6,b=7main:a=3,b=424/42全局變量---外部變量有效范圍:從定義變量位置開始到根源文件結(jié)束
應(yīng)盡可能少使用全局變量,因?yàn)椋喝肿兞吭诔绦蛉繄?zhí)行過程中占用存放單元降低了函數(shù)通用性、可靠性,可移植性降低程序清楚性,輕易犯錯(cuò)優(yōu)點(diǎn)缺點(diǎn)增加了函數(shù)間數(shù)據(jù)聯(lián)絡(luò)渠道。利用全局變量能夠降低函數(shù)實(shí)參加形參個(gè)數(shù)25/42floatmax,min;floataverage(floatarray[],intn){inti;floatsum=array[0];max=min=array[0];for(i=1;i<n;i++){if(array[i]>max)max=array[i];elseif(array[i]<min)min=array[i];sum+=array[i];}return(sum/n);}main(){inti;floatave,score[10];/*Input……*/ave=average(score,10);printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,ave);}作用域maxmin26/42
改寫函數(shù)swap(),用全局變量實(shí)現(xiàn)兩個(gè)整型數(shù)值交換。27/42變量的生存空間和變量的生存期變量?jī)纱髮傩裕骸?shù)據(jù)類型·存放類別一個(gè)完整變量說明格式以下:存放類別數(shù)據(jù)類型變量名如staticintx,y;28/42存放類別:
存放類別數(shù)據(jù)類型變量名如staticintx,y;C程序存放類別有:
■register型(存放器型)■auto型(自動(dòng)變量型)■static型(靜態(tài)變量型)■extern型(外部變量型)29/42C程序變量存放位置變量生存期靜態(tài)存放區(qū)中變量:與程序“共存亡”動(dòng)態(tài)存放區(qū)中變量:與函數(shù)“共存亡”
存放器中變量:同動(dòng)態(tài)存放區(qū)30/42C程序變量存放類別變量生存期靜態(tài)存放區(qū)中變量與程序“共存亡”動(dòng)態(tài)存放區(qū)中變量與函數(shù)“共存亡”
存放器中變量同動(dòng)態(tài)存放區(qū)■register型(存放器型)變量值存放在運(yùn)算器存放器中——存取速度快,普通只允許2~3個(gè),且限于char型和int型,通慣用于循環(huán)變量■auto型(自動(dòng)變量型)變量值存放在主存放器動(dòng)態(tài)存放區(qū);優(yōu)點(diǎn)——同一內(nèi)存區(qū)可被不一樣變量重復(fù)使用。以上兩種變量均屬于“動(dòng)態(tài)存放型”,即調(diào)用函數(shù)時(shí)才為這些變量分配單元,函數(shù)調(diào)用結(jié)束其值自動(dòng)消失。31/42C程序變量存放類別■static型(靜態(tài)變量型)變量值存放在主存放器靜態(tài)存放區(qū)程序執(zhí)行開始至結(jié)束,一直占用該存放空間■extern型(外部變量型)同上,其值可供其它源文件使用以上兩種均屬于“靜態(tài)存放”性質(zhì),即從變量定義處開始,在整個(gè)程序執(zhí)行期間其值都存在。變量生存期靜態(tài)存放區(qū)中變量與程序“共存亡”動(dòng)態(tài)存放區(qū)中變量與函數(shù)“共存亡”
存放器中變量同動(dòng)態(tài)存放區(qū)32/421.auto變量作用域voidmain(){intx=1;voidprt(void);//函數(shù)申明
{
intx=3;prt();printf(“2ndx=%d\n”,x);
}printf(“1stx=%d\n”,x);}voidprt(void){intx=5;printf(“3thx=%d\n”,x);}運(yùn)行結(jié)果:3thx=52ndx=31stx=1x=1作用域x=1作用域x=3作用域x=5作用域局部變量存放類別33/422.用static申明局部變量:靜態(tài)變量型:變量值存放在主存放器靜態(tài)存放區(qū)程序執(zhí)行開始至結(jié)束,一直占用該存放空間。
函數(shù)中局部變量在函數(shù)調(diào)用結(jié)束后不釋放其占有存放空間,在下一次調(diào)用該函數(shù)時(shí),該變量保留上次函數(shù)調(diào)用結(jié)束時(shí)值。這種局部變量稱為靜態(tài)局部變量。34/42
f(inta){autointb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);}voidmain(){inta=2;for(i=0;i<3;i++)printf(“%d”,f(a));}例考查靜態(tài)局部變量值i=0:a=2b=1c=3+1=4i=1:a=2b=1c=4+1=5i=2:a=2b=1c=5+1=6運(yùn)行結(jié)果:78935/42教材:P205
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)機(jī)租賃市場(chǎng)準(zhǔn)入合同范本資訊4篇
- 二零二五版拌合料生產(chǎn)技術(shù)改造與升級(jí)合同4篇
- 二零二五版建筑工地勞務(wù)用工與綠色施工技術(shù)研發(fā)與推廣合同3篇
- 二零二五版舊設(shè)備買賣及拆解回收再利用合同3篇
- 2025年度綠色交通募集資金三方監(jiān)管與執(zhí)行合同4篇
- 二零二五年度少兒興趣班教室租賃及教學(xué)用品供應(yīng)合同4篇
- 二零二五年度科技園區(qū)場(chǎng)地租賃及研發(fā)合作合同4篇
- 關(guān)于2025年度民法典規(guī)定協(xié)議離婚期限及法律支持4篇
- 二零二五年度智慧社區(qū)建設(shè)合同投標(biāo)單位保密保證
- 二零二五年度外架工程風(fēng)險(xiǎn)評(píng)估與控制服務(wù)合同
- 物業(yè)民法典知識(shí)培訓(xùn)課件
- 2023年初中畢業(yè)生信息技術(shù)中考知識(shí)點(diǎn)詳解
- 2024-2025學(xué)年八年級(jí)數(shù)學(xué)人教版上冊(cè)寒假作業(yè)(綜合復(fù)習(xí)能力提升篇)(含答案)
- 《萬方數(shù)據(jù)資源介紹》課件
- 醫(yī)生定期考核簡(jiǎn)易程序述職報(bào)告范文(10篇)
- 第一章-地震工程學(xué)概論
- 《中國(guó)糖尿病防治指南(2024版)》更新要點(diǎn)解讀
- 初級(jí)創(chuàng)傷救治課件
- 交通運(yùn)輸類專業(yè)生涯發(fā)展展示
- 2024年山東省公務(wù)員錄用考試《行測(cè)》試題及答案解析
- 神經(jīng)重癥氣管切開患者氣道功能康復(fù)與管理專家共識(shí)(2024)解讀
評(píng)論
0/150
提交評(píng)論