要求将第一个字符串的偶数下标位置的字符复制到第二个字符串,将第一个字符串的奇数下标位置的字符复制到第三个字符串, 并显示。C++
时间: 2024-05-12 19:20:18 浏览: 171
语言实现:
```
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100], str2[50], str3[50];
int len, i;
printf("请输入一个字符串:");
scanf("%s", str1);
len = strlen(str1);
// 复制偶数下标位置的字符到str2
for (i = 0; i < len; i += 2)
{
str2[i / 2] = str1[i];
}
str2[i / 2] = '\0'; // 添加字符串结尾标志
// 复制奇数下标位置的字符到str3
for (i = 1; i < len; i += 2)
{
str3[i / 2] = str1[i];
}
str3[i / 2] = '\0'; // 添加字符串结尾标志
printf("偶数下标位置的字符:%s\n", str2);
printf("奇数下标位置的字符:%s\n", str3);
return 0;
}
```
运行示例:
```
请输入一个字符串:hello world
偶数下标位置的字符:hlol
奇数下标位置的字符:elwrd
```
相关问题
把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。 例如,形参s所指字符串为"abcdefgh",执行结果为"ahcbedgf"。
可以使用以下代码实现:
```
#include <stdio.h>
#include <string.h>
void oddRightShift(char *s) {
int len = strlen(s);
char temp = s[len - 1];
for (int i = len - 1; i > 0; i--) {
if (i % 2 != 0) {
s[i] = s[i - 1];
}
}
if (len % 2 != 0) {
s[0] = temp;
}
}
int main() {
char s[] = "abcdefgh";
oddRightShift(s);
printf("%s\n", s); // 输出结果为 "ahcbedgf"
return 0;
}
```
这段代码首先获取字符串的长度,将最后一个字符保存到 temp 变量中。然后从字符串末尾开始往前遍历,如果下标为奇数,则将当前字符往右移动一位。最后,如果字符串长度为奇数,则将 temp 放到第一个奇数位置。运行之后,输出结果即为所求的字符串。
课堂练习1、按奇偶位置提取字符串 ● 将一个字符串拆分成两个子串,第一个子串是由字符串里奇数位置的字符构成,第二个子串是由字符串里偶数位置的字符构成。
可以通过循环遍历字符串的每个字符,根据其下标的奇偶性将其加入到不同的子串中:
```python
def split_string(s):
odd_chars = "" # 存储奇数位置的字符
even_chars = "" # 存储偶数位置的字符
for i in range(len(s)):
if i % 2 == 0:
even_chars += s[i]
else:
odd_chars += s[i]
return odd_chars, even_chars
```
示例输出:
```python
>>> split_string("abcdefg")
('bdf', 'aceg')
```
阅读全文