题目描述
输入某人的18位身份证号,输出其出生日期。
输入
多实例测试。首先输入一个整数n,表示测试实例的个数,然后是n行,每行是一个18位身份证号。
输出
对于输入的每个身份证号,输出一行,即其对应的出生日期,输出格式为:yyyy-mm-dd。
样例输入
3 410106199411178657 410104198202095479 410122197911218097
样例输出
1994-11-17 1982-02-09 1979-11-21
代码实现
#include<stdio.h>
int main()
{
int y, m, d, n, i;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%*6d%4d%2d%2d%*d", &y, &m, &d);
printf("%d-%02d-%02d\n", y, m, d);
}
return 0;
}
注:%*d
(仅它有意义:忽略掉它本身,并重新匹配:)
代码实现中,%4d %2d %2d 分别对应 y m d
int a=0,b=0,c=0;
scanf("%*d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
输入:12 34 56
输出:a=34,b=56,c=0
相当于:忽略掉第一个输入12(它本身),
并将a与第二个数匹配,b与第三个数,
所以c没有匹配的输入,故c还是原来的值0.