你的代码里 scanf("%c", &gender); 会读取到之前输入时留在缓冲区里的换行符 \n,所以程序根本不会等你输入性别,直接把换行符当成了性别字符,导致输出里性别位置为空。 原因说明 当你输入完成绩 90 并按下回车后,输入缓冲区里会留下一个 \n。接下来执行 scanf("%c", &gender); 时,它会优先读取这个 \n,而不是等待你输入新的字符。
scanf(" %c", &gender); // 注意%c前面有个空格