请帮忙看一下哪里错了,老是部分正确
输入样例1:
为保密,样例中的身份证号前6位统一设为239999。
239999200003132617于龙
输出样例1:
NO
输入样例2:
239999200002210832杨冰
输出样例2:
NO
输入样例3:
239999200201131429张玮娜
输出样例3:
NO
输入样例3:
239999200201210017刘哲
输出样例3:
YES
输入样例1:
为保密,样例中的身份证号前6位统一设为239999。
239999200003132617于龙
输出样例1:
NO
输入样例2:
239999200002210832杨冰
输出样例2:
NO
输入样例3:
239999200201131429张玮娜
输出样例3:
NO
输入样例3:
239999200201210017刘哲
输出样例3:
YES
题目说不能用if和switch。我觉得没必要用long long int去保存数据,如果身份证再长一点怎么办。建议用数组保存,挑出其中需用要的年月日就好了。可以参考我的代码。
//不能用if和switch。我这个应该可以你试试。
#include <stdio.h>
int main()
{
while (1)
{
char arr[32];
scanf("%s", &arr);
int year = (int)(arr[6] - '0') * 1000 + (int)(arr[7] - '0') * 100 + (int)(arr[8] - '0') * 10 + (int)(arr[9] - '0');
int month = (int)(arr[10] - '0') * 10 + (int)(arr[11] - '0');
int day = (int)(arr[12] - '0') * 10 + (int)(arr[13] - '0');
((year == 2001 && (month > 1 || (month == 1 && day > 24))) || (year == 2002 && (month < 2 || (month == 2 && day < 11))))
? printf("YES\n")
: printf("NO\n");
}
return 0;
}