Arrays 如何在数组的元素中搜索名称数组
我有这个任务/函数来确定记录中是否已经存在学生的姓名/全名。 每个输入/输入的学生姓名不应相同。记录中也没有重复条目 我的代码错误: 当我输入5个学生名字(例如:A、B、C、D、e)然后搜索D时,返回值将找不到。所以我想知道,如果每个元素都存在,它搜索每个元素的正确逻辑是什么?当我试着做一个测试时,它说“已经存在”Arrays 如何在数组的元素中搜索名称数组,arrays,c,Arrays,C,我有这个任务/函数来确定记录中是否已经存在学生的姓名/全名。 每个输入/输入的学生姓名不应相同。记录中也没有重复条目 我的代码错误: 当我输入5个学生名字(例如:A、B、C、D、e)然后搜索D时,返回值将找不到。所以我想知道,如果每个元素都存在,它搜索每个元素的正确逻辑是什么?当我试着做一个测试时,它说“已经存在” #包括 #包括 int main(){ char studentNames[50][50],name[50][50]; int i,学生人数; printf(“\n输入学生人数:”)
#包括
#包括
int main(){
char studentNames[50][50],name[50][50];
int i,学生人数;
printf(“\n输入学生人数:”);
scanf(“%d”和studentcount);
对于(int i=0;i您可能需要这样的内容:
char CompareStudent() {
printf("\nEnter Student's Name to be search: ");
char searchedname[100];
scanf("%99s", searchedname); // %99s instead of %s prevents buffer overflow
// (not very important at your level)
for (int i = 0; i < studentCount; i++) {
if (strcmp(studentNames[i], searchedname) == 0) {
printf("Already exists.\n");
return 0;
}
}
printf("Not found\n");
return 1;
}
charcomparestudent(){
printf(“\n输入要搜索的学生姓名:”;
char searchedname[100];
scanf(“%99s”,searchedname);//%99s而不是%s可防止缓冲区溢出
//(在你的水平上不是很重要)
for(int i=0;i
这是带有注释的原始伪代码:
char CompareStudent() {
printf("\nEnter Student's Name to be search: ");
for (int i = 0; i < studentCount; i++) {
scanf("%s", names[i]); // 1
if (strcmp(studentNames[i], names[i]) == 0)
{
printf("Already exist.\n");
return 0;
}
printf("Not found\n"); // 2
return 1;
}
}
charcomparestudent(){
printf(“\n输入要搜索的学生姓名:”;
for(int i=0;i
问题:
您只需要要求输入学生搜索一次,而不是每次在循环中
此部分必须在循环之外。在您的代码中,如果学生不在数组的第一个元素中,我们将按条件返回1
你可能想要这样的东西:
char CompareStudent() {
printf("\nEnter Student's Name to be search: ");
char searchedname[100];
scanf("%99s", searchedname); // %99s instead of %s prevents buffer overflow
// (not very important at your level)
for (int i = 0; i < studentCount; i++) {
if (strcmp(studentNames[i], searchedname) == 0) {
printf("Already exists.\n");
return 0;
}
}
printf("Not found\n");
return 1;
}
charcomparestudent(){
printf(“\n输入要搜索的学生姓名:”;
char searchedname[100];
scanf(“%99s”,searchedname);//%99s而不是%s可防止缓冲区溢出
//(在你的水平上不是很重要)
for(int i=0;i
这是带有注释的原始伪代码:
char CompareStudent() {
printf("\nEnter Student's Name to be search: ");
for (int i = 0; i < studentCount; i++) {
scanf("%s", names[i]); // 1
if (strcmp(studentNames[i], names[i]) == 0)
{
printf("Already exist.\n");
return 0;
}
printf("Not found\n"); // 2
return 1;
}
}
charcomparestudent(){
printf(“\n输入要搜索的学生姓名:”;
for(int i=0;i
问题:
您只需要要求输入学生搜索一次,而不是每次在循环中
此部分必须在循环之外。在您的代码中,如果学生不在数组的第一个元素中,我们将按条件返回1
为了查找数组中是否存在元素,需要检查所有元素,直到找到该元素(或到达数组末尾)。您的代码仅比较两者中的单个元素arrays@UnholySheep这是一个类似线性搜索的算法吗?对不起,我真的是一个新手。请展示一下。不清楚变量是如何定义的。我看不出名称
是一个数组(字符串)的任何原因-它只是一个查询,应该是单个临时字符串。逻辑很简单:1)读取查询(在循环之外)。2)迭代现有名称,将每个名称与查询进行比较。为了查找数组中是否存在元素,您需要检查所有元素,直到找到该元素(或到达数组末尾)。您的代码仅比较两者中的单个元素arrays@UnholySheep这是一个类似线性搜索的算法吗?对不起,我真的是一个新手。请展示一下。不清楚变量是如何定义的。我看不出名称
是一个数组(字符串)的任何原因-它只是一个查询,应该是单个临时字符串。逻辑很简单:1)读取查询(在循环之外).2)迭代现有名称,将每个名称与查询进行比较。解释原始代码中的错误以及这些更改将使此答案对此人更有用asking@ChatterOne说明已添加到meantime@Jabberwocky我明白了,谢谢你先生的精彩回答。我明白我的错误所在。我真的很抱歉如果我把它放在循环中,它每次都会迭代,这就是为什么我真的需要深入了解数组和函数是如何工作的。@DrewD指令是按顺序执行的。@Jabberwocky先生,你还在吗?关于这个主题,我也有新的问题,可能是一个调整。是否可以使用compareStudent函数来检查整个数组e数组或在初始化学生姓名(如果存在)之前。然后,如果我没有将其插入学生姓名数组中,请解释原始代码中的错误以及这些更改将使此答案对用户更有用asking@ChatterOne说明已添加到meantime@Jabberwocky我明白了,谢谢你,先生derful回答。我知道我的错误在哪里了。我真的认为,如果我把它放在循环中,它每次都会迭代,这就是为什么我真的需要深入了解数组和函数是如何工作的。@DrewD指令是按顺序执行的。@Jabberwocky先生,你还在吗?关于这个主题,我也有新的问题,也许是个调整。可能吗e使用compareStudent函数检查整个数组,或者在初始化students名称(如果存在)之前检查。然后如果我没有将它们插入studentsName数组中?