| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1979 人关注过本帖
标题:pta上一道题有一个测试点不过,不是格式问题,求大佬解答。
只看楼主 加入收藏
魂之子
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2019-12-25
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:5 
pta上一道题有一个测试点不过,不是格式问题,求大佬解答。
问题描述:
图片附件: 游客没有浏览图片的权限,请 登录注册

#include<stdio.h>
#include<stdlib.h>
int leapyear (int year);


int main(){
    char s[11];
    char s2[5];
    char s3[5];char s4[5];
    scanf("%s",s);
    int i;
    for(i=0;i<4;i++ ){
        s2[i]=s[i];
    };
    for(i=5;i<7;i++ ){
        s3[i-5]=s[i];
    };
        for(i=8;i<10;i++ ){
        s4[i-8]=s[i];
    };
    int num1,num2,num3;
    num1=atoi(s2);    num2=atoi(s3);    num3=atoi(s4);
    //printf("%d",num1);
    int mou;
    if(leapyear(num1)){
        switch(num2){
        case 1:mou=0;break;
        case 2:mou=31;break;
        case 3:mou=31+29;break;
        case 4:mou=31+29+31;break;
        case 5:mou=31+29+31+30;break;
        case 6:mou=151;break;
        case 7:mou=181;break;
        case 8:mou=212;break;
        case 9:mou=243;break;
        case 10:mou=273;break;
        case 11:mou=304;break;
        case 12:mou=334;break;
        }
    }else switch(num2){
        case 1:mou=0;break;
        case 2:mou=31;break;
        case 3:mou=31+28;break;
        case 4:mou=31+28+31;break;
        case 5:mou=31+28+31+30;break;
        case 6:mou=150;break;
        case 7:mou=180;break;
        case 8:mou=211;break;
        case 9:mou=242;break;
        case 10:mou=272;break;
        case 11:mou=303;break;
        case 12:mou=333;break;
        }
        int sum=0;
        sum=mou+num3;
        printf("%d\n",sum);
    //    printf("%d\n",mou);printf("%d\n",num3);
        
    return 0;
   
}
int leapyear(int year){
    if(year%4==0){
        if(year%100==0&&year%400!=0){
            return 0;
        }else return 1;
    }else return 0;
}
搜索更多相关主题的帖子: break year int printf case 
2019-12-25 16:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:20 
atoi 要求参数是以'\0'结尾的字符串,否则属于未定义行为
2019-12-25 16:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
大体代码应该是这样:

int main( void )
{
    unsigned y,m,d;
    scanf( "%u /%u /%u", &y, &m, &d );

    const unsigned mds[] = { 0,0,31,31+28,31+28+31,……这里是每个月之前的天数…… };
    bool plusone = 是闰年且月份大于2吗?
    printf( "%u\n", mds[m] + d + plusone );
}
2019-12-25 17:03
魂之子
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2019-12-25
收藏
得分:0 
回复 2楼 rjsp
我感觉这个没啥毛病吧,我定义的字符串全都有空余单元啊。
2019-12-25 17:40
魂之子
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2019-12-25
收藏
得分:0 
回复 3楼 rjsp
哥,我看不太懂,刚刚入手
图片附件: 游客没有浏览图片的权限,请 登录注册
但是我感觉整体上是没有问题的,我的程序有一个测试点没有过,我不知道我哪块有问题,感觉是哪块算错了。
2019-12-25 17:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
代码中存在"未定义行为"就不要谈论其它小错误了。
一定要谈,我贴出所有数组,你自己对照一下吧
{0,31,59,90,120,151,181,212,243,273,304,334}
{0,31,60,91,121,152,182,213,244,274,305,335}
2019-12-25 20:09
快速回复:pta上一道题有一个测试点不过,不是格式问题,求大佬解答。
数据加载中...
 
   



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

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