分析:
考查scanf的输入格式控制与输出,可相见本题的提示。
通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
解法1:
#include <bits/stdc++.h> using namespace std; int main() { int year = 0, month = 0, day = 0; scanf("%4d%2d%2d", &year, &month, &day); //使用%0可以填充前导0 printf("year=%d\n", year); printf("month=%02d\n", month); printf("date=%02d\n", day); return 0; }
解法2:
直接将生日日期读入到一个整数中,然后再通过求余的方式求月和日。
#include <bits/stdc++.h> using namespace std; int main() { int birthday = 0, month = 0, day = 0; scanf("%d", &birthday); //分别对birthday进行求余,然后分别取出年月日 day = birthday % 100; birthday /= 100; month = birthday % 100; birthday /= 100; //输出时要注意补全前导0 printf("year=%d\n", birthday); printf("month=%02d\n", month); printf("date=%02d\n", day); return 0; }
总结:
复习scanf printf函数的输入输出控制。