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