6-1 从结构体数组中查找指定信息的元素 分数 10 作者 王才善 单位 兰州交通大学 本题要求实现一个函数,可从一个结构体数组data域中查找一个给定的数据元素x,查找成功,返回该元素所在位置的指针;否则,返回NULL。 函数接口定义: INFO *SearchIn ( INFO *p, int n, int x ); 其中 p 、n和 x 都是用户传入的参数。 p 是一个INFO类型的指针;n是数组元素个数, x 是要查找的数据元素。函数返回 x 在 p所指的数组中具体位置。 裁判测试程序样例: #include <stdio.h> typedef struct _INFO { int data; char name[20]; } INFO; INFO *SearchIn ( INFO *p, int n, int x ); int main() { int i, n, x; INFO info[10], *p; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d %s", &info[i].data, info[i].name); scanf("%d", &x); p = SearchIn ( info, n, x ); if (p != NULL) printf("%s %d\n", p->name, p->data); else printf("Not Found!\n"); return 0; } 输入样例1: 3 351 Windows 278 iOS 224 Andriod 278 输出样例1: iOS 278 输入样例2: 3 351 Windows 278 iOS 224 Andriod 235 输出样例2: Not Found!
时间: 2024-03-17 14:45:50 浏览: 90
以下是该题的 C 语言代码实现:
```
#include <stdio.h>
#include <string.h>
typedef struct _INFO {
int data;
char name[20];
} INFO;
INFO *SearchIn ( INFO *p, int n, int x )
{
int i;
for (i = 0; i < n; i++) {
if (p[i].data == x) {
return &p[i];
}
}
return NULL;
}
int main()
{
int i, n, x;
INFO info[10], *p;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d %s", &info[i].data, info[i].name);
}
scanf("%d", &x);
p = SearchIn ( info, n, x );
if (p != NULL) {
printf("%s %d\n", p->name, p->data);
} else {
printf("Not Found!\n");
}
return 0;
}
```
具体思路:
1. 定义结构体 INFO,包含两个成员:int 类型的 data 和 char 类型的 name。
2. 定义函数 SearchIn,参数为 INFO 类型的指针 p、整型 n 和整型 x,返回值为 INFO 类型的指针。
3. 在函数 SearchIn 中,使用 for 循环遍历数组 p 中的每个元素,判断元素中的 data 是否等于 x,如果相等就返回该元素的地址(即指针 &p[i])。
4. 如果整个数组都遍历完了,还没有找到 data 等于 x 的元素,那么就返回 NULL。
5. 在主函数中,先读入数组元素个数 n 和 n 个数组元素。
6. 再读入要查找的数据元素 x,将 SearchIn 函数的返回值赋给指针 p。
7. 最后判断指针 p 是否为 NULL,如果不是就输出该元素的 name 和 data,否则输出 "Not Found!"。
阅读全文