在主函数输入一字符串,通过fun函数判断,如果字符串前导符号*的个数k大于在主函数输入的n时,将字符串下标为k开始到结尾的字符串前移k-n个单位。如果n大于或等于k,则原字符串不变
时间: 2023-05-25 08:06:46 浏览: 103
。最后再在主函数中输出处理后的字符串。
示例输入:
*nihao
3
示例输出:
nihao
示例输入:
****hello
2
示例输出:
**hello
提示:
可以使用 while 循环和字符串常用函数来移动字符串的位置。
相关问题
编写函数fun将字符串中的前导*号全部移到字符串的尾部。假定输入的字符串中只
函数fun的实现可以通过以下步骤:
1. 定义一个名为fun的函数,输入参数为一个字符串。
2. 创建一个变量starCount用于存储前导*号的个数,初始化为0。
3. 遍历字符串,统计前导*号的个数,并将*号替换为空格。
4. 将starCount个*号加到字符串的尾部。
5. 返回处理后的字符串。
以下是fun函数的伪代码实现:
```
function fun(str) {
let starCount = 0;
// 统计前导*号的个数,并将*号替换为空格
for (let i = 0; i < str.length; i++) {
if (str[i] === '*') {
starCount++;
} else {
break;
}
}
let newStr = str.replace(/^\*+/, ''); // 将前导*号替换为空格
// 将starCount个*号加到字符串的尾部
for (let i = 0; i < starCount; i++) {
newStr += '*';
}
return newStr;
}
```
通过以上步骤,fun函数可以将输入字符串中的前导*号全部移到字符串的尾部,并返回处理后的字符串。
请编写函数void fun(char *s),将其中所有空格删除,在主函数中完成字符串的输入及输出。
好的,下面是函数的实现:
```c
void fun(char *s) {
char *p = s; // 指向字符串起始位置的指针
while (*p != '\0') { // 遍历整个字符串
if (*p != ' ') { // 如果当前字符不是空格
*s++ = *p; // 将当前字符复制到新的位置
}
p++; // 移动指针
}
*s = '\0'; // 在新的字符串结尾添加'\0'
}
```
在主函数中,可以这样调用函数:
```c
int main() {
char str[100];
printf("请输入字符串:");
scanf("%[^\n]", str); // 输入字符串,可以含有空格
fun(str); // 调用函数删除空格
printf("删除空格后的字符串为:%s\n", str); // 输出结果
return 0;
}
```
注意,scanf函数中的"%[^\n]"表示输入一行字符串,直到遇到换行符为止。这样可以保证输入的字符串中包含空格。
阅读全文