c语言 输入一个字符,若其在字符串中,则删除它
时间: 2024-03-12 13:43:26 浏览: 77
好的,可以使用C语言的字符串操作函数来实现该功能。以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char c;
printf("请输入一个字符串:");
scanf("%s", str);
printf("请输入一个字符:");
scanf(" %c", &c);
int len = strlen(str);
int i, j;
for (i = 0, j = 0; i < len; i++) {
if (str[i] != c) {
str[j++] = str[i];
}
}
str[j] = '\0';
printf("删除后的字符串为:%s\n", str);
return 0;
}
```
在上述代码中,我们首先通过 `scanf()` 函数获取用户输入的字符串和字符。然后使用 `strlen()` 函数获取字符串的长度,进而遍历整个字符串,如果字符不等于输入的字符,则将其保存到新的字符串中,最后再在新的字符串末尾添加结束符 `\0`。
需要注意的是,在使用 `scanf()` 函数获取字符时,我们需要在前面添加一个空格,以便清除输入缓冲区中的换行符。否则,可能会出现读取错误的问题。
相关问题
C语言给出一个按照“扩展遍历序列”的扩展先序遍历序列字符串,'.' 代表空的子节点,大写字母代表节点内容。请通过这个字符串建立二叉树,并计算及输出该二叉树的高度。
好的,我会根据您的问题来建立二叉树,并计算该二叉树的高度。下面是我的代码实现:
```python
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def buildTree(s):
if not s:
return None
stack = []
root = Node(s[0])
stack.append(root)
i = 1
while i < len(s):
cur = stack[-1]
if s[i] == '.':
if not cur.left:
cur.left = Node(s[i])
elif not cur.right:
cur.right = Node(s[i])
stack.pop()
else:
n = Node(s[i])
if not cur.left:
cur.left = n
elif not cur.right:
cur.right = n
else:
stack.pop()
continue
stack.append(n)
i += 1
return root
def height(root):
if not root:
return 0
left_height = height(root.left)
right_height = height(root.right)
return max(left_height, right_height) + 1
s = "AB..C.D..EF...G..."
root = buildTree(s)
print(height(root))
```
上面的代码中,我们首先定义了一个 `Node` 类来表示节点,然后通过一个 `buildTree` 函数来根据字符串构建二叉树。具体来说,我们使用一个栈来模拟遍历,遇到一个节点时,若其左子节点为空,则将其左子节点赋为当前节点,否则将其右子节点赋为当前节点,然后将该节点出栈;若遇到的是字符 '.',则表示当前节点的某个子节点为空,因此我们分两种情况来处理,即若该节点的左子节点为空,则将其左子节点赋为 None,否则将其右子节点赋为 None。
接下来,我们使用递归的方式来求解二叉树的高度,具体来说,我们先求出左子树的高度和右子树的高度,然后返回两者中较大值加1,即为该二叉树的高度。
最后,我们使用上面的代码来计算给定字符串对应的二叉树的高度,并输出结果。需要注意的是,我们在计算高度的时候需要判断给定二叉树是否为空,若为空则直接返回0。
阅读全文