c语言200例 063 信息查询
大家好,欢迎来到无限大的频道。
今天给大家带来的是c语言200例
题目要求:
从键盘当中输入姓名和电话号,以“#”结束,编程实现输入姓名、查询电话号的功能。
参考代码如下:
#include <stdio.h>
#include <string.h>
#define MAX 16
struct aa {
char name[15];
char tel[15];
};
int readin(struct aa *a) {
int i = 0;
printf("请输入姓名和电话号码(输入#结束):\n");
while (i < MAX) {
printf("姓名: ");
scanf("%14s", a[i].name); // 限制输入字符数,避免溢出
if (strcmp(a[i].name, "#") == 0) {
break; // 如果输入名称是#,则结束输入
}
printf("电话: ");
scanf("%14s", a[i].tel); // 限制输入字符数,避免溢出
i++;
}
return i; // 返回实际输入的数量
}
void search(struct aa *b, char *x, int n) {
int i;
for (i = 0; i < n; i++) {
if (!strcmp(b[i].name, x)) {
printf("姓名: %s 电话: %s\n", b[i].name, b[i].tel);
return; // 找到后直接返回
}
}
printf("没有找到!\n");
}
int main() {
struct aa s[MAX];
int num;
char name[15];
num = readin(s);
printf("输入姓名: ");
scanf("%14s", name); // 同样处理
search(s, name, num);
return 0;
}
代码分析
-
头文件与宏定义:
#include <stdio.h> #include <string.h> #define MAX 16
#include <stdio.h>
:引入标准输入输出库,用于使用输入输出函数。#include <string.h>
:引入字符串处理库,用于字符串的函数(如strcmp
)。#define MAX 16
:定义常量MAX
,用于表示最多可以输入16个联系人的信息。
-
定义结构体:
struct aa { char name[15]; char tel[15]; };
- 定义一个名为
aa
的结构体,用于存储每个联系人的姓名和电话号码,各自定义为15个字符的数组。
- 定义一个名为
-
readin
函数:int readin(struct aa *a) { int i = 0; printf("请输入姓名和电话号码(输入#结束):\n"); while (i < MAX) { printf("姓名: "); scanf("%14s", a[i].name); // 限制输入字符数,避免溢出 if (strcmp(a[i].name, "#") == 0) { break; // 如果输入名称是#,则结束输入 } printf("电话: "); scanf("%14s", a[i].tel); // 限制输入字符数,避免溢出 i++; } return i; // 返回实际输入的数量 }
- 用于读取用户的姓名和电话号码,最多读取
MAX
条记录。 - 每次输入时,提示用户输入姓名和电话号码,并存储到结构体数组中。
- 如果用户输入
#
,则结束录入,退出循环。 - 返回实际录入的数量
i
,供后续查找使用。
- 用于读取用户的姓名和电话号码,最多读取
-
search
函数:void search(struct aa *b, char *x, int n) { int i; for (i = 0; i < n; i++) { if (!strcmp(b[i].name, x)) { printf("姓名: %s 电话: %s\n", b[i].name, b[i].tel); return; // 找到后直接返回 } } printf("没有找到!\n"); }
- 用于根据用户输入的姓名查找联系人。
- 遍历
b
数组中的前n
帧数据(通过num
传入)并进行比较。 - 如果找到与输入姓名匹配的联系人,则打印该联系人的姓名和电话号码,并返回。
- 如果所有数据都遍历完毕且没有结果,输出 “没有找到!”。
-
main
函数:int main() { struct aa s[MAX]; int num; char name[15]; num = readin(s); printf("输入姓名: "); scanf("%14s", name); // 同样处理 search(s, name, num); return 0; }
main
函数为程序的入口点。- 定义一个
struct aa
类型的数组s
用于存储联系人。 - 调用
readin
函数以获取用户输入的联系人信息,并返回录入的数量存储在num
中。 - 提示用户输入要查询的姓名,并调用
search
函数进行查询。
代码思路总结
-
数据输入模块:
- 通过
readin
函数读取用户输入的姓名和电话号码,将数据存储在结构体数组中,直到用户输入第一个“#
”进行结束。
- 通过
-
数据查询模块:
- 通过
search
函数根据用户输入的姓名在存储的联系人中查找对应的电话号码并打印结果。
- 通过
-
程序结构:
- 整体结构清晰,逻辑上分为输入、存储和查询三个主要功能模块。各个部分的功能明确,且使用了适当的函数来分隔逻辑。