1、新建一個(gè)數(shù)組作為參數(shù)項(xiàng)目,如圖所示:
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比高明網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式高明網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋高明地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。
2、添加一個(gè)array.c文件,如圖所示:
3、包含stdio.h和stdlib.h頭文件,如圖所示:
4、輸入main函數(shù)主體及返回值,如圖所示:
5、定義一個(gè)數(shù)組arr,如圖所示:
6、定義一個(gè)function函數(shù),如圖所示:
7、將數(shù)組作為參數(shù)傳遞給function函數(shù),如圖所示:
8、運(yùn)行程序,輸出結(jié)果,如圖所示:
c語(yǔ)言可以用數(shù)組元素的方法或指針的方法調(diào)用數(shù)組。
int a[100],i;
for(i=0;i100;i++)
scanf("%d",a[i]);
for(i=0;i100;i++)
printf("%d ",a[i]);
也可以:
int a[100],*p;
for(p=a;pa+100;p++)
scanf("%d",p);
for(p=a;pa+100;p++)
printf("%d ",*p);
來(lái)傳送子函數(shù)中的數(shù)組有多種方法——可以通過(guò)函數(shù)返回值返回地址傳遞數(shù)組;也可以通過(guò)函數(shù)輸入?yún)?shù)來(lái)傳遞數(shù)組;還可以通過(guò)全局變量來(lái)傳遞數(shù)組。
子函數(shù)本身可以直接在作用域中進(jìn)行調(diào)用。
1、通過(guò)函數(shù)返回值返回地址傳遞數(shù)組。
聲明函數(shù)時(shí)需要聲明函數(shù)返回值類型為對(duì)應(yīng)數(shù)組的地址,此時(shí)可以返回?cái)?shù)組的地址,結(jié)合數(shù)組元素的地址關(guān)系可以傳遞整個(gè)數(shù)組,同時(shí)可以根據(jù)數(shù)組的特性傳遞多個(gè)參數(shù)。
2、通過(guò)輸入?yún)?shù)傳遞數(shù)組。
聲明函數(shù)時(shí)提供空輸入?yún)?shù),調(diào)用函數(shù)時(shí)提供目標(biāo)數(shù)組,即可以通過(guò)該數(shù)組調(diào)用子函數(shù)中的數(shù)組,該方法也可以用于傳遞多個(gè)參數(shù)。
3、通過(guò)全局變量來(lái)傳遞數(shù)組。
聲明全局變量用于存儲(chǔ)子函數(shù)中的數(shù)組,此時(shí)可以在全局變量作用域中讀取調(diào)用子函數(shù)的數(shù)組。
注意:子函數(shù)是C語(yǔ)言模塊化編程思想的核心,其方法是通過(guò)輸入接口和輸出接口實(shí)現(xiàn)對(duì)黑盒的調(diào)用,故對(duì)其內(nèi)部數(shù)據(jù)的輸入和調(diào)用也需要通過(guò)輸入接口、輸出接口和程序的公共區(qū)域?qū)崿F(xiàn)。
有好幾種方法,我稍微說(shuō)一下,你回去找書看一看:
通過(guò)數(shù)組首地址 指針 帶下標(biāo)的指針引用一維數(shù)組元素。
引用一維數(shù)組中的某一個(gè)元素的方法:
* :求當(dāng)前地址的內(nèi)容 :求當(dāng)前內(nèi)容的地址
1 a【i】
2 *a【i】 //*在定義語(yǔ)句時(shí)代表定義一個(gè)指針變量,當(dāng)在執(zhí)行語(yǔ)句部分時(shí)代表間址運(yùn)算符,引用一個(gè)指針變量指向的地址的內(nèi)容。叫求地址運(yùn)算符,求當(dāng)前內(nèi)容的地址。所以*和就像乘號(hào)和除號(hào)一樣,互相抵消了。
3 *(a+i):在數(shù)組名的地址上,加上i個(gè)存儲(chǔ)單元。代表第(i+1)個(gè)元素,用間址運(yùn)算符引用它,即等價(jià)于a[i]
4 當(dāng)(p=a;||p=a【0】) 則 *(p+i)等價(jià)于a[i]
5 當(dāng)(p=a;||p=a[0]) 則 p[i] 等價(jià)于 a[i] //方括號(hào)不僅表示數(shù)組元素的記方括號(hào)不僅表示數(shù)組元素的記方括號(hào)不僅表示數(shù)組元素的記方括號(hào)不僅表示數(shù)組元素的記號(hào)號(hào)號(hào)號(hào),也是一種運(yùn)算符也是一種運(yùn)算符也是一種運(yùn)算符也是一種運(yùn)算符.
總結(jié):引用一維數(shù)組元素 a[i] 的四種方法: a[i] *(a+i) 若p=a, 則 p[i] *(p+i) 表示a[i]的地址的方法:a[i] a+i p+i 都表示當(dāng)前數(shù)組第i個(gè)元素的地址。
這是引用的網(wǎng)頁(yè),你可以自己去看看!
程序是什么功能,有什么錯(cuò)誤 ,請(qǐng)說(shuō)明。 追問(wèn): 編寫程序求兩個(gè)整數(shù)的所有質(zhì)公約數(shù)、最大公約數(shù)、最小公倍數(shù)和兩個(gè)數(shù)之差的絕對(duì)值。要求分別編寫五個(gè)函數(shù)分別實(shí)現(xiàn)求兩個(gè)整數(shù)的最小質(zhì)公約數(shù)int zgys(int x,int y)、所有質(zhì)公約數(shù)void zgyssz(int a[100],int x,int y)、最大公約數(shù)int gys(int x,int y)、最小公倍數(shù)int gbs(int x,int y)和兩個(gè)數(shù)之差的絕對(duì)值int fun(int x,int y)。 void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i++) { a[i]=zgys(x,y); if(a[i]==1)break; x=x/a[i];y=y/a[i]; } } int gys(int x,int y) { int i,j=0,a[100]; void zgyssz(int a[100],int,int); zgyssz(a[100],x,y); { int t=1; for(i=0;ij;i++)t=t*a[i]; return t; } } 回答: 哪些函數(shù)是對(duì)應(yīng)的功能。還有,不是要5個(gè)函數(shù)嗎,怎么只有三個(gè)的。 追問(wèn): void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i++) { a[i]=zgys(x,y); if(a[i]==1)break; x=x/a[i];y=y/a[i]; } } int gys(int x,int y) { int i,j=0,a[100]; void zgyssz(int a[100],int,int); zgyssz(a[100],x,y); { int t=1; for(i=0;ij;i++)t=t*a[i]; return t; } } 那三個(gè)是 int zgys(int x,int y) { int f=1,i,min; min=xy?x:y; for(i=2;i=min;i++) {/*判斷i是否是x與y的公約數(shù)*/ if(x%i==0y%i==0) f=i; break; } return f; } int gbs(int x,int y) { return x*y/gys(x,y); } int fun(int x,int y) { if(xy)return y-x; else return x-y; } 這三個(gè)我做出來(lái)了。 回答: 直接說(shuō),哪個(gè)函數(shù)是什么功能的就行了。還有就是,哪個(gè)函數(shù)有問(wèn)題。 追問(wèn): 最小公倍數(shù) int gbs(int x,int y){ return x*y/gys(x,y);} 兩個(gè)數(shù)之差的絕對(duì)值 int fun(int x,int y){ if(xy)return y-x; else return x-y;} 求兩個(gè)整數(shù)的最小質(zhì)公約數(shù) int zgys(int x,int y){ int f=1,i,min; min=xy?x:y; for(i=2;i=min;i++) {/*判斷i是否是x與y的公約數(shù)*/ if(x%i==0y%i==0) f=i; break; } return f;} 求兩個(gè)整數(shù)的所有質(zhì)公約數(shù) void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i++) { a[i]=zgys(x,y); if(a[i]==1)break; x=x/a[i];y=y/a[i]; }} 求兩個(gè)整數(shù)的最大公約數(shù) int gys(int x,int y){ int i,j=0,a[100]; void zgyssz(int a[100],int,int); zgyssz(a[100],x,y); { int t=1; for(i=0;ij;i++)t=t*a[i]; return t; }} 后兩個(gè)有問(wèn)題,弄不出來(lái) 回答: #includestdio.h int n; void main() { int zgys(int x,int y); void zgyssz(int a[ ],int x,int y); int gys(int x,int y); int a,b,c; printf("請(qǐng)輸入兩個(gè)數(shù):"); scanf("%d%d",a,b); c=gys(a,b); printf("%d\n",c); } void zgyssz(int a[ ],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i++) { a[i]=zgys(x,y); if(a[i]==1)break; x=x/a[i];y=y/a[i]; } n=i+1; } int gys(int x,int y) { int i,j=0,a[100]; void zgyssz(int a[100],int,int); zgyssz(a,x,y); { int t=1; for(i=0;in;i++)t=t*a[i];//這里的個(gè)數(shù)應(yīng)該是a[i]的個(gè)數(shù)n。定為全局變量 return t; } } int zgys(int x,int y) { int f=1,i,min; min=xy?x:y; for(i=2;i=min;i++) { if(x%i==0y%i==0) { f=i; break; //break要放里面。 } } return f; }
希望采納
對(duì)于有數(shù)組參數(shù)的函數(shù),編譯程序要為其開(kāi)辟相應(yīng)的內(nèi)存空間,而程序中兩個(gè)函數(shù)
都有數(shù)組參數(shù)a[n][m],由于n,m是變量,編譯程序并不知道n,m的具體值,所以不能
通過(guò)編譯。
修改:
1.在#include下面添加以下偽指令:
#define n 5
#define m 5
2.將函數(shù)的參數(shù)形式改為:
int sum(int a[n][m]);
void pl(int a[n][m]);
并按此修改程序文件中所有關(guān)于這兩個(gè)函數(shù)的申明和調(diào)用即可
文章題目:c語(yǔ)言數(shù)組函數(shù)調(diào)用,c語(yǔ)言數(shù)組的函數(shù)調(diào)用
URL分享:http://jinyejixie.com/article20/dssdhco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、云服務(wù)器、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)