鱼C论坛

 找回密码
 立即注册
查看: 1205|回复: 4

[已解决]小白求助

[复制链接]
发表于 2021-4-5 13:54:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//这个题目是输入某年某月某日,判断这一天是这一年的第几天?   在不考虑百年的情况下 为什么我输入2020.2.1是第33天呢        求助大佬!
#include <stdio.h>  

void main()
{
        int Y, M, D,d;
        printf("请输入年月日:\n");
        scanf("%d.%d.%d",&Y, &M, &D);
        switch(M)
        {
        case 1: M=0; break;
        case 2: M=31; break;
        case 3: M=59; break;
        case 4: M=90; break;
        case 5: M=120; break;
        case 6: M=151; break;
        case 7: M=181; break;
        case 8: M=212; break;
        case 9: M=243; break;
        case 10: M=273; break;
        case 11: M=304; break;
        case 12: M=334; break;
        }
        if ( M >= 3 && Y%4==0)
        {
                D=D+1;
        }
        d=D+M;
        printf("你输入的是这一年的第%d天\n",d);

}

最佳答案
2021-4-5 13:59:57
你的switch语句已经把M重新赋值了
你下边的判断 if ( M >= 3 && Y%4==0)
        {
                D=D+1;
        }就出问题了
因为M>=3恒为真
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-5 13:59:57 | 显示全部楼层    本楼为最佳答案   
你的switch语句已经把M重新赋值了
你下边的判断 if ( M >= 3 && Y%4==0)
        {
                D=D+1;
        }就出问题了
因为M>=3恒为真
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-5 15:43:42 | 显示全部楼层
洋洋痒 发表于 2021-4-5 13:59
你的switch语句已经把M重新赋值了
你下边的判断 if ( M >= 3 && Y%4==0)
        {

这样啊 那怎么改合适捏
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 15:59:20 | 显示全部楼层
g1063496360 发表于 2021-4-5 15:43
这样啊 那怎么改合适捏

把case语句后边的M换成别的变量,例如days,还有最下边d=D+days
#include <stdio.h>

void main()
{
        int Y, M, D,d,days;
        printf("请输入年月日:\n");
        scanf("%d.%d.%d",&Y, &M, &D);
        switch(M)
        {
        case 1: days=0; break;
        case 2: days=31; break;
        case 3: days=59; break;
        case 4: days=90; break;
        case 5: days=120; break;
        case 6: days=151; break;
        case 7: days=181; break;
        case 8: days=212; break;
        case 9: days=243; break;
        case 10: days=273; break;
        case 11: days=304; break;
        case 12: days=334; break;
        }
        if ( M >= 3 && Y%4==0)
        {
                D=D+1;
        }
        d=D+days;
        printf("你输入的是这一年的第%d天\n",d);

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-5 16:14:10 | 显示全部楼层
洋洋痒 发表于 2021-4-5 15:59
把case语句后边的M换成别的变量,例如days,还有最下边d=D+days

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 02:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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