scanf("%c,&a.sex")接受单字符的时候,把回车符当作一个字符对待的,你输入id的时候的回车符是放在缓冲区的,第二次调用scanf("%c,&a.sex")就把这个回车符当作一个字符了。你改成这样会丢到这个回车符的scanf(" %c,&a.sex")
因为a.ID这是个地址,不需要再加取址符&scanf("%s",a.ID)