实验二:假设输入的字符串中只包含英文字母和*号,利用指针编程实现将字符串中的*号全部移动到字符串的首部。例如:输入**ab*c**d**,输出为*******abcd.
时间: 2024-05-15 20:10:09 浏览: 19
实验二的目标是将输入字符串中的所有星号(*)移动到字符串的首部。这可以通过指针编程来实现。下面是一个可能的实现方式:
```c++
#include <iostream>
using namespace std;
void moveStarsToFront(char* str) {
if (str == nullptr) {
return;
}
int len = strlen(str);
int starCount = 0;
// 统计星号的数量
for (int i = 0; i < len; i++) {
if (str[i] == '*') {
starCount++;
}
}
// 将星号移动到首部
int j = 0;
for (int i = 0; i < len; i++) {
if (str[i] != '*') {
str[j] = str[i];
j++;
}
}
// 在首部添加星号
for (int i = 0; i < starCount; i++) {
str[j] = '*';
j++;
}
str[j] = '\0'; // 添加字符串结束符
}
int main() {
char str[] = "**ab*c**d**";
cout << "原始字符串:" << str << endl;
moveStarsToFront(str);
cout << "移动星号后的字符串:" << str << endl;
return 0;
}
```
上述代码中,`moveStarsToFront`函数接受一个字符指针作为参数,表示输入的字符串。首先,它会统计字符串中星号的数量,然后将非星号字符依次移动到字符串的前部,最后在字符串的末尾添加相应数量的星号。最终,原始字符串中的星号就会被移动到字符串的首部。