检查 int main(void) { struct person p[N]; int cmd, n; n=read(p);//读入信息到结构体数组 while (1) { cmd = prompt(); switch(cmd){ case 0: save(p,n);//将身份证号码正确的数据写入文件 return 0; case 1: display_person(p,n,1);//显示校验位正确的公民信息 break; case 2: display_person(p,n,0);//显示校验位错误的公民信息 break; case 3: birth_sort(p,n);// 将正确的公民信息按出生日期排序 break; case 4: char name[20]; printf("请输入姓名;"); scanf("%S",name); int count=search(p,n,name);//在正确的公民信息中查找指定同名同姓的人 printf("与%s同名的人数为:%d\n",name,count); break; default: printf("无效的选项!\n"); break; } } return 0; }
时间: 2023-06-25 08:03:52 浏览: 59
这段代码有一些问题:
1. 函数 read(p) 没有定义,无法确定其功能和返回值类型。
2. 在函数 display_person(p,n,1) 和 display_person(p,n,0) 中,第三个参数应该是一个布尔类型的值,而不是数字。
3. 在函数 scanf("%S",name) 中,应该使用小写字母 s,而不是大写字母 S。
4. 在函数 search(p,n,name) 中,应该将参数 name 改为指针类型,即 char *name。
5. 在函数 search(p,n,name) 中,应该返回查找到的同名同姓的人数,而不是直接输出。
6. 在函数 birth_sort(p,n) 中,排序算法没有指定,可能会出现错误。
7. 在 while 循环中,缺少读入用户输入的代码,导致程序无法响应用户操作。
8. 在 switch 语句中,缺少针对每个选项的具体操作代码,需要补充完整。
建议修改后再进行测试。
相关问题
解释int main(void) { struct person p[N]; int cmd, n; while (1) { cmd = prompt(); } return 0; }
这段代码定义了一个名为`main`的函数,其返回类型为`int`。`void`表示该函数不接受任何参数。
函数中定义了一个结构体类型为`person`,并声明了一个长度为`N`的 person 类型的数组 `p[N]`,用于存储人员信息。
接下来是一个无限循环的 `while` 循环,其中调用了`prompt()`函数,用于获取用户输入的指令。循环将一直执行,直到用户选择退出程序。
最后,函数返回0,表示程序正常结束。
用int read(struct person p[])读取数据文件的
好的,这是一个关于结构体数组的问题。假设我们有一个名为person的结构体,它包含三个成员:name、age和gender。现在我们有一个存储person数据的文件,我们想要从文件中读取数据,并将数据存储到一个person类型的数组中。
那么,我们可以使用如下的代码来实现:
```c
#include <stdio.h>
struct person {
char name[20];
int age;
char gender;
};
int read(struct person p[]) {
int i = 0;
FILE *fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("打开文件失败!\n");
return 0;
}
while (!feof(fp)) {
fscanf(fp, "%s %d %c", p[i].name, &p[i].age, &p[i].gender);
i++;
}
fclose(fp);
return i;
}
int main() {
struct person p[100];
int count = read(p);
for (int i = 0; i < count; i++) {
printf("%s %d %c\n", p[i].name, p[i].age, p[i].gender);
}
return 0;
}
```
在上面的代码中,我们定义了一个名为person的结构体,然后定义了一个名为read的函数,该函数接受一个person类型的数组作为参数。在函数中,我们首先打开数据文件,并检查文件是否打开成功。然后,在一个while循环中,我们使用fscanf函数从文件中读取一个person的数据,然后将其存储到数组中,并将数组下标加1。最后,我们关闭文件并返回数组中存储的数据的数量。
在主函数中,我们定义了一个person类型的数组,然后调用read函数将数据读取到数组中。最后,我们使用循环遍历数组,并将每个person的数据打印到控制台上。
希望这能够帮助你解决问题。
阅读全文