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