C语言编写程序要求字符数组中只有字母和*,将所有的*移动到数组的后面。例如:a数组中存放a**b*C*字符串,处理完以后a中为abC*****。
时间: 2024-05-15 22:10:15 浏览: 22
这个问题可以用双指针的方法来解决。我们可以定义两个指针,一个指向字符数组的开头,一个指向字符数组的末尾。然后从前往后遍历字符数组,如果遇到字母就将它赋值给指针1所指向的位置,并将指针1向后移动一位;如果遇到*号就将它赋值给指针2所指向的位置,并将指针2向前移动一位。当指针1和指针2相遇时,遍历结束。此时所有的字母都已经放到了数组的前面,所有的*号都已经放到了数组的后面。
以下是C语言的示例代码实现:
```c
#include <stdio.h>
#include <string.h>
void move_star_to_end(char* str) {
int len = strlen(str);
int i = 0, j = len - 1;
while (i < j) {
if (str[i] == '*') {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
j--;
} else {
i++;
}
}
}
int main() {
char str[] = "a**b*C*";
move_star_to_end(str);
printf("%s\n", str);
return 0;
}
```
相关问题
用C语言编写:将字符数组中的字母变换为字母表内后两位的字母,非字母字符不变
可以使用C语言的字符串函数来实现这个需求,具体实现如下:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void shift(char *str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (isalpha(str[i])) {
if (isupper(str[i])) {
str[i] = (str[i] - 'A' + 2) % 26 + 'A';
} else {
str[i] = (str[i] - 'a' + 2) % 26 + 'a';
}
}
}
}
int main() {
char str[] = "Hello, World!"; // 待变换的字符串
shift(str); // 变换
printf("%s\n", str); // 输出变换后的字符串
return 0;
}
```
上面的代码中,`shift` 函数接受一个指向字符数组的指针 `str`,对其中的字母进行变换。具体实现如下:
1. 获取字符数组的长度 `len`。
2. 遍历字符数组中的每个字符,如果该字符是字母,则进行变换,否则不变。
3. 对于大写字母,将其转换为数字后加上 2,再对 26 取模,最后再转换回字母。
4. 对于小写字母,同样地进行转换。
在 `main` 函数中,我们可以将需要变换的字符串传递给 `shift` 函数,然后输出变换后的结果。
用C语言输入一个字符串存放在数组a中,将其中的所有小写字母存放到字符数组b中并输出
好的,下面是实现的代码:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_SIZE 100
int main() {
char a[MAX_SIZE], b[MAX_SIZE];
int i, j;
printf("请输入一个字符串:");
fgets(a, MAX_SIZE, stdin);
for (i = 0, j = 0; a[i] != '\0'; i++) {
if (islower(a[i])) {
b[j] = a[i];
j++;
}
}
b[j] = '\0';
printf("小写字母的集合为:%s", b);
return 0;
}
```
运行结果如下:
```
请输入一个字符串:Hello, World!
小写字母的集合为:elloorld
```
解释一下代码:
1. 定义了两个字符数组 `a` 和 `b`,分别用于存放输入的字符串和小写字母。
2. 使用 `fgets` 函数读取字符串,遇到换行符结束。
3. 遍历字符串 `a`,如果当前字符是小写字母,就把它存放到 `b` 数组中。
4. 最后在 `b` 数组的末尾添加一个字符串结束符 `\0`,并输出结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)