为什么会多输出数据,半天想不明白

#include
int main()
{
int a,b,c;
scanf("%d",&a);
if(a<10000)
{

    if(a/100>=22)
    c=1900+a/100;
    else
    c=2000+a/100;
printf("%d-%2d",c,a%100);
}
else
b=a/100;
c=a%100;
printf("%d-%2d",b,c);
return 0;

}
9808
1998-080-08
为啥会有080这个数据输出

else没加括号呗,不加括号实际上只有后边第一句属于else内的 比如 下边,后边语句还是会执行的

else
b=a/100;
c=a%100;
printf("%d-%2d",b,c);
相当于
else{
b=a/100;
}
c=a%100;
printf("%d-%2d",b,c);

应该是你自己的printf输出格式所致的,你的a = 9808 ,a%100 = 8,但是你的输出格式为%2d,不满足两位,他应该拿0来补了。所以此时输出1989-08,然后你else语句里面只有一条b=a/100,但是没有执行,所以b = 0,所以输出的0拼在了1989-08后面,所以是1989- 08(a%100) 0(b值)- (c的值)。