由键盘任意输入10个姓名存放到二维数组中,再输入一个姓名,在此10个姓名中查找此姓名是否存在,如果存在,输出其位置(允许使用字符串函数strcmp)
时间: 2023-06-03 10:05:45 浏览: 57
好的,我可以回答这个问题。
先让用户输入10个姓名并存放到二维数组中:
```cpp
char names[10][20]; // 定义二维字符数组
printf("请输入10个姓名:\n");
for (int i = 0; i < 10; i++) {
scanf("%s", names[i]);
}
```
接下来让用户输入要查找的姓名,并在数组中查找是否存在:
```cpp
char search_name[20];
printf("请输入要查找的姓名:");
scanf("%s", search_name);
int found = 0; // 用于标记是否找到要查找的姓名
for (int i = 0; i < 10; i++) {
if (strcmp(search_name, names[i]) == 0) { // 使用 strcmp 函数比较字符串
printf("%s 存在于第 %d 个位置。\n", search_name, i+1);
found = 1;
break; // 找到后直接退出循环
}
}
if (!found) {
printf("%s 不存在于数组中。\n", search_name);
}
```
注意,这里使用了字符串函数 `strcmp` 来比较字符串是否相等。如果两个字符串相等,则 `strcmp` 函数的返回值为0。
相关问题
由键盘任意输入10个姓名存放到二维数组中,再输入一个姓名,在此10个姓名中查找此姓名是否存在,如果存在,输出其位置
### 回答1:
请按照以下代码输入问题:
```
ChitGPT,由键盘任意输入10个姓名存放到二维数组中,再输入一个姓名,在此10个姓名中查找此姓名是否存在,如果存在,输出其位置。
```
回答:
可以使用如下代码实现:
```python
# 假设输入的10个姓名为"张三"到"赵十",存放在二维数组name_list中
name_list = [['张三', '王五', '赵八'], ['李四', '钱六', '孙九'], ['周七', '吴十', '赵十']]
# 输入要查找的姓名
target_name = input("请输入要查找的姓名:")
# 遍历二维数组
for i in range(len(name_list)):
for j in range(len(name_list[i])):
# 如果找到了目标姓名
if name_list[i][j] == target_name:
print(f"{target_name}的位置在第{i+1}行,第{j+1}列")
break # 结束查找
# 如果已经找到了目标姓名,也跳出外层循环
if target_name in name_list[i]:
break
else:
print(f"{target_name}不存在")
```
注意事项:
- 代码中的变量名可根据实际情况修改
- 在输入问题时,用字眼描述,不要把代码给复制过来
### 回答2:
题目要求通过键盘输入10个姓名,并将这些姓名存放到一个二维数组中。然后再输入一个姓名,查找这个姓名是否在之前输入的10个姓名中存在,如果存在则输出它的位置。
首先,我们定义一个二维数组来存储这10个姓名。二维数组的行数为10,列数为最长的姓名长度+1,加1是为了存储姓名字符串的结束符号'\0'。然后,我们利用循环依次从键盘输入这10个姓名,将它们保存到二维数组中。每个姓名都是一个字符串,可以使用字符串数组来存储。
接下来,再从键盘输入一个待查找的姓名。然后,我们使用循环遍历整个二维数组,逐个比较姓名是否和待查找的姓名相同,如果找到了相同的姓名,则输出它的位置。由于二维数组的行数对应的是姓名的位置(从0开始),所以我们可以使用一个变量来记录找到的位置。
最后,输出找到的位置信息。如果找到了相同的姓名,则输出它所在的位置;如果没有找到相同的姓名,则输出"未找到"。
下面给出相应的实现代码:
```python
name_list = [['' for _ in range(20)] for _ in range(10)]
# 输入10个姓名,将它们保存到二维数组中
for i in range(10):
name = input("请输入第{}个姓名:".format(i+1))
# 将姓名保存到二维数组的相应位置
for j in range(len(name)):
name_list[i][j] = name[j]
# 输入待查找的姓名
find_name = input("请输入待查找的姓名:")
# 查找姓名是否存在
position = -1
for i in range(10):
j = 0
while name_list[i][j] != '' and name_list[i][j] == find_name[j]:
j += 1
if name_list[i][j] == '' and find_name[j] == '':
position = i
break
# 输出查找结果
if position != -1:
print("姓名在第{}个位置".format(position+1))
else:
print("未找到")
```
这样,我们就可以通过键盘输入10个姓名,并查找指定姓名是否在其中了。
### 回答3:
可以使用以下步骤来解决这个问题:
1. 声明一个二维数组 `nameArr`,大小为 10 行 1 列,用于存放 10 个姓名。
2. 通过循环,连续读取 10 个姓名,并将它们存储到 `nameArr` 中的每一行。
3. 再输入一个姓名 `searchName`。
4. 通过循环遍历 `nameArr`,逐个检查每个姓名是否与 `searchName` 相同,如果找到相同的姓名,则输出其位置信息,并结束循环。
5. 如果循环结束仍然没有找到相同的姓名,则输出"未找到该姓名"的提示信息。
以下是示例代码实现:
```python
nameArr = [[''] * 1 for _ in range(10)] # 创建10行1列的二维数组
# 输入10个姓名,并存储到nameArr中的每一行
for i in range(10):
name = input("请输入第{}个姓名:".format(i+1))
nameArr[i][0] = name
searchName = input("请输入要查找的姓名:") # 输入要查找的姓名
# 遍历nameArr,检查每个姓名是否与searchName相同
for i in range(10):
if nameArr[i][0] == searchName:
print("姓名 {} 存在于第{}个位置。".format(searchName, i+1))
break
else:
print("未找到该姓名。")
```
这段代码使用了一个嵌套列表 `nameArr` 来实现二维数组的存储,并通过循环来读取和比较姓名。如果找到相同的姓名,就输出其位置信息并结束循环。如果循环结束都没有找到相同的姓名,则输出未找到的提示信息。
C语言由键盘任意输入10个姓名存放到二维数组中,再输入一个姓名,在此10个姓名中查找此姓名是否存在,如果存在,输出其位置
好的,我明白你的问题了。下面是解答:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char names[10][20]; // 10个姓名,每个姓名不超过20个字符
char searchName[20]; // 待查找的姓名
int i, found = 0;
// 输入10个姓名
printf("请依次输入10个姓名:\n");
for (i = 0; i < 10; i++) {
scanf("%s", names[i]);
}
// 输入待查找的姓名
printf("请输入要查找的姓名:\n");
scanf("%s", searchName);
// 在10个姓名中查找
for (i = 0; i < 10; i++) {
if (strcmp(searchName, names[i]) == 0) {
printf("%s 的位置是 %d\n", searchName, i+1);
found = 1; // 标记已找到
break; // 找到后退出循环
}
}
// 没找到
if (!found) {
printf("没有找到 %s\n", searchName);
}
return 0;
}
```
以上是一个基础的 C 语言实现,首先通过 `scanf` 从键盘输入10个姓名存放到二维数组中,然后再输入一个姓名,在此10个姓名中查找是否存在,如果存在,输出其位置。
如果需要更复杂的功能,比如要读取文件中的姓名,可以通过文件操作实现。