powerwind 发表于 2005-12-6 23:50

C语言编程100例(002)

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

闰年是年份数可以给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=29;
    for(i=0;i<m-1;i++)sum+=month;/*数组从0开始数的(month)*/
    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?
页: [1]
查看完整版本: C语言编程100例(002)