首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,返回值为何是减1

2012-03-29 
求助,返回值为何是减1?int * GetDate(int wk,int dy)main(){int wk,dydo{printf(Enter week(1-5)day(1-7

求助,返回值为何是减1?
int * GetDate(int wk,int dy);

 main()
 {
 int wk,dy;
 do
 {
 printf(Enter week(1-5)day(1-7)\n);
 scanf(%d%d,&wk,&dy);
 }
 while(wk<1||wk>5||dy<1||dy>7);
 printf(%d\n,*GetDate(wk,dy));
 }

 int * GetDate(int wk,int dy)
 {
 static int calendar[5][7]=
 {
 {1,2,3,4,5,6,7},
 {8,9,10,11,12,13,14},
 {15,16,17,18,19,20,21},
 {22,23,24,25,26,27,28},
 {29,30,31,-1}
 };
 return &calendar[wk-1][dy-1];

}
搞不懂最后这个返回值(return &calendar[wk-1][dy-1];)为何要减1


[解决办法]
因为数组是由0开始的!
[解决办法]
while(wk<1||wk>5||dy<1||dy>7);这里规定了wk的合法范围为1<=wk<=5,dy的合法范围为:1<=dy<=7;
而数组static int calendar[5][7];合法数组下标前者为0-4,后者为0-6,正好比输入的要小1,所以要减1啊。楼主再翻翻书。
[解决办法]

探讨
因为数组是由0开始的!

热点排行