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-01-15 16:04:06 浏览: 84
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
typedef struct _INFO {
int data;
char name[20];
} INFO;
INFO *SearchIn(INFO *p, int n, int x) {
for (int 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;
}
```
程序逻辑比较简单,就是遍历结构体数组,如果找到目标元素就返回该元素的指针,否则返回 NULL。需要注意的是,字符串的输入和比较都需要使用函数库 `<string.h>` 中的函数。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)