当前位置:首页 » 编程语言 » 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};