专升本练习题 4

题目:输入某年某月某日,判断这一天是这一年的第几天?

题目解析:很基础的一道练习题,可以用数组if-elseswitch case来实现

要点注意:注意闰年时候需要将二月的天数+1

闰年的条件:(year%4==0&&year%100!=0 || year%400==0)

能被4整除却不能被100整除或能被400整除的年份

具体代码(数组实现):

#include <stdio.h>

int main(){
	int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int y,m,d,day=0;
	scanf("%d%d%d",&y,&m,&d);
	if(y%4==0 && y%100!=0 || y%400==0)
		a[1]++;
	for(int i=0 ; i<m-1 ; i++)
		day+=a[i];
	printf("%d",day+d);
}

具体代码(if-else实现):
 

#include <stdio.h>

int main() {
    int y,m,d;
    int day=0;
    int isLeap=0;
    scanf("%d %d %d",&y,&m,&d);
    if(y%4==0&&y%100!=0 || y%400==0){
        isLeap=1;
    }
    if(m==1)
        day=d; 
    else if(m==2)
        day=d+31;
    else if(m==3)
        day=d+59;
    else if(m==4)
        day=d+90;
    else if(m==5)
        day=d+120;
    else if(m==6)
        day=d+151;
    else if(m==7)
        day=d+181; 
    else if(m==8)
        day=d+212; 
    else if(m==9)
        day=d+243;
    else if(m==10)
        day=d+273; 
    else if(m==11)
        day=d+304;
    else if(m==12)
        day=d+334;
    printf("%d",day+isLeap);
}

具体代码(switch case实现):

#include <stdio.h>

int main() {
    int y,m,d;
    int day=0;
    int isLeap=0;
    scanf("%d %d %d",&y,&m,&d);
    if(y%4==0&&y%100!=0 || y%400==0){
        isLeap=1;
    }
    switch(m){
    	case 1: day=d; break;
    	case 2: day=d+31; break;
    	case 3: day=d+59; break;
	    case 4: day=d+90; break;
	    case 5: day=d+120; break;
	    case 6: day=d+151; break;
	    case 7: day=d+181; break;
	    case 8: day=d+212; break;
	    case 9: day=d+243; break;
	    case 10: day=d+273; break; 
	    case 11: day=d+304; break;
		default: day=d+334;
    }
	printf("%d",day+isLeap);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值