以下函数的功能是删除字符串s中的所有数字字符。例如,若输入字符串为“abcd1234efg567”,则删除数字字符后的字符串为“abcdefg”。请填空。 #include <stdio.h> void deleDigits(char *s) { int n = 0, i; for (i = 0; s[i]; i++) if ( ) s[n++] = s[i]; s[n] = ; } int main() { char str[80]; scanf("%s", str); deleDigits(str); printf("%s\n", str); return 0; }
时间: 2024-01-15 08:04:52 浏览: 102
好的,下面是实现这个功能的代码:
```
#include <stdio.h>
void deleDigits(char *s) {
int n = 0, i;
for (i = 0; s[i]; i++)
if (s[i] < '0' || s[i] > '9')
s[n++] = s[i];
s[n] = '\0';
}
int main() {
char str[80];
scanf("%s", str);
deleDigits(str);
printf("%s\n", str);
return 0;
}
```
这个程序定义了一个名为 `deleDigits` 的函数,它接收一个指向字符串的指针。在函数中,我们使用一个循环遍历字符串中的每个字符。如果当前字符不是数字字符,则将它复制到一个新的位置,并递增一个计数器 `n`。最后,我们在新的字符串末尾添加一个空字符,以表示新字符串的结束。
在 `main` 函数中,我们声明了一个字符数组 `str`,并使用 `scanf` 函数从标准输入中读取了一个字符串。然后,我们调用了 `deleDigits` 函数,将指向 `str` 的指针传递给了它。最后,我们打印出删除数字字符后的字符串。
相关问题
以下函数的功能是删除字符串s中的所有数字字符。例如,若输入字符串为“abcd1234efg567”,则删除数字字符后的字符串为“abcdefg”。请填空。
### 回答1:
def delete_digits(s):
"""
删除字符串s中的所有数字字符
"""
result = ""
for char in s:
if not char.isdigit():
result += char
return result
# 测试
print(delete_digits("abcd1234efg567")) # 输出:abcdefg
### 回答2:
以下是一个实现删除字符串中所有数字字符的函数的示例代码:
```python
def delete_digits(s):
result = ""
for char in s:
if not char.isdigit():
result += char
return result
s = "abcd1234efg567"
result = delete_digits(s)
print(result) # 输出:abcdefg
```
该函数的功能是使用一个空字符串`result`作为结果字符串,然后遍历输入字符串`s`中的每个字符。对于每个字符,如果它不是数字字符,则将其添加到结果字符串`result`中。最后,返回结果字符串`result`。
在示例代码中,输入字符串`s`为"abcd1234efg567",调用`delete_digits`函数后,删除其中的数字字符,结果字符串为"abcdefg"。
### 回答3:
以下是删除字符串s中所有数字字符的函数实现:
```python
def delete_digits(s):
result = ''
for char in s:
if not char.isdigit(): # 判断字符是否为数字
result += char # 非数字字符添加到结果字符串
return result
```
在该函数中,首先创建一个空字符串`result`用于存储删除数字字符后的结果。然后使用`for`循环遍历字符串`s`中的每个字符,使用`isdigit()`方法判断当前字符是否为数字。若不是数字字符,则将其添加到`result`字符串中。最后返回结果字符串`result`。
使用该函数可以实现删除字符串中所有数字字符的功能。例如,若输入字符串为"abcd1234efg567",则调用`delete_digits("abcd1234efg567")`函数后返回的结果为"abcdefg"。
用c语言编写程序做答,假定输入的字符串中只包含字母和*号,将字符串的前导*号全部移到字符串的尾部,字符串中间的*不需要改变位置。 例如:通过键盘输入***abcd**efg*,程序执行后输出:abcd**efg****
以下是可行的 C 语言程序代码:
```
#include<stdio.h>
#include<string.h>
void move_asterisks(char* str)
{
int len = strlen(str);
int count = 0;
for(int i = 0; i < len; i++)
{
if(str[i] == '*')
count++;
else
str[i-count] = str[i];
}
for(int i = len - count; i < len; i++)
str[i] = '*';
}
int main()
{
char str[100];
printf("Please input the string: ");
gets(str);
move_asterisks(str);
printf("After moving: %s\n", str);
return 0;
}
```
代码解析:
首先通过 `gets()` 函数获取输入的字符串。然后定义一个 `move_asterisks()` 函数,它的作用是把字符串中所有前导的 `*` 移动到字符串的末尾。我们定义字符串的有效长度为 `len`,定义一个计数器 `count` 来统计前导的 `*` 的个数。对于字符串中的每个字符,如果它是 `*`,则让计数器 `count` 自增;否则,就将它向前移动 `count` 个位置,这样就把前导的 `*` 删除掉了。最后,再在字符串的有效部分之后添加 `count` 个 `*` 即可。在主函数中调用这个函数并输出结果。这样,我们就成功地完成了这道题目的求解。
阅读全文