问题及代码:
/*
*copyright(c)2016,时缔实验室
*All rights reserved.
*文件名称: day_mon1.c
*作 者: 时帝
*完成日期: 2016年4月3日
*版 本 号: v1.0
*
*问题描述:打印出每月的天数;
*输入描述:不需要输入;
*程序输出:输出1到12月份的天数;
*/
#include <stdio.h>
#define MONTHS 12
int main()
{
int days[MONTHS]={31,29,31,30,31,30,31,31,30,31,30,31};//变量days后面无空格,直接接一个[],后面的值用大括号{}。
int index;
for (index=0;index<12;index++)
printf("months has %d days %2d\n",index+1,days[index]);
return 0;
}
运行结果:
知识总结:
这种初始化数组的方式,只适用于ASNI编译器。
学习心得:
注意要用大括号{}来包含数组;
如果需要使用只读数组,可以在int前加const,程序会把数组中每个元素当成常量处理。
2、另一种方式:
#include <stdio.h>
int main()
{
int days[]={31,29,31,30,31,30,31,31,30,31,30,31};//空括号初始化
int index;
for (index=0;index<sizeof days/sizeof days[0];index++)
printf("months has %d days %2d\n",index+1,days[index]);
return 0;
}
知识总结:
用空的括号对数组进行初始化,编译器会自动确认数组大小;
学习心得:
sizeof days 代表整个数组大小;sizeof days[0]代表单个元素大小,两者相除即得数组中元素的数目。
#include <stdio.h>
#define MONTHS 12
int main()
{
int days[MONTHS]={31,85,[2]=35,52,[7]=5,25,48};
int index;
for (index=0;index<sizeof days/sizeof days[0];index++)
printf("months has %d days %2d\n",index,days[index]);
return 0;
}
知识总结:
C99指定初始化项目;
学习心得:
如果初始化[2],后面有不止一个值,则会对后续的数组进行初始化,如[3]即为52。