初学C语言第一个难点--if作业题的两种思维解法

初学C语言,也遇到了不少困难;老师不让我们初学者钻牛角尖的初衷是好的,但是毕竟是男人嘛!都有不服输的性格;而且钻钻牛角尖,也未尝不是一件好事。。下面是今天作业最难的两道题,其实严格来说,这两道题也就是一道题


//1.请用户输入1个年份,判断用户输入的年份是否为闰年,如果是闰年就显示"是闰年",否则就显示"不是闰年".

//满足下面两个条件之一的年份就是闰年

//-> 年份能够被400整除.

//-> 年份能够被4整除但是不能被100整除.


//第一种解题方法:理解难度 一般

#include <stdio.h>


int main(){

    

    printf("请输入一个年份\n");

    int n;

    scanf("%d",&n);

    if (n % 400==0 || (n %4 ==0 && n %100 != 0))

    {

        printf("是闰年\n");

    }

    else

        printf("不是闰年\n");

    return 0;

}



//第二种解题方法:理解难度简单,较繁琐

#include <stdio.h>


int main()

{

    printf("请输入一个年份.\n");

//  年份为n;

    int n;

    

    scanf("%d",&n);

//   年份为n;


//    或者,如果n取余4==0,n就是闰年;

//    其他的,都不是闰年

    

//    如果n取余400==0,那就打印n年是闰年;

    if (n % 400 ==0)  {

        printf("%d年是闰年\n",n);

        //如果n取余100==0,那就打印n不是闰年

    }else if (n %100 == 0){

        printf("%d年不是闰年\n",n);

    }

    //如果n取余4 == 0,那就打印n是闰年

    else if(n %4 == 0){

        printf("%d年是闰年\n",n);


    }

    //其他的年份都不是闰年

    else

        printf("%d年不是闰年\n",n);

    

    return 0;

}


//2.请用户输入1个年份,再输入1个月份,显示这1年的这1月有多少天.


//提示:

//135781012月份,无论是那个年份都有31.

//46911月份,无论是那个年份,都是30.

//如果是2月份,年份是闰年的话那么就有29否则就是28.


//第一种解题方法----代码:简洁;理解难度----一般;

#include <stdio.h>


int main(){

    

    printf("请输入一个年份\n");

    //年份

    int n;

    scanf("%d",&n);

    

    printf("请输入一个月份\n");

    //年份

    int y;

    scanf("%d",&y);

    //如果月份小于1,或者大于十二,就打印输入的月份错误

    if (y<1 || y>12) {

        printf("您输入的月份错误\n");

    }

    

    //如果y = 1,3,5,7,8,10,12

    if (y==1 || y==3 || y==5 || y==7 || y==8 || y==10 || y==12) {

        //打印xx月有31

        printf("%d%d月有31\n",n,y);

      //还有,如果y = 4,6,9,11

    }else if(y==4 || y==6 || y==9 || y==11){

        //打印xx月有30

        printf("%d%d月有30\n",n,y);

    }else if (y ==2){

        //如果n能被400整除;或者n能被4整除,并且n不能被100整除;能满足这两个条件的其中一个,就是闰年

        if (n % 400==0 || (n %4 ==0 && n %100 != 0))

        {//打印闰年的2月有29

            printf("%d%d月有29\n",n,y);

        }

        //打印不是闰年的二月有28

        else{

            printf("%d%d月有28\n",n,y);

        }

        

    }

    return 0;

}


//第二种解题方法:理解简单,相当繁琐,重复


#include <stdio.h>


int main(){

    //年份

    int n;

    //月份

    int y;

    printf("请输入年份\n");

    scanf("%d",&n);

    

    printf("请输入月份\n");

    scanf("%d",&y);



    if (y == 1 ) {

        printf("%d%d月有31",n,y);

    }

    else if (y ==3 ) {

        printf("%d%d月有31",n,y);

    }

    else if (y ==5 ) {

        printf("%d%d月有31",n,y);

    }

    else if (y ==7 ) {

        printf("%d%d月有31",n,y);

    }

    else if (y ==8 ) {

        printf("%d%d月有31",n,y);

    }

    else if (y ==10 ) {

        printf("%d%d月有31",n,y);

        

    }else if (y ==12 ) {

        printf("%d%d月有31",n,y);

    }

    else if (y ==4 ) {

        printf("%d%d月有30",n,y);

    }

    else if (y ==6 ) {

        printf("%d%d月有30",n,y);

    }

    else if (y ==9 ) {

        printf("%d%d月有30",n,y);

    }

    else if (y ==11 ) {

        printf("%d%d月有30",n,y);

    }

    else if (y ==2 ) {

        

        if (n % 400 ==0)  {

            printf("%d%d月有29",n,y);

            

        }else if (n %100 == 0){

            printf("%d%d月有28",n,y);

        }

        

        else if(n %4 == 0){

            printf("%d%d月有29",n,y);

            

        }else

            printf("%d%d月有28",n,y);

        }

    else

        printf("您输入的月份有误\n");

    

    return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值