注册 登录
编程论坛 C++教室

一个很简单的C++问题 求解

chenxinsong 发布于 2011-03-11 06:46, 642 次点击
输入某月某日,判断这一天是这一年的第几天?     
这个题用C语言我不会做希望大家能帮帮我。
7 回复
#2
cnfarer2011-03-11 08:04
有年份才会更准确,因为2月份可能28天或29天。
给你个思路:建立一个整形数组,分别存放1...12月份的天数(2月份天数根据年份确定)然后用一个循环计算某月之前的各月天数之和,再加某日,可也!
#3
张宇1232011-03-11 14:50
#include<stdio.h>
#include<math.h>
#include<iostream.h>
void main()
{int a;
int month,day;
cout<<"输入某月 某日:";

cin>>month;

cin>>day;
if(month<2)//1
a=day;
else if(month<3)//12
a=31+day;
 else if(month<4)//123
a=31+29+day;
 else if(month<5)//1234
a=31*2+29+day;
 else if(month<6)//12345
a=31*2+30+29+day;
else if(month<7)//123456
a=31*3+30+29+day;
 else if(month<8)//1234567
a=31*3+30*2+29+day;
 else if(month<9)//12345678
a=31*4+30*2+29+day;
 else if(month<10)//123456789
a=31*4+30*3+29+day;
 else if(month<11)//
a=31*5+30*3+29+day;
 else if(month<12)
a=31*5+30*4+29+day;
 else if(month<13)
a=31*6+30*4+29+day;
cout<<"一年的"<<a<<"天";
}
老师说的有道理就算二月29天吧
#4
chenxinsong2011-03-11 15:50
谢谢你   但是我怎么运行不起啊
#5
pangding2011-03-15 21:39
直接用库函数也行:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    struct tm date;
    int year, month, day;

    printf("Input date in format yyyy/mm/dd: ");
    scanf("%d/%d/%d", &year, &month, &day);

    date.tm_year = year - 1900; // year since 1900
    date.tm_mon  = month - 1;   // 0 stands for January.
    date.tm_mday = day;

    // Initialize other fields.
    date.tm_isdst = -1;
    date.tm_hour = 0;
    date.tm_min  = 0;
    date.tm_sec  = 1;


    if ( mktime(&date) == (time_t)(-1) ) {
        fprintf(stderr, "Internal error!\n");
        exit(-1);
    }

    printf("Days in year: %d\n", date.tm_yday + 1);
  

    return 0;
}



[ 本帖最后由 pangding 于 2011-3-15 21:40 编辑 ]
#6
loveminttea2011-03-16 20:57
支持2楼~
#7
lphear2011-03-19 12:14
5楼的比较好哎~
#8
lisanhu12011-03-19 17:18
呃,你是要用C的还是C++的啊
要是C的如下,c++的你自己改下吧
一分也不用给,这个是从书上照搬的,一点也没改,书是《c++语言程序设计》,武汉大学出版社,第170页。
我用这段代码主要是因为我实在想不出更好一点的代码了,这里面尤其是在判断闰年上用的很好,很简洁,求和上用了指针,调用数组很灵活
贴在这希望对你的学习有所帮助
程序代码:
#include "stdio.h"

int sum_day(int(*)[,int,int,int]);

int main (int argc, char *argv[])
{
    int year,month,day,days;
    int day_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
                        {0,31,29,31,30,31,30,31,31,30,31,30,31}};
    printf("Please input: year,month,day\n");
    scanf("%d%d%d",&year,&month,&day);
    days=sum_day(day_tab,year,month,day);
    printf("It is %d day\n",days);
    return 0;
}
int sum_day(int(*p)[13],int y,int m,int d)
{
    int i,leap=0;
   
    leap=y%4==0&&y%100!=0||y%400==0;
    for(i=1;i<m;i++)d+=*(*(p+leap)+i);
    return d;
}
1