PAT乙级1023试题
如果在定义字符数组时不进行初始化,则数组中个元素的值是不可预料的。如果花括号中提供的初始值的初值个数(即字符个数)大于数组长度,则会出现语法错误。如果初始值个数小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定义为空字符(即'\0')
#include <stdio.h>
int main()
{
int b[10];
char c[50]={'0'}; //如果数组c不初始化,则会出现输出结果乱码的现象
int i,j,m;
m=0;
for(i=0;i<10;i++)
{
scanf("%d",&b[i]);
} //初始化输入10个数字b[10]
for(i=1;i<10;i++)
{
if(b[i]>0)
{
c[m]=i+48;
m=m+1;
b[i]=b[i]-1;
break;
}
} //判断第一个非零数,赋值给b[0]
for(i=0;i<10;i++)
{
if(b[i]!=0)
{
for(j=0;j<b[i];j++)
{
c[m]=i+48;
m=m+1;
}
}
}
printf("%s",c);
return 0;
}
下图是没有初始化字符数组出现的乱码现象
注:在定义数组的时候,尽量给数组初始化,养成好的编码习惯