|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|