工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1303|回复: 0

C语言编程100例(002)

[复制链接]
发表于 2005-12-6 23:50 | 显示全部楼层 |阅读模式
/*题目:输入某年某月某日,判断这一天是这一年的第几天?*/

闰年是年份数可以给400整除,或能给4整除而不能给100整除
只要注意闰年情况,很容易。

一,

#include<stdio.h>

int main()
{
    static month[]={31,28,31,30,31,30,31,31,30,31,30,31};
    int i,y,m,d,sum=0;
    printf("请输入日期--年 月 日\n");
    scanf("%d%d%d",&y,&m,&d);
    if(y%400==0||(y%4==0&y%100!=0))month[1]=29;
    for(i=0;i<m-1;i++)sum+=month;/*数组从0开始数的(month[0])*/
    sum+=d;
    printf("%d",sum);
}

二,

int main()
{
    int y,m,d,sum=0;
    printf("请输入年月日");
    scanf("%d%d%d",&y,&m,&d);
    switch(m){
        case 12:sum+=30;
        case 11:sum+=31;
        case 10:sum+=30;
        case 9:sum+=31;
        case 8:sum+=31;
        case 7:sum+=30;
        case 6:sum+=31;
        case 5:sum+=30;
        case 4:sum+=31;
        case 3:sum+=28;
        case 2:sum+=31;
        case 1:sum+=0;break;        
        default:printf("data error");
        }
    sum+=d;
    if(y%400==0||(y%4==0&&y%100!=0))
    sum+=1;
    printf("%d",sum);
}

虽然这样简单,但对初学者仍有值得注意的问题:
1,数组界线
2,switch用法的break。为什么在第二种方法中case条件从12而不是从1,最后才用break?
您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-10-19 19:44

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表