PAT乙级1023试题

                如果在定义字符数组时不进行初始化,则数组中个元素的值是不可预料的。如果花括号中提供的初始值的初值个数(即字符个数)大于数组长度,则会出现语法错误。如果初始值个数小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定义为空字符(即'\0')

                 如果定义的是数字数组,不初始化元素的值不可预料,如果给定的初始值小于数组个数,则其余元素会自动赋值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;
}

下图是没有初始化字符数组出现的乱码现象

注:在定义数组的时候,尽量给数组初始化,养成好的编码习惯


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值