⑴ 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]='