这哪里有问题?-。,

任务描述
文档中填写日期时不同的人有不同的书写习惯,很多人习惯用小数点或其它字符作为分隔符,例如“2002.01.07”、“2002/1/7”、“02:01:7”都表示2002年1月7日。赵中瑞同学患有强烈的日期格式强迫症,当他看到一个日期时,一定会改写成形如“2002-01-07”的形式。下面请你写个程序,自动把读入的其它格式的日期改写成用“-”分隔的日期形式。

输入格式:
输入在一行中按照“abcd.mm.dd”或“ab.mm.dd”的格式给出年、月、日。题目保证给出的日期是1900年元旦至今的合法的日期。
其中年可能为4位或2位,当年为2位数字时,默认为20世纪。例如:“76/2/23”表示“1976年2月23日”。
其中月份和日期可能为2位或1位数字。

输出格式:
在一行中按照“abcd-mm-dd”的格式输出日期,其中年份为4位,月份和日期为2位,不够2位时用0补齐

img

这警告提示,是提示 scanf()函数返回值没有处理,修改如下,供参考:

#include <stdio.h>
int main()
{
    int a,b,c,ret;
    ret = scanf("%d.%d.%d",&a,&b,&c);//输入在一行中按照“abcd.mm.dd”或“ab.mm.dd”的格式 修改
    if (ret == 3){   //修改  scanf() 函数返回值处理
        if ((a/100) == 0) //修改
            a += 1900;    //修改
        printf("%d-%02d-%02d",a,b,c);
    }
    else
        printf("Input error."); //修改
    return 0;
}

没错误啊,这就是个警告,不影响的

100以内的数除以100怎么会小于0??


#include<stdio.h>

int main(){
    int a,b,c;
    scanf("%d.%d.%d",&a,&b,&c);
    if ((a / 100) > 0){
        printf("%d-%02d-%02d",a,b,c);
    }
    else{
        // 100以内
        printf("19%d-%02d-%02d",a,b,c);
    }
    return 0; 
}