struct birth { int year; int month; int day; }; struct person { char ID[19]; char name[20]; struct birth birthday; int flag;//校验位是否正确, 1代表正确,0代表错误 char gender; };void display_gender(struct person p[],int n,char gender){ int i,count=0; printf("身份证\t\t\t姓名\t\t\t出生年月\t\t\t校验位\n"); for(i=0;i<n;i++){ if(p[i].flag==1 && p[i].gender==gender){ printf("%s\t",p[i].ID); printf("%-10s\t\t",p[i].name); printf("%d年%02d月%02d日\t\t\t", p[i].birthday.year, p[i].birthday.month, p[i].birthday.day); if(p[i].flag==1) printf("正确\n"); else printf("错误\n"); count++; } } 为什么输出不了男性女性公民信息,帮我改一下
时间: 2024-01-21 22:01:51 浏览: 88
根据你提供的代码,我进行了修改,主要是在 display_gender 函数的输出格式上作了调整,另外也增加了一些注释,以便更好地理解代码。请参考如下代码:
```c
struct birth {
int year;
int month;
int day;
};
struct person {
char ID[19];
char name[20];
struct birth birthday;
int flag; // 校验位是否正确, 1代表正确,0代表错误
char gender;
};
void display_gender(struct person p[], int n, char gender) {
int i, count = 0;
printf("身份证号\t\t姓名\t\t出生日期\t\t校验位\n");
for (i = 0; i < n; i++) {
if (p[i].flag == 1 && p[i].gender == gender) {
printf("%s\t", p[i].ID);
printf("%-10s\t", p[i].name);
printf("%d年%02d月%02d日\t", p[i].birthday.year, p[i].birthday.month, p[i].birthday.day);
if (p[i].flag == 1) {
printf("正确\n");
} else {
printf("错误\n");
}
count++;
}
}
if (count == 0) {
printf("没有符合条件的记录\n");
}
}
```
请注意,即使按照上述代码进行了修改,如果输入的数据没有符合条件的记录,那么也会输出“没有符合条件的记录”。
阅读全文