當前位置:首頁 » 編程語言 » c語言用0補數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言用0補數組

發布時間: 2022-07-24 10:58:10

c語言里有沒有把數組元素全部賦值為0的函數

方法一、在定義時賦初值

1、靜態數組

int[3][3]={0};

2、動態數組

int**a=newint*[n];

for(inti=0;i<n;i++)

a[i]=newint[m](0);

方法二、在定義完後賦值

for(inti=0;i<n;i++)

for(intj=0;j<m;j++)

a[i][j]=0;

方法三、用一個循環吧數組所有元素設置為0:

intarr[100];

inti=0;

for(i=0;i<100;i++)

arr[i]=0;//ThiswillmakeallZERO

方法四、

1、全局變數和靜態變數初始化時會自動被設置為0。如果們聲明全局變數,那麼在運行前會變成全0。

intarr[1024];//Thisisglobal

intmain(void)

//statements

2、對於局部數組簡寫的初始化語法。如果一個數組被部分初始化,沒有被初始化的元素會被自動設置為相應類型的0。這是編譯器自動完成的。可以這樣寫:

intmain(void)

intarr[1024]={0};//ThiswillmakeallZERO

//statements

3、可以用memset函數在程序開始時初始化數組。這條命令這在已經修改了數組之後又想將它重置為全0特別有用。

intarr[1024];

arr[5]=67;

memset(ZEROARRAY,0,1024);//ThiswillreinitializealltoZERO

⑵ c語言中一維數組為什麼一定要對長度定義,不能自動補0而二維數組就可以沒有行數長度,自動補0呢

首先要明確數組的在計算機的分配方式。

計算機會分配一塊《連續》的內存給數組來使用,這樣就可以通過《下標》很方便的訪問數組的元素。因此數組的長度就一定是要固定的,因為內存是一直在動態的分配和釋放的,如果數組的長度不固定,那麼數組後面的內存到底還要不要分配給別人。如果分配了,數組忽然要增加,那數組內存就不能是連續的了。

所有定義數組時可以省略的欄位都是因為可以確定長度,才可以省略。不是說一維數組不能省略長度,當對數組中所有元素都初始化的時候是可以省略的。

比如int a[] = {1,2,3,4,5},這么一定可以省略長度,因為數組長度固定是5了。

而二維數組,當不初始化數組中的任何一個元素時,行列都需要制定,這樣才能確定數組的大小。當初始化了其中的元素時,約定製定列數,就可以通過初始化的元素個數,算出最小的行數。

但是行列都不制定就不可以了,比如我初始化了6個元素,即可以是a[2][3]也可以是a[3][2]也可以是a[1][6],會發生歧義,是不允許的。所以二維數組的初始化必須制定一個,至於只必須制定行還是必須制定列,再C語言定義的時候大家預定俗成了制定列,所以就延續下來了。

⑶ 用c語言如何在數字前自動補0

#include<iostream>

usingnamespacestd;

voidmain()

{

inthour=9;

characHour[8]={0};

sprintf(acHour,"%02d",hour);

cout<<acHour;

}

(3)c語言用0補數組擴展閱讀

C語言基本語法

在C程序中,分號是語句終止符,也就是說,每個單獨的語句必須以分號結束。它表示一個邏輯實體的結束。以下是兩個不同的陳述printf("Hello,World! ");return0;

注釋就像幫助C程序中的文本一樣,編譯器會忽略它們。它們以/*開頭並以字元*/結尾,如下所示/*myfirstprograminC*/,不能在注釋中添加註釋,也不會在字元串或字元文字中出現。

⑷ C語言如何定義0數組

是編譯錯誤吧,你這里的n是個變數,到運行時才能確定,但數組在編譯時就要確定長度,所以出錯。建議這樣#define N 100 再用N

⑸ c語言 字元數組 \0

遇到'\0'馬上停止,不會去管他後面是什麼,就算後面是合法的,也不會讀取了!

⑹ c語言中用數組編程

考慮到可能輸入的月份或者日期的天數是單位數,所以採取了前面補零的操作,代碼如下:

#include<stdio.h>
#include<string.h>

intmain()
{
intdate[3];
chara[2][10];
printf("Enteradate(mm/dd/yyyy): ");
scanf("%d/%d/%d",&date[0],&date[1],&date[2]);
if(date[0]<10)
{
a[0][0]='0';
sprintf(a[0]+1,"%d",date[0]);
a[0][2]='';
}

if(date[1]<10)
{
a[1][0]='0';
sprintf(a[1]+1,"%d",date[1]);
a[1][2]='';
}
if(date[0]<10)
{
printf("Youenteredthedate%d%s%d",date[2],a[0],date[1]);
}

if(date[1]<10)
{
printf("Youenteredthedate%d%s%d",date[2],date[0],a[1]);
}

if((date[0]<10)&&(date[1]<10))
{
printf("Youenteredthedate%d%s%s",date[2],a[0],a[1]);
}

return0;
}

⑺ c語言我知道定義數組,在賦值的元素少於定義時的元素的個數時就會補\0

你沒明白字元和字元串在輸出時的區別, 字元就不用說了, 字元串在輸出時, 只需要給出首地址(也不一定是首地址, 任意一個地址), 它就會按內存地址一個接一個的輸出, 直到遇見'\0'

⑻ c語言編程一個5*5的數組,用0把周圍填充

#include"stdio.h"
intmain(void){
inta[5][5],i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i==0||j==0||i==4||j==4)
a[i][j]=0;
else
a[i][j]=i+j+1;
for(i=0;i<5;i++){
for(j=0;j<5;printf("%2d",a[i][j++]));
printf(" ");
}
return0;
}

⑼ c語言中將一維數組放入二維數組中會自動補零嗎

你是怎麼把一維數組放到二維數組的,memcpy?
不會自動補零的,使用二維數組前先memset或者初始化a[x][y] = {0};