任务描述
2001年01月24日是农历辛巳蛇年的春节(大年初一),2002年02月11日是辛巳蛇年的除夕。赵中瑞的生日是2002年01月07日,所以我们称他为“辛巳蛇宝男”,赵中瑞想知道还有谁和他一样是“辛巳蛇宝男”,你帮他找出来。(不允许用if语句和switch语句)(提示:使用条件运算符 ? : )
输入格式:
一行中给出一个中华人民共和国的二代身份证号和姓名,中间没有空格。注意:身份证号倒数第2位若为奇数则为男生,若为偶数则为女生,你知道吗?
输出格式:
若是“辛巳蛇宝男”则输出:YES,否则输出:NO。
输入样例1:
为保密,样例中的身份证号前6位统一设为239999。
239999200003132617于龙
输出样例1:
NO
输入样例2:
239999200002210832杨冰
输出样例2:
NO
输入样例3:
239999200201131429张玮娜
输出样例3:
NO
输入样例3:
239999200201210017刘哲
输出样例3:
YES
int ret=scanf("%d%c",&a,&c);
第五行,把里面的ll去掉。
scanf("%d%c",&a,&c)
题目说不允许用if语句和switch语句,但是你坚持要用。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
// 题目提示不准用if和switch语句了
// 什么证18位数,没必要用长长整型了
// 直接用字符串
// 7-10 17
// 2002 单数
// 甲子年60年为一个周期所以60的倍数加2002年是同样的
int main()
{
char s[20], name[20], tmp[6];
int year;
puts("输入身份证以及姓名");
scanf("%18[0123456789]s%s", s, name);
strncpy(tmp, s + 6, 4);
year = atoi(tmp);
(year - 2002) % 60 == 0 && (s[16] - '0') % 2 != 0 ? puts("YES") : puts("NO");
return 0;
}