由键盘任意输入10个姓名,再输入一个姓名,在此10个姓名中查找此姓名是否存在(比较需使用strcmp函数,也可以用string对象),如果存在,输出其位置,不存在输出提示。
时间: 2023-05-31 20:17:45 浏览: 340
输入姓名,查找是否存在该人
### 回答1:
可以使用以下代码实现:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string names[10]; // 定义字符串数组
for (int i = 0; i < 10; i++) {
cout << "请输入第" << i+1 << "个姓名:";
cin >> names[i];
}
string searchName;
cout << "请输入要查找的姓名:";
cin >> searchName;
int index = -1; // 初始化为-1,表示未找到
for (int i = 0; i < 10; i++) {
if (names[i] == searchName) {
index = i; // 找到了,记录位置
break; // 找到一个就可以退出循环了
}
}
if (index != -1) {
cout << searchName << "在第" << index+1 << "个位置。" << endl;
} else {
cout << "未找到" << searchName << "。" << endl;
}
return 0;
} <br>### 回答2:
要实现这个功能,首先需要使用一个字符数组来存储输入的姓名,然后用一个循环让用户输入10个姓名,并依次存储在数组中。在输入完毕之后,再让用户输入一个待查找的姓名,用strcmp函数逐个比较数组中的每个姓名,如果找到了与之匹配的姓名,输出其位置。如果遍历完数组还没有找到匹配的姓名,输出提示信息即可。
以下是具体的实现方法:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const int MAX_NAME_LEN = 20; // 最大姓名长度
const int MAX_NAMES = 10; // 最大姓名数量
char names[MAX_NAMES][MAX_NAME_LEN]; // 姓名数组
// 输入10个姓名
for (int i = 0; i < MAX_NAMES; ++i) {
cout << "请输入第" << i + 1 << "个姓名:";
cin >> names[i];
}
// 输入待查找的姓名
char target[MAX_NAME_LEN];
cout << "请输入待查找的姓名:";
cin >> target;
// 在姓名数组中查找
int idx = -1;
for (int i = 0; i < MAX_NAMES; ++i) {
if (strcmp(names[i], target) == 0) {
idx = i;
break;
}
}
// 输出结果
if (idx >= 0) {
cout << target << "的位置是:" << idx << endl;
} else {
cout << "没有找到" << target << endl;
}
return 0;
}
```
这样就可以实现输入10个姓名并查找其中一个姓名的功能了。由于使用了strcmp函数对字符串进行比较,所以匹配时是区分大小写的,如果需要忽略大小写,可以使用strcasecmp函数代替strcmp函数。如果使用string对象来存储姓名,则可以使用==运算符来比较,而不需要使用strcmp函数了。 <br>### 回答3:
题目要求我们输入10个姓名,再输入一个姓名,并在这10个姓名中查找是否存在输入的姓名。这个问题看似简单,但需要运用C++中的字符串比较函数strcmp或者string对象。下面我来详细解释一下:
首先,我们需要使用循环语句for来输入10个姓名,代码如下:
```
char name[10][20]; //定义一个二维字符数组,可以用来存储10个姓名,每个姓名最长不超过20个字符
for (int i = 0; i < 10; i++){
cin >> name[i];
}
```
接下来,我们需要输入一个要查找的姓名,可以使用cin进行输入,但是需要定义一个字符串变量存储输入的姓名,代码如下:
```
char searchname[20]; //定义一个字符数组,用来存储要查找的姓名
cin >> searchname; //输入要查找的姓名
```
接下来就是比较查找的姓名和这10个姓名是否相同。我们可以使用循环语句for来遍历这10个姓名,然后使用strcmp函数来比较是否相同。代码如下:
```
int flag = 0; //定义一个标记变量,用来标记是否找到该姓名
for (int i = 0; i < 10; i++){
if (strcmp(searchname, name[i]) == 0){ //如果输入的姓名和数组中的某个姓名相同
cout << searchname << "的位置是" << i+1 << endl; //输出该姓名在数组中的位置
flag = 1; //将标记变量改为1,表示已经找到该姓名
break; //找到该姓名后退出循环
}
}
if (flag == 0){ //如果标记变量依然是0,说明没有找到该姓名
cout << "该姓名不存在!" << endl;
}
```
这样,我们就完成了输入10个姓名,并通过比较查找的姓名是否和这10个姓名中的某一个相同的过程。代码运行结果如图所示:
![输入10个姓名,并查找要查找的姓名](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9naXRodWIuY29tL2ltYWdlL0NvbnRlbnQvczFzL3VzZXIvNTk5L01vYmlsZS9jb2RlXzFfMTEyMzE0NTE4NjA2NTk3MDU5LnBuZw?x-oss-process=image/format,png)
综上,C++中通过循环语句、字符串比较函数strcmp以及标记变量的运用可以实现查找某一个姓名是否在一个字符串数组中,并输出该姓名在数组中的位置或者提示姓名不存在。
阅读全文