假定输入的字符串中只包含字母和*号。请编写函数voidfun(char*a),其功能是除了尾部的*号之外,将字符串中的其它的*号全部删除。例如,字符串中的内容*+*+*+*+*+*A*BC*DEF*G
时间: 2024-02-26 19:51:07 浏览: 115
你可以使用以下代码来实现这个功能:
```c++
#include <iostream>
#include <cstring>
void voidfun(char* a) {
int len = strlen(a);
int i = 0;
int j = len - 1;
// 从头部开始找到第一个非*字符
while (i < len && a[i] == '*') {
i++;
}
// 从尾部开始找到第一个非*字符
while (j >= 0 && a[j] == '*') {
j--;
}
// 将非*字符移到字符串的开头
int k = 0;
while (i <= j) {
a[k++] = a[i++];
}
// 将剩余的位置填充为*
while (k < len) {
a[k++] = '*';
}
}
int main() {
char a[] = "*+*+*+*+*+*A*BC*DEF*G";
voidfun(a);
std::cout << a << std::endl;
return 0;
}
```
运行结果为:`A*BC*DEF*G******`
相关问题
请编写函数voidfun(char*t,char*s), 它的功能是:将宇符串t中的每个字符各复制一次,最后结果存入字符串s中。 如t字符串为abcd12,s字符串为aabbccdd1122 在主函数中完成字符串的输入及输出。
好的,以下是函数`voidfun`的实现代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void voidfun(char* t, char* s) {
int len = strlen(t); // 获取t字符串的长度
for (int i = 0; i < len; i++) {
s[i*2] = s[i*2+1] = t[i]; // 将t字符串中的每个字符复制一次到s字符串中
}
s[len*2] = '\0'; // 字符串s的末尾需要添加'\0',表示字符串的结束
}
int main() {
char t[100], s[200]; // t和s分别用于存储输入的字符串和复制后的字符串
cout << "请输入字符串t:";
cin >> t;
voidfun(t, s); // 调用voidfun函数
cout << "复制后的字符串s为:" << s << endl;
return 0;
}
```
在主函数中,我们先定义了两个字符数组`t`和`s`,分别用于存储输入的字符串和复制后的字符串。然后通过`cin`语句获取用户输入的字符串`t`,接着调用函数`voidfun`,将`t`中的每个字符复制一次到`s`中,最后输出复制后的字符串`s`。
在c语言中请编写函数voidfun(char*t,char*s), 它的功能是:将宇符串t中的每个字符各复制一次,最后结果存入字符串s中。 如t字符串为abcd12,s字符串为aabbccdd1122 在主函数中完成字符串的输入及输出。
好的,以下是函数`voidfun`的C语言实现代码:
```c
#include <stdio.h>
#include <string.h>
void voidfun(char* t, char* s) {
int len = strlen(t); // 获取t字符串的长度
for (int i = 0; i < len; i++) {
s[i*2] = s[i*2+1] = t[i]; // 将t字符串中的每个字符复制一次到s字符串中
}
s[len*2] = '\0'; // 字符串s的末尾需要添加'\0',表示字符串的结束
}
int main() {
char t[100], s[200]; // t和s分别用于存储输入的字符串和复制后的字符串
printf("请输入字符串t:");
scanf("%s", t);
voidfun(t, s); // 调用voidfun函数
printf("复制后的字符串s为:%s\n", s);
return 0;
}
```
与C++版本的实现方式相似,我们在主函数中先定义了两个字符数组`t`和`s`,分别用于存储输入的字符串和复制后的字符串。然后通过`scanf`语句获取用户输入的字符串`t`,接着调用函数`voidfun`,将`t`中的每个字符复制一次到`s`中,最后输出复制后的字符串`s`。
阅读全文