c語言數組函數調用函數
Ⅰ 關於c語言中數組作為函數參數的函數之間調用問題
1、新建一個數組作為參數項目,如圖所示:
Ⅱ C語言一維數組函數間的調用
1)首先刪除函數就有問題,你傳入的參數i在哪裡發揮作用了?只是把數組順序版前移了,應權該把k=0改為k=i
2)你在n=getData(a);後面,列印一下a數組的內容,可能這里就不對,這個地方數組是傳不出來的,你可以看看。
3)你查一下數據在函數參數中的用法,在子函數內對數組的修改應該傳不出來,你把a數組作為全局變數使用才有可能得到結果。
Ⅲ C語言 數組 調用函數
對於有數復組參數的函數,制編譯程序要為其開辟相應的內存空間,而程序中兩個函數
都有數組參數a[n][m],由於n,m是變數,編譯程序並不知道n,m的具體值,所以不能
通過編譯。
修改:
1.在#include<>下面添加以下偽指令:
#define n 5
#define m 5
2.將函數的參數形式改為:
int sum(int a[n][m]);
void pl(int a[n][m]);
並按此修改程序文件中所有關於這兩個函數的申明和調用即可
Ⅳ C語言中調用一個函數並加入一個數組要有循環
#include<stdio.h>
intfun(inta[5],intn)//求數組前n個元素的內和容
{
intsum=0,i;
for(i=0;i<n;++i){
sum+=a[i];
}
returnsum;
}
intmain()
{
inta[5]={1,2,3,4,5};
printf("%d ",fun(a,5));
}
Ⅳ c語言中調用函數的返回值,如果是數組,主函數要輸出這個數組怎麼實現啊
用指針,另外保存數據的變數退出函數時不得消失。
例如:
#include<stdio.h>
int * fun(int n)
{
int i;
static int a[100]; // 這里用static
for (i=0;i<n;i++) a[i]=i;
return &a[0];
}
void main()
{
int i,n=5;
int *p; // 聲明指針
p = fun(n); // 返回指針
for (i=0;i<n;i++) printf("%d ",p[i]); // 把 p 看成數版組來輸出權
}
得 0 1 2 3 4
(5)c語言數組函數調用函數擴展閱讀:
注意事項
1、數組的維度必須是一個常量表達式
int main(void)
{
constexpr int i = 20;
int j = 5;//不是常量表達式
int arr1[i];//正確
int arr2[j];//錯誤
system("pause");
return 0;
}
2、默認情況下,數組的元素被默認初始化。
而且需要注意的是,和內置類型的變數一樣,如果在函數內部定義了某種內置類型的數組,那麼默認初始化會令數組有未定義的值。
Ⅵ c語言數組函數調用問題
最後倒數第二行:
scanf("%d",a[3]);
改為
scanf("%d",&a[i]);
與
scanf("%d",&a);同理。
其他的沒問題吧,我有個建議,多注意格式,養成好習慣,找錯誤也方便!
修改如下:
#include<stdio.h>
void SS(int a[3])
{
int i;
for(i=0;i<=2;i++)
a[i]=a[i]+1;
for(i=0;i<=2;i++)
printf("%d",a[i]);
}
void main()
{
int i,a[3];
for(i=0;i<=2;i++)
scanf("%d",&a[i]);
SS(a);
}
Ⅶ c語言 數組、函數調用問題。
這問題說明你對指針的運用還是不熟練的,既然是數組,作為函數參數傳遞的是數組首地址.
#include <stdio.h>
#include <stdlib.h>
void func1(int *array, int size) {
int i,temp;
for (i=0;i<size;i++) {
scanf("%d",&temp); //利用scanf輸入賦值
array[i]=temp;
}
}
//數組array_b根據數組array_a的元素乘以項數獲得元素值
void func2(int *array_a,int *array_b, int size) {
int i;
for (i=0;i<size;i++)
array_b[i]=array_a[i] * i;
}
//輸出數組元素
void print(int *array, int size) {
int i;
for (i=0;i<size;i++)
printf("%d ",array[i]);
printf("\n");
}
int main(void) {
int size; //數組大小
int i;
int *array_a, *array_b; //聲明數組array_a,array_b
scanf("%d", &size);
array_a=malloc(sizeof(int) * size);
array_b=malloc(sizeof(int) * size);
func1(array_a, size);
func2(array_a, array_b, size);
print(array_a,size);
print(array_b,size);
return 0;
}
Ⅷ c語言里 子函數如何調用主函數數組 ,如下面這個如何修改
#include <stdio.h>//望點贊!!
int main(void)
{
void aaa(int *);//聲明函來數自aaa
int x1[3][3];
aaa(x1);
printf("%d\n",x1[1][1]);//{{1,2,3},{4,5,6},{7,8,9}};輸出元素[1][1],很明顯是5
}
void aaa(int *x1[3][3])
{
// x1[3][3]={{10,10,10},{12,12,12},{12,13,13}};//X 不能用初始化數組的方法給已聲明的數組變數賦值
int i,j,tmp=1;
//正確賦值方法
for (i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
x1[i][j]=tmp++;
}
}
//以上代碼相當於x1[3][3]={{1,2,3},{4,5,6},{7,8,9}};
}
Ⅸ c語言其他函數怎麼調用主函數的一個數組
可以定義在主函數外,即定義成全局變數.
也可以以參數形式傳入被調函數中.
比如 定義的是A[M][N]形式的
參數就用int A[M][N]
或者用數組指針int (*p)[N]
Ⅹ c語言數組函數調用
程序是什麼功能,有什麼錯誤 ,請說明。 追問: 編寫程序求兩個整數的所有質公約數、最大公約數、最小公倍數和兩個數之差的絕對值。要求分別編寫五個函數分別實現求兩個整數的最小質公約數int zgys(int x,int y)、所有質公約數void zgyssz(int a[100],int x,int y)、最大公約數int gys(int x,int y)、最小公倍數int gbs(int x,int y)和兩個數之差的絕對值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;i<100;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;i<j;i++)t=t*a[i]; return t; } } 回答: 哪些函數是對應的功能。還有,不是要5個函數嗎,怎麼只有三個的。 追問: void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i<100;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;i<j;i++)t=t*a[i]; return t; } } 那三個是 int zgys(int x,int y) { int f=1,i,min; min=x<y?x:y; for(i=2;i<=min;i++) {/*判斷i是否是x與y的公約數*/ if(x%i==0&&y%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(x<y)return y-x; else return x-y; } 這三個我做出來了。 回答: 直接說,哪個函數是什麼功能的就行了。還有就是,哪個函數有問題。 追問: 最小公倍數 int gbs(int x,int y){ return x*y/gys(x,y);} 兩個數之差的絕對值 int fun(int x,int y){ if(x<y)return y-x; else return x-y;} 求兩個整數的最小質公約數 int zgys(int x,int y){ int f=1,i,min; min=x<y?x:y; for(i=2;i<=min;i++) {/*判斷i是否是x與y的公約數*/ if(x%i==0&&y%i==0) f=i; break; } return f;} 求兩個整數的所有質公約數 void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i<100;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;i<j;i++)t=t*a[i]; return t; }} 後兩個有問題,弄不出來 回答: #include<stdio.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("請輸入兩個數:"); 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;i<100;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;i<n;i++)t=t*a[i];//這里的個數應該是a[i]的個數n。定為全局變數 return t; } } int zgys(int x,int y) { int f=1,i,min; min=x<y?x:y; for(i=2;i<=min;i++) { if(x%i==0&&y%i==0) { f=i; break; //break要放裡面。 } } return f; }
希望點贊