用conio.h里的getche()函数
#include<conio.h>
#include<stdio.h>
#define ID_LENGTH 18
//根据身份证号前17位生成校验码
char IDcheckcode(char*ID) {
static const int res[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
static const char* M = "10X98765432";
int i, x = 0;
for (i = 0; i < ID_LENGTH - 1; i++) {
x += (ID[i] - '0') * res[i];
}
x %= 11;
return M[x];
}
int main() {
char ID[ID_LENGTH];
int i, legal ;
while (1) {
legal = 1;
for (i = 0; i < ID_LENGTH; i++) {
if(i<0)i=0;
ID[i] = getche();
if (ID[i] == 27)return 0;//esc键
else if (ID[i] == 8)i -= 2; //backspace键
else if (ID[i] < '0' || ID[i] > '9' && ID[i] != 'x' && ID[i] != 'X')legal = 0;
}
if (legal)legal = IDcheckcode(ID) == ID[ID_LENGTH - 1] || ID[ID_LENGTH - 1] == 'x' && IDcheckcode(ID) == 'X';
if (legal) {
printf(" correct,出生年月为: %d年%d月%d日\n",
(ID[6] - '0') * 1000 + (ID[7] - '0') * 100 + (ID[8] - '0') * 10 + ID[9] - '0',
(ID[10] - '0') * 10 + ID[11] - '0',
(ID[12] - '0') * 10 + ID[13] - '0');
} else {
printf(" wrong\n");
}
}
}
那你printf的时候只加\n就行,试试吧,望采纳