




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
編寫程序輸出3到10000內(nèi)可逆素數(shù)??赡嫠財?shù)是指:一個素數(shù)將其各位數(shù)字次序倒過來組成反序數(shù)也是素數(shù)。如157和751均為素數(shù),它們是可逆素數(shù)。要求:使用函數(shù)實現(xiàn),最少兩個函數(shù)。
1/42設(shè)計main()主函數(shù):在3~10000內(nèi)經(jīng)過調(diào)用函數(shù),找出可逆素數(shù)。intprime(inta)函數(shù):用于判定素數(shù),返回“1”為素數(shù)。intinvert(inta)函數(shù):用于倒序一個數(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簡單變量作函數(shù)參數(shù)
實參
實參實參
主調(diào)函數(shù)
被調(diào)函數(shù)
形參
形參
形參
調(diào)用時
執(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ù)實參——值傳遞例1.兩個數(shù)組大小比較(教材:P193)輸入10個數(shù),輸出其中值最大元素和該數(shù)是第幾個數(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ù)組元素值傳遞給形參,這么形參和實參就共指內(nèi)存同一段空間。當(dāng)形參數(shù)組中數(shù)據(jù)發(fā)生改變時,實參數(shù)組元素值同時發(fā)生改變。了解:11/42數(shù)組名作函數(shù)參數(shù)實參和形參在主調(diào)函數(shù)與被調(diào)函數(shù)分別定義數(shù)組,且類型一致形參數(shù)組大小可不指定如:array[]2.數(shù)組名作函數(shù)參數(shù):12/42例求學(xué)生平均成績#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ù)組定義,
intstu[]..2109score562312….….88stu13/42修改實現(xiàn)兩個整數(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請兩位同學(xué)將冒泡法排序程序改寫成函數(shù)調(diào)用方式(用數(shù)組名調(diào)用)。一位同學(xué)完成主程序;一位同學(xué)完成函數(shù)定義;注意:協(xié)商好函數(shù)名稱參數(shù)個數(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),實現(xiàn)兩個整型數(shù)值交換。voidswap(intx,inty){intt;t=x;x=y;y=t;}21/42局部變量:
在一個函數(shù)內(nèi)部說明變量是局部變量,它只在該函數(shù)范圍內(nèi)有效。全局變量:
在函數(shù)外部定義變量稱為全局變量。全局變量不屬于任何一個函數(shù),其作用域是:從定義位置開始,到本文件結(jié)束為止。生存空間22/42局部變量特點局部變量---內(nèi)部變量特點: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]);}運行結(jié)果:54321運行結(jié)果:main:a=3,b=4sub:a=6,b=7main:a=3,b=424/42全局變量---外部變量有效范圍:從定義變量位置開始到根源文件結(jié)束
應(yīng)盡可能少使用全局變量,因為:全局變量在程序全部執(zhí)行過程中占用存放單元降低了函數(shù)通用性、可靠性,可移植性降低程序清楚性,輕易犯錯優(yōu)點缺點增加了函數(shù)間數(shù)據(jù)聯(lián)絡(luò)渠道。利用全局變量能夠降低函數(shù)實參加形參個數(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(),用全局變量實現(xiàn)兩個整型數(shù)值交換。27/42變量的生存空間和變量的生存期變量兩大屬性:·數(shù)據(jù)類型·存放類別一個完整變量說明格式以下:存放類別數(shù)據(jù)類型變量名如staticintx,y;28/42存放類別:
存放類別數(shù)據(jù)類型變量名如staticintx,y;C程序存放類別有:
■register型(存放器型)■auto型(自動變量型)■static型(靜態(tài)變量型)■extern型(外部變量型)29/42C程序變量存放位置變量生存期靜態(tài)存放區(qū)中變量:與程序“共存亡”動態(tài)存放區(qū)中變量:與函數(shù)“共存亡”
存放器中變量:同動態(tài)存放區(qū)30/42C程序變量存放類別變量生存期靜態(tài)存放區(qū)中變量與程序“共存亡”動態(tài)存放區(qū)中變量與函數(shù)“共存亡”
存放器中變量同動態(tài)存放區(qū)■register型(存放器型)變量值存放在運算器存放器中——存取速度快,普通只允許2~3個,且限于char型和int型,通慣用于循環(huán)變量■auto型(自動變量型)變量值存放在主存放器動態(tài)存放區(qū);優(yōu)點——同一內(nèi)存區(qū)可被不一樣變量重復(fù)使用。以上兩種變量均屬于“動態(tài)存放型”,即調(diào)用函數(shù)時才為這些變量分配單元,函數(shù)調(diào)用結(jié)束其值自動消失。31/42C程序變量存放類別■static型(靜態(tài)變量型)變量值存放在主存放器靜態(tài)存放區(qū)程序執(zhí)行開始至結(jié)束,一直占用該存放空間■extern型(外部變量型)同上,其值可供其它源文件使用以上兩種均屬于“靜態(tài)存放”性質(zhì),即從變量定義處開始,在整個程序執(zhí)行期間其值都存在。變量生存期靜態(tài)存放區(qū)中變量與程序“共存亡”動態(tài)存放區(qū)中變量與函數(shù)“共存亡”
存放器中變量同動態(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);}運行結(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ù)調(diào)用結(jié)束時值。這種局部變量稱為靜態(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運行結(jié)果:78935/42教材:P205
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政組織理論的知識拓展策略試題及答案
- 計算機二級MySQL與數(shù)據(jù)安全試題及答案
- 2025年N1叉車司機理論考試題及答案
- 網(wǎng)絡(luò)技術(shù)領(lǐng)域的標(biāo)桿企業(yè)分析試題及答案
- 行政組織溝通與協(xié)調(diào)考題及答案
- 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的規(guī)范試題及答案
- 公司工會干部管理制度
- 學(xué)校軍訓(xùn)安全管理制度
- 在建油庫安全管理制度
- 土地報批部門管理制度
- 繪本故事:睡睡鎮(zhèn)
- 酒店住宿水單模板1
- 供應(yīng)鏈信息管理教學(xué)課件
- 工藝管道安裝質(zhì)量控制
- 人工智能導(dǎo)論知到章節(jié)答案智慧樹2023年東北石油大學(xué)
- 麻醉與肝臟專題知識講座
- 定位搶救在危重患者搶救中的應(yīng)用
- (職業(yè)技能考試題庫)起重機械指揮知識點練習(xí)題庫、安裝起重工技能理論知識點題庫
- 體育保健學(xué)復(fù)習(xí)題
- 高中英語完形填空試題(有答案和解析)
- 糧食作物栽培學(xué):江蘇紅粒冬小麥產(chǎn)業(yè)發(fā)展趨勢展望
評論
0/150
提交評論