gpt4 book ai didi

c - 实现线性搜索

转载 作者:行者123 更新时间:2023-11-30 21:30:52 25 4
gpt4 key购买 nike

问题:将最多 6 对姓名和年龄读取到两个单独的数组中,并使用线性搜索来定位目标姓名并打印该人的年龄。这两个数组称为姓名和年龄:

我收到很多错误..我不确定是否将数组传递给函数..

  #include <stdio.h>
#define ASIZE 20
#define RECSIZE 6

struct record {
char name[ASIZE];
int age[ASIZE];
};
struct record na[RECSIZE];

int linearSearch(struct record *a, char *find)
{
int x;
for(x=0; x<RECSIZE; x++)
{
// if(na[x].name==find[x])
if(a->name[x]==find[x])
{
return x;
}
}
return -1;
}

int main()
{
int i;

for (i=0; i<RECSIZE; i++)
{
printf("Enter name: ");
scanf("%s",na[i].name);
printf("Enter age: ");
scanf("%i",&na[i].age);
}

printf("Enter the Search name: ");
char temp[ASIZE];
scanf("%s",temp[ASIZE]);


int result;
result=linearSearch(&na, &temp[]);
printf("%i", result);
return 0;
}

请帮忙。

错误在于: 结果=线性搜索(&na, &temp[]);

最佳答案

#include <stdio.h>
#include <string.h>

#define ASIZE 20
#define RECSIZE 6

struct record {
char name[ASIZE];
int age;
};

struct record na[RECSIZE];

int linearSearch(struct record *a, char *find){
int x;
for(x=0; x<RECSIZE; x++){
if(strcmp(a[x].name, find)==0)
return x;
}
return -1;
}

int main(){
int i;

for (i=0; i<RECSIZE; i++){
printf("Enter name: ");
scanf("%s", na[i].name);//No protection when entered past the buffer
printf("Enter age: ");
scanf("%i", &na[i].age);
}

printf("Enter the Search name: ");
char temp[ASIZE];
scanf("%s", temp);

int result;
result=linearSearch(na, temp);
printf("%i", result);
return 0;
}

关于c - 实现线性搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com