A. c語言數組怎麼輸出全部
C語言數組輸出全部步驟如下:
1、首先打開c語言項目,然後創建一個int類型的數組。
B. c語言中函數能返回一個數組嗎
不能直接返回一個數組,但是可以用其他方式實現類似功能。
方法1:利用全局變數
分析:全局變數作為C語言的一個知識點,雖然我們都了解它的特點,但在實際教學過程中應用得並不是很多。由於全局變數的作用域是從定義變數開始直到程序結束,而對於編寫有多個返回值的C語言函數,我們可以考慮把要返回的多個值定義成全局變數。當函數被調用時,全局變數被更改,我們再把更改後的全局變數值應用於主調函數中。函數被調用後被更改後的全局變數值即為函數的數個返回值。下面以一個實例演示該方法的應用。
實例1:編寫函數求3個數中的最大值與最小值。
方法:把最大值、最小值分別定義成2個全局變數max、min,在用戶自定義函數中把求出來的最大值與最小值分別賦給全局變數max、min。函數調用完畢後全局變數的max、min值即保存了函數要求返回的值。程序參考代碼如下:
#include "stdio.h"
#include "conio.h"
int max,min;/*定義兩個全局變數用於保存函數返回值*/
void max_min(int a,int b,int c) /*定義求最大最小值的函數*/
{max=min=a; /*初始化最大最小值*/
if(max if(max if(min>b)min=b;
if(min>c)min=c;
}
main()
{int x,y,z;
printf(" 請輸入3個整數:\n");
scanf("%d,%d,%d",&x,&y,&z);
max_min(x,y,z) ;/*調用求最大值與最小值的函數*/
printf("三個數中的最大值為:%d;最小值為:%d",max,min);/*輸出最大值與最小值*/
getch();
}
調試結果如下:
請輸入3個整數:
5,-6,2
三個數中的最大值為:5;最小值為:-6
注意:該方法雖然可以實現有多個返回值的函數,但由於全局變數不能保證值的正確性(因為其作用域是全局,所以程序范圍內都可以修改它的值,如果出現錯誤將非常難以發現),並且全局變數增加了程序間模塊的耦合,所以該方法要慎用。
方法2:傳遞數組指針
分析:在教學過程中,我們知道C語言函數參數的傳遞方式有值傳遞與地址傳遞。當進行值傳遞時,主調函數把實參的值復制給形參,形參獲得從主調函數傳遞過來的值運行函數。在值傳遞過程中被調函數參數值的更改不能導致實參值的更改。而如果是地址傳遞,由於傳遞過程中從實參傳遞過來的是地址,所以被調函數中形參值的更改會直接導致實參值的更改。因此,我們可以考慮把多個返回值作為數組元素定義成一個數組的形式,並使該數組的地址作為函數的形式參數,以傳址方式傳遞數組參數。函數被調用後,形參數組元素改變導致實參改變,我們再從改變後的實參數組元素中獲得函數的多個返回值。以下實例演示該方法的應用。
實例2:編寫函數求一維整形數組的最大值與最小值,並把最大值與最小值返回給主調函數。
方法:以指針方式傳遞該一維數組的地址,然後把數組的最大值與數組的第一個元素交換,把數組的最小值與最後一個元素交換。函數被調用完畢後,實參數組中的第一元素為數組的最大值,實參數組中最後一個元素為數組的最小值,從而實現返回數組的最大值與最小值的功能。程序參考代碼如下:
#include "stdio.h"
#include "conio.h"
void max_min(int *ptr,int n) /*定義求數組最大值最小值的函數,傳遞數組指針*/
{int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/
int *temp;/*用於交換位置*/
*temp=*ptr;
for(i=0;i{
if(*ptr<*(ptr+i))/*最大值與第一個元素進行交換*/
{
k=i;
*temp=*ptr;
*ptr=*(ptr+k);
*(ptr+k)=*temp ;
}
if(*(ptr+n-1)>*(ptr+i))/*最小值與最後一個元素進行交換*/
{
j=i;
*temp =*(ptr+n-1);
*(ptr+n-1)=*(ptr+j);
*(ptr+j)= *temp ;}
}
}
/*調用最大最小值函數*/
main()
{
int A[6],i;
for(i=0;i<6;i++)
scanf("%d",&A[i]);
max_min(A,6);
printf("max=%d, min=%d\n \n",A[0],A[5]);
getch();
}
調試結果如下:
請輸入6個整形數,以空格隔開:
5 8 9 32 -6 4
max=32,min=-6
注意:該方法適用於多個返回值的數據類型一致的情況。當返回值數據類型不一致時,不適用該方法
C. 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
(3)c語言函數輸出數組擴展閱讀:
注意事項
1、數組的維度必須是一個常量表達式
int main(void)
{
constexpr int i = 20;
int j = 5;//不是常量表達式
int arr1[i];//正確
int arr2[j];//錯誤
system("pause");
return 0;
}
2、默認情況下,數組的元素被默認初始化。
而且需要注意的是,和內置類型的變數一樣,如果在函數內部定義了某種內置類型的數組,那麼默認初始化會令數組有未定義的值。
D. C語言如何用一個自定義函數列印一個二維數組
二維數組無法作為參數直接傳遞給函數,但是可以利用二維數組內部數據的連續性,將二維數組的地址按照一維數組的方式傳遞給函數,並傳入對應的行列數,從而實現函數內列印二維數組的效果。
以整型為例,具體方式如下:
voidprint_array(int*a,intm,intn)//a為一個m行,n列的二維數組的首地址。
{
inti,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d,",a[i*n+j]);//a[i*n+j]也就是原始二維數組第i行第j列的元素。
}
printf(" ");//每行結束輸出換行。
}
}
E. C語言用返回指針值的函數輸出數組
因為input()函數創建的數組num[5]作用域在input()函數之內,當input()函數調用結束後,這段內存會被回收,也就是裡面的值會變成其他數。修改辦法是在堆區創建數組變數手動釋放內存!
修改後:
F. c語言函數返回數組
函數是無法返回數組的,只能返回指針,但返回指針的弊端是指針指向的內存不能是函數的局部變數的。所以還得用傳出參數,有兩個辦法,一是直接用一個array就搞定,另它的每一行的最後一列是計算出來的平均值;另一個方法就是再傳入進去一個指針,返回平均數。第一種可以不修改當前介面直接改,但如果無所謂還是第二種比較好,代碼如下:
voidstudent_aver(floatarray[3][3],floataverage[3]){
inti,j;
floatsum;
for(i=0;i<3;i++){
sum=0;
for(j=0;j<3;j++)
sum=sum+array[i][j];
average[i]=sum/3;
}
}
G. C語言如何用函數輸入輸出二維數組
#include <stdio.h>
int a[10][10];
int main()
{
int i , j;
//input data
for( i = 0; i < 10; i++)//多少行
{
for(j = 0; j < 10; j++)//多少列
{
scanf("%d", &a[i][j]);//輸入第i行j列的值
}
}
//ouput data
for( i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
{
printf("%d ",a[i][j]);
}
}
return 0;
}
H. C語言數組的輸入輸出函數
你輸入的\0被認為是2個字元。
'\\'和'0',不是'\0'
至於輸入abcdefghij時出問題,那是數組邊界問題。
用字元數組保存字元串時,要預留一個數組成員,用來保存結尾符號'\0'。
所以char[10]只能保存長度為9的字元串。
printf輸出字元串的時候,只有遇到'\0'才會停止輸出。
'\0'的值就是0.它會一直輸出直到在後面連續的內存里遇到'\0'
I. C語言數組的輸出函數
#include
"stdio.h"
void
input(int
a[10])
//給一維數組輸入數據
{
int
i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
void
output(int
a[10])
//輸出一維數組輸入數據
{
int
i;
for(i=0;i<10;i++)
printf("%d
",a[i]);
}
int
main()
{
int
b[10];
input(b);
//調用input函數給數組b賦值
output(b);//調用output函數輸出數組b中的值
}
J. c語言怎麼輸出一個我定義的數組
提供兩個辦法:
1.在主調函數中建立數組,將數組指針傳給自定義的函數,處理後主調函數中的數組值也就變化了。
void fun(int a[],int n){
........
}//其中a[]就是要輸入的數組,n是這個數組的長度。
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0};
fun(arry,10);
......
}
2.可以在主調函數中建立數組並把首地址和長度傳給函數,在函數中創建一個動態數組,處理完後把動態數組的首地址返回主調函數,最後在主調函數中釋放動態申請的內存。
int *fun(int a[],int n){
int *p=(int *)malloc(n*sizeof(int));//申請內存.
if(!p){//判斷是否申請成功.
printf("failure..駭笭糞蝗荼豪諷通釜坤.");
exit(0);
}
memcpy(p,a,n*sizeof(int));//把主調函數的數組拷貝過來.
......
return p;
}
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0},*ptmp;
ptmp=fun(arry,10);
......
free(ptmp);//釋放申請的空間.
}
數組的內容是不能一一傳給函數的……