int main()
{
int a = 1, b = 2, c = 3, d = 4;
int* ar[5] = { &a,&b,&c,&d };//数组指针 是一个数组,数组中的每个元素可以保存地址
int(*pa)[5];//这个指针变量可以存放数组的地址
*(ar[0]) = 100;
*ar[1] = 200;
return 0;
}
查表法:将一些事先计算好的结果,储存在数组中,用到是直接按下标取数据,以节省运行时的计算时间,以空间换时间。
int Get_YM_Day(int year,int month)
{
int days[] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 };
// 0 1 2 3 4 5 6 7 8 9 10 11 12
if (month == 2 && IsLeap(year))
{
month = 0;
}
return days[month];
}
int main()
{
int year, month;
scanf("%d %d \n", &year, &month);
printf("day :%d\n", Get_YM_Day(year, month));
return 0;
}
给出一个日期,计算它是这一年的第几天
#define YEARERROR -1
#define MONTHERROR -2
#define DAYERROR -3
int Get_YMD_Total(int year, int month, int day)
{
int da = 0;
static const int sum[] = {0,0,31,59,90,120,151,181,212,243,273,304,334,365};
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13
if (year < 1)return YEARERROR;
if (month < 1 || month>12)return MONTHERROR;
if (day < 1 || day>Get_YM_Day(year, month))return DAYERROR;
if (month > 2 && IsLeap(year))
{
da = 1;
}
return sum[month] + day+da;
}
int main()
{
int year, month, day;
int sum = 0;
printf("input year month day:\n");
scanf("%d %d %d", &year, &month, &day);
sum = Get_YMD_Total(year, month, day);
switch (sum)
{
case YEARERROR:
printf("year input error %d\n", year);
break;
case MONTHERROR:
printf("month input error %d\n", month);
break;
case DAYERROR:
printf("day input error %d\n", day);
break;
default:
printf("%d year %d month %d day => %d total \n", year, month, day, sum);
}
printf("%d year %d month %d day=>%d sum\n", year, month, day, sum);
return 0;
}