标题:哪里错了,题目是输入某年某月某日,判断这一天是这一年的第几天?
只看楼主
zzz
Rank: 1
等 级:新手上路
帖 子:44
专家分:8
注 册:2019-1-12
结帖率:66.67%
已结贴  问题点数:10 回复次数:9 
哪里错了,题目是输入某年某月某日,判断这一天是这一年的第几天?
#include<stdio.h>
 
int main()
 
{   
 
      int i,j,k;
        printf("请输入三个数分别代表某年某月某日:\n");
      scanf("%d%d%d",&i,&j,&k);
      if(((i%4==0)&&!(i%100==0))||(i%400==0)
switch(j)
 {
 case 1:printf("这一天是这一年的第%d天",k);break;
 case 2:printf("这一天是这一年的第%d天",31+k);break;
 case 3:printf("这一天是这一年的第%d天",31+29+k);break;
 case 4:printf("这一天是这一年的第%d天",31+29+31+k);break;
 case 5:printf("这一天是这一年的第%d天",31+29+31+30+k);break;
 case 6:printf("这一天是这一年的第%d天",31+29+31+30+31+k);break;
 case 7:printf("这一天是这一年的第%d天",31+29+31+30+31+30+k);break;
 case 8:printf("这一天是这一年的第%d天",31+29+31+30+31+30+31+k);break;
 case 9:printf("这一天是这一年的第%d天",31+29+31+30+31+30+31+k+31);break;
 case 10:printf("这一天是这一年的第%d天",31+29+31+30+31+30+31+k+31+30);break;
 case 11:printf("这一天是这一年的第%d天",31+29+31+30+31+30+31+k+31+30+31);break;
 case 12:printf("这一天是这一年的第%d天",31+29+31+30+31+30+31+k+31+30+31+30);break;
 default:printf("error\n");
else
 
{
 switch(j)
 {
 case 1:printf("这一天是这一年的第%d天",k);break;
 case 2:printf("这一天是这一年的第%d天",31+k);break;
 case 3:printf("这一天是这一年的第%d天",31+28+k);break;
 case 4:printf("这一天是这一年的第%d天",31+28+31+k);break;
 case 5:printf("这一天是这一年的第%d天",31+28+31+30+k);break;
 case 6:printf("这一天是这一年的第%d天",31+28+31+30+31+k);break;
 case 7:printf("这一天是这一年的第%d天",31+28+31+30+31+30+k);break;
 case 8:printf("这一天是这一年的第%d天",31+28+31+30+31+30+31+k);break;
 case 9:printf("这一天是这一年的第%d天",31+28+31+30+31+30+31+k+31);break;
 case 10:printf("这一天是这一年的第%d天",31+28+31+30+31+30+31+k+31+30);break;
 case 11:printf("这一天是这一年的第%d天",31+28+31+30+31+30+31+k+31+30+31);break;
 case 12:printf("这一天是这一年的第%d天",31+28+31+30+31+30+31+k+31+30+31+30);break;
 default:printf("error\n");

}
 }
}
搜索更多相关主题的帖子: 输入 判断 printf case break 
2019-03-09 09:52
zzz
Rank: 1
等 级:新手上路
帖 子:44
专家分:8
注 册:2019-1-12
得分:0 
2019-03-09 10:05
wp2319570
Rank: 2
等 级:论坛游民
帖 子:30
专家分:66
注 册:2019-3-4
得分:2 
老大,判断某天是一年的第几天不是这么玩的啊
2019-03-09 10:07
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
得分:2 
我懵了
2019-03-09 12:35
wp2319570
Rank: 2
等 级:论坛游民
帖 子:30
专家分:66
注 册:2019-3-4
得分:2 
你可以帮我测试一下这段代码  我简单的测试了几个 没有发现bug

程序代码:
#include <stdio.h>

int main()
{
    int f[]={0,0,-1,0,0,1,1,2,3,3,4,4};
    int y,m,d;
    scanf("%d%d%d",&y,&m,&d);  //输入年月日(YYYY M/MM D/DD) 没有对输入数据有效性进行校验比如输入1900 12 32 也被认为合法数据
    if(((y%4==0 && y%100!=0) || y%400==0) && m>2)
        printf("%d年%d月%d日是%d年的第%d天\n",y,m,d,y,(m-1)*30+f[m-1]+d+1);
    else
       printf("%d年%d月%d日是%d年的第%d天\n",y,m,d,y,(m-1)*30+f[m-1]+d);
    return 0;
}
2019-03-09 12:46
zzz
Rank: 1
等 级:新手上路
帖 子:44
专家分:8
注 册:2019-1-12
得分:0 
回复 3楼 wp2319570
咋弄
2019-03-09 14:23
zzz
Rank: 1
等 级:新手上路
帖 子:44
专家分:8
注 册:2019-1-12
得分:0 

    int f[]={0,0,-1,0,0,1,1,2,3,3,4,4};


这是什么意思
2019-03-09 14:31
微若
Rank: 1
等 级:新手上路
帖 子:24
专家分:1
注 册:2018-3-8
得分:1 
你if语句少了个 ) ,switch前面少了 }
改过来再编译就对了
2019-03-10 01:02
wp2319570
Rank: 2
等 级:论坛游民
帖 子:30
专家分:66
注 册:2019-3-4
得分:1 
月份累加,模30剩下的余数
2019-03-10 07:54
tisyang
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:132
专家分:737
注 册:2011-5-7
得分:2 
直接用 mktime ,然后读取 tm_yday

当然这是投机取巧

程序代码:
#include <stdio.h>
#include <time.h>

int main(int argc, const char *argv[])
{
    int year, mon, day;
    struct tm timeinfo = {0};
    scanf("%d%d%d", &year, &mon, &day);
    timeinfo.tm_year = year - 1900;
    timeinfo.tm_mon = mon - 1;
    timeinfo.tm_mday = day;
    mktime(&timeinfo);
    printf("%d-%02d-%02d is year %d day %d \n", year, mon, day, year, timeinfo.tm_yday + 1);
    return 0;
}

C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
2019-03-11 11:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493479-1-1.html




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

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