无敌大帅哥 发表于 2019-8-14 13:37:58

C语言S1E17~18的课后作业第三题

#include <stdio.h>

int main()
{
       
        int day1, day2, day3;
        int month1, month2, month3;
        int year1, year2, year3;
        long count1 = 0, count2;
       
        int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        printf("请输入你的生日(如1988-05-20):");
        scanf("%d-%d-%d", &year1, &month1, &day1);
       
        printf("请输入今年的日期(如2016-03-28):");
        scanf("%d-%d-%d", &year2, &month2, &day2);
       
        year3 = year1 + 80;
        month3 = month1;
        day3 = day1;
       

        while(1)
        {
                /*if(year1 % 400 == 0 || (year1 % 4 && year1 % 100 != 0))
                {
                        days = 29;               
                }
                else
                {
                        days = 28;
                }*/days = (year1 % 400 == 0 || (year1 % 4 == 0 && year1 % 100 != 0)) ? 29 : 28;
                while(month1 <= 12)
                {
                        while(day1 <= days)
                        {
                               
                                if(year1 == year2 && month1 == month2 && day1 == day2)
                                {
                                        count2 = count1;
                                        printf("你在这个世界上总共生存了%d天\n", count2);
                                }
                               
                                if(year1 == year3 && month1 == month3 && day1 == day3)
                                {
                                        printf("如果能活到80岁,你还剩下%d天\n", count1 -count2);
                                        printf("你已经使用了%.2f\%%的生命,请好好珍惜剩下的时间!\n", (double)count2 / count1 * 100);
                                       
                                        goto FINISH;
                                }       
                                day1++;
                                count1++;       
                        }
                        day1 = 1;
                        month1++;
                }
                month1 = 1;
                year1++;
               
               
        }
FINISH : return 0;


}


重点在if else和三目运算符这边 , 救救孩子吧 ,真的不行呀。

无敌大帅哥 发表于 2019-8-14 13:38:31

顶一下   鱼油快来帮我

人造人 发表于 2019-8-14 14:30:56

无敌大帅哥 发表于 2019-8-14 13:38
顶一下   鱼油快来帮我

我都看不出你的问题是什么,怎么帮?

无敌大帅哥 发表于 2019-8-14 14:56:48

人造人 发表于 2019-8-14 14:30
我都看不出你的问题是什么,怎么帮?

我的意思是
你可以分别用if 和 else语句 与三目运算符 分别检测一次得出的答案是不一样的我是真的没搞明白 枯了

无敌大帅哥 发表于 2019-8-14 14:59:56

本帖最后由 无敌大帅哥 于 2019-8-14 15:01 编辑

一个是

无敌大帅哥 发表于 2019-8-14 15:01:43

另一个是

无敌大帅哥 发表于 2019-8-14 15:02:38

枯了难受呀 老铁

东辰木 发表于 2019-8-14 16:30:52

if(year1 % 400 == 0 || (year1 % 4 && year1 % 100 != 0)) 这句有问题,
if(year1 % 400 == 0 || (year1 % 4 == 0 && year1 % 100 != 0)) ,应该是这样才对

无敌大帅哥 发表于 2019-8-15 01:01:35

东辰木 发表于 2019-8-14 16:30
if(year1 % 400 == 0 || (year1 % 4 && year1 % 100 != 0)) 这句有问题,
if(year1 % 400 == 0 || (year1...

打扰了,可能学傻了 ,这么低级的错误 想半天 哈哈哈哈{:10_266:}
页: [1]
查看完整版本: C语言S1E17~18的课后作业第三题