用户输入n,再输入n个长度不超过20的有序字符串(按照字典顺序),再输入一个字符串(长度不超过20),将其插入现有字符串数组后仍有序。 函数原型:void (char (*p)[21],int n, char *t); 其中,p是n个字符串在内存中的首地址,n是字符串个数,t是要插入的字符串。 提示:这其实就是有序插入,只不过在比较和挪数据时要使用字符串函数而已。
时间: 2024-03-01 15:56:03 浏览: 20
好的,这是一个比较简单的字符串操作题目。按照题目要求,可以使用字符串函数进行比较和挪数据。具体实现可以参考下面的代码:
```c++
void insertString(char (*p)[21], int n, char *t) {
// 先找到插入位置
int i = 0;
while (i < n && strcmp(p[i], t) < 0) {
i++;
}
// 将插入位置后面的字符串依次往后移动
for (int j = n - 1; j >= i; j--) {
strcpy(p[j + 1], p[j]);
}
// 将要插入的字符串插入到对应位置
strcpy(p[i], t);
}
```
这个函数的实现非常简单,首先找到要插入的位置,然后将插入位置后面的字符串依次往后移动,最后将要插入的字符串插入到对应位置即可。
需要注意的是,这个函数使用了一个二维字符数组 `p` 来存储输入的字符串,其中 `p[i]` 表示第 `i` 个字符串的地址。另外,这个函数假设输入的字符串已经按照字典顺序进行了排序。
相关问题
python从键盘输入一个长度不超过20的字符串,判断该字符串是否为回文
回文是指正着读和倒着读都一样的字符串。可以通过以下代码实现:
```python
s = input("请输入一个字符串:") # 从键盘输入字符串
l = len(s) # 获取字符串长度
flag = True # 标记是否为回文
for i in range(l // 2): # 只需比较一半字符,向下取整
if s[i] != s[l - i - 1]:
flag = False
break
if flag:
print("是回文")
else:
print("不是回文")
```
代码解释:
1. 从键盘输入一个字符串。
2. 获取字符串的长度。
3. 定义一个标记变量 `flag`,初始化为 `True`,表示原字符串是回文。
4. 对于字符串中的每个字符,从左到右依次比较和对称位置的字符是否相同,如果不同,则将标记变量 `flag` 设置为 `False`,并跳出循环。
5. 如果标记变量 `flag` 为 `True`,则说明原字符串是回文,否则不是回文。
输入一个长度不超过 100 的字符串,删除串中的重复字符。
可以使用哈希表或者集合来实现删除重复字符的操作。具体步骤如下:
1. 定义一个空的哈希表或者集合,用于存储已经出现过的字符。
2. 遍历输入的字符串,对于每个字符,判断它是否已经出现过。如果已经出现过,则跳过;否则,将它添加到哈希表或者集合中,并将它添加到结果字符串中。
3. 返回结果字符串。
示例代码如下:
```
def remove_duplicates(s):
seen = set()
result = ''
for c in s:
if c not in seen:
seen.add(c)
result += c
return result
```
这个函数使用了集合来存储已经出现过的字符,遍历输入字符串,对于每个字符,如果它没有出现过,则将它添加到集合中,并将它添加到结果字符串中。最后返回结果字符串。