JMUikun

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

18组chap 3学习总结

 通过几周的c语言学习,我们大体了解了c语言的基本知识,但这都只是冰山一脚。我们已经基本掌握了for循环,while循环,do-while循环,Switch-case循环等等,搭配上if else的判断已经可以写出一部分简单代码。比如这一题:

本题要求编写程序计算某年某月某日是该年中的第几天

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:

在一行输出日期是该年中的第几天

我们可以用简单方法:

#include<stdio.h>
#include<math.h>
int main()
{int a,b,c;
    int m=0;
    scanf("%d/%d/%d",&a,&b,&c);
    if(a%4==0&&a%100!=0||a%400==0){
        if (b==1){m=0;}
        if (b==2){m=31;}
        if (b==3){m=60;}
        if (b==4){m=91;}
        if (b==5){m=121;}
        if (b==6){m=152;}
        if (b==7){m=182;}
        if (b==8){m=213;}
        if (b==9){m=244;}
        if (b==10){m=274;}
        if (b==11){m=305;}
        if (b==12){m=335;}
    }
    else{if (b==1){m=0;}
        if (b==2){m=31;}
        if (b==3){m=59;}
        if (b==4){m=90;}
        if (b==5){m=120;}
        if (b==6){m=151;}
        if (b==7){m=181;}
        if (b==8){m=212;}
        if (b==9){m=243;}
        if (b==10){m=273;}
        if (b==11){m=304;}
        if (b==12){m=334;}    
    }
    m=m+c;
    printf("%d",m);
    return 0;
}

但这样代码非常的长且不精简,所以我们可以再用if来缩短代码长度:

#include<stdio.h>
#include<math.h>
int main()
{int a,b,c;
    int m=0;
    scanf("%d/%d/%d",&a,&b,&c);
        if (b==1){m=0;}
        if (b==2){m=31;}
        if (b==3){m=59;}
        if (b==4){m=90;}
        if (b==5){m=120;}
        if (b==6){m=151;}
        if (b==7){m=181;}
        if (b==8){m=212;}
        if (b==9){m=243;}
        if (b==10){m=273;}
        if (b==11){m=304;}
        if (b==12){m=334;}
        if(a%4==0&&a%100!=0&&b>=3||a%400==0&&b>=3){
            m=m+1;
        }
    m=m+c;
    printf("%d",m);
    return 0;
}

但重复使用if的性能消耗太大了,建议使用Switch-case组合:

#include<stdio.h>
#include<math.h>
int main()
{int a,b,c;
int m=0;
scanf("%d/%d/%d",&a,&b,&c);
switch(b){
case 2:m=m+31;break;
case 3:m=m+59;break;
case 4:m=m+90;break;
case 5:m=m+120;break;
case 6:m=m+151;break;
case 7:m=m+181;break;
case 8:m=m+212;break;
case 9:m=m+243;break;
case 10:m=m+273;break;
case 11:m=m+304;break;
case 12:m=m+334;break;
case 1:m=m+0;break;}
if(a%4==0&&a%100!=0&&b>=3||a%400==0&&b>=3){
m=m+1;
}
m=m+c;
printf("%d",m);
return 0;
}

来节省电脑的性能消耗。

之后我们将学习更多的C语言知识来解决更加复杂的问题,以上是我们小组的学习总结。

posted on 2022-10-09 21:02  鸡美大学的ikun  阅读(33)  评论(0)    收藏  举报