| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 642 人关注过本帖
标题:一个很简单的C++问题 求解
只看楼主 加入收藏
chenxinsong
Rank: 1
等 级:新手上路
帖 子:24
专家分:3
注 册:2011-3-10
结帖率:70%
收藏
 问题点数:0 回复次数:7 
一个很简单的C++问题 求解
输入某月某日,判断这一天是这一年的第几天?     
这个题用C语言我不会做希望大家能帮帮我。
搜索更多相关主题的帖子: C语言 
2011-03-11 06:46
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
有年份才会更准确,因为2月份可能28天或29天。
给你个思路:建立一个整形数组,分别存放1...12月份的天数(2月份天数根据年份确定)然后用一个循环计算某月之前的各月天数之和,再加某日,可也!

★★★★★为人民服务★★★★★
2011-03-11 08:04
张宇123
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-2-27
收藏
得分:0 
#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天吧
2011-03-11 14:50
chenxinsong
Rank: 1
等 级:新手上路
帖 子:24
专家分:3
注 册:2011-3-10
收藏
得分:0 
谢谢你   但是我怎么运行不起啊
2011-03-11 15:50
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
直接用库函数也行:
程序代码:
#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 编辑 ]
2011-03-15 21:39
loveminttea
Rank: 3Rank: 3
来 自:河南科技学院
等 级:论坛游侠
帖 子:95
专家分:146
注 册:2010-10-14
收藏
得分:0 
支持2楼~
2011-03-16 20:57
lphear
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-19
收藏
得分:0 
5楼的比较好哎~
2011-03-19 12:14
lisanhu1
Rank: 2
等 级:论坛游民
帖 子:31
专家分:78
注 册:2010-6-24
收藏
得分:0 
呃,你是要用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;
}
2011-03-19 17:18
快速回复:一个很简单的C++问题 求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020911 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved