| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- #include <stdio.h>
 
  
- /*先考虑从出生到当前日期经过几年,将这几年天数加起来。
 
 - 然后再算出生那年剩多少天结束,以及当前日期是当前年份过了多少天,相加即得活过总天数*/
 
  
- int main()
 
 - {
 
 -         int i, j, k, n;
 
 -         int a, b, c;
 
 -         long int sum_years = 0, sum_months = 0;
 
 -         
 
 -         printf("请输入你的生日(如1988-05-20):");
 
 -         scanf("%d-%d-%d", &i, &j, &k);
 
 -         
 
 -         printf("请输入今天日期(如2016-03-28):");
 
 -         scanf("%d-%d-%d", &a, &b, &c);
 
 -         
 
 -         int num_years[a+1];
 
 -         
 
 -         for( ; i < a; ++i){                                                //i到a间隔几年 
 
 -                 if(i % 4 == 0){                                                //闰年将366天储存在数组中 
 
 -                         num_years[i] = 366;                                                        
 
 -                 }
 
 -                 else{
 
 -                         num_years[i] = 365;                                //不是闰年将365天储存在数组中 
 
 -                 }
 
 -         }
 
 -         num_years[a] = '\0';
 
 -         for( ; i < a ; i++)
 
 -                 sum_years = sum_years + num_years[i];        //将数组中数求和 
 
 -         printf("%ld", sum_years);
 
 -  } 
 
  复制代码 
 
 
第一部分,只算间隔几年,将这几年天数求和,为什么不行,运行之后输入示例年份,运行结果是0 
请大佬指教是哪里出了问题 
你的第一个for循环在执行的过程中i不停的自加,再执行完之后等于a-1,那么你在执行第二个for循环的时候相当直接从a-1开始了,等于第二个for循环没有执行,输出的sum_years自然等于你的初始化的值,也就是零。解决方案就是你再执行第一次for循环之前,将i的值保存到一个新的变量里,第二次for循环里用新的变量作为判断条件而不是i。 
修改过的代码如下:
 - #include <stdio.h>
 
  
- /*先考虑从出生到当前日期经过几年,将这几年天数加起来。
 
 - 然后再算出生那年剩多少天结束,以及当前日期是当前年份过了多少天,相加即得活过总天数*/
 
  
- int main()
 
 - {
 
 -         int i, j, k, n;
 
 -         int a, b, c;
 
 -         long int sum_years = 0, sum_months = 0;
 
 -         
 
 -         printf("请输入你的生日(如1988-05-20):");
 
 -         scanf("%d-%d-%d", &i, &j, &k);
 
 -         
 
 -         printf("请输入今天日期(如2016-03-28):");
 
 -         scanf("%d-%d-%d", &a, &b, &c);
 
 -         
 
 -         int num_years[a + 1];
 
 -         int tmp = i;
 
 -         
 
 -         for( ; i < a; ++i){                                                                    //i到a间隔几年 
 
 -                 if(i % 4 == 0){                                                //闰年将366天储存在数组中 
 
 -                         num_years[i] = 366;                                                        
 
 -                 }
 
 -                 else{
 
 -                         num_years[i] = 365;                                //不是闰年将365天储存在数组中 
 
 -                 }
 
 -         }
 
 -         num_years[a] = '\0';
 
 -         for( ; tmp < a ; tmp++)
 
 -                 sum_years = sum_years + num_years[tmp];        //将数组中数求和 
 
 -         printf("%ld", sum_years);
 
 -         return 0;
 
 -  } 
 
  复制代码 
 
 
 |   
 
 
 
 |