编写程序,将用户输入的字符串中从第i个到第j个之间的字符逆序颠倒。(字符串、i、j的值都由用户从键盘输入)利用数组的方式 例如: 输入字符串:abcdefgh 输入i:3 输入j:7 颠倒以后的字符串为:abgfedch c++
时间: 2024-02-12 13:04:14 浏览: 69
以下是 C++ 代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[100];
int i, j;
cout << "请输入字符串:";
cin >> str;
cout << "请输入 i:";
cin >> i;
cout << "请输入 j:";
cin >> j;
int len = strlen(str);
if (i <= 0 || j <= 0 || i > len || j > len || i >= j) {
cout << "输入错误!" << endl;
return 0;
}
for (int k = i - 1, l = j - 1; k < l; k++, l--) {
char temp = str[k];
str[k] = str[l];
str[l] = temp;
}
cout << "颠倒以后的字符串为:" << str << endl;
return 0;
}
```
程序先读取用户输入的字符串,然后读取 i 和 j 的值,接着判断输入的 i 和 j 是否合法,最后通过循环将字符串中从第 i 个到第 j 个之间的字符逆序颠倒。
相关问题
7)编写程序,将用户输入的字符串中从第i个到第j个之间的字符逆序颠倒。(字符串、i、j的值都由用户从键盘输入) 例如: 输入字符串:abcdefgh 输入i:3 输入j:7 颠倒以后的字符串为:abgfedch
好的,这里是使用 Java 实现这个功能的代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 获取用户输入的字符串、i和j的值
Scanner scanner = new Scanner(System.in);
System.out.print("请输入字符串:");
String s = scanner.nextLine();
System.out.print("请输入i的值:");
int i = scanner.nextInt();
System.out.print("请输入j的值:");
int j = scanner.nextInt();
// 将s中第i到第j个字符颠倒顺序
String sub = s.substring(i - 1, j);
StringBuilder sb = new StringBuilder(sub);
sb.reverse();
s = s.substring(0, i - 1) + sb.toString() + s.substring(j);
// 输出结果
System.out.println(s);
}
}
```
这段代码中,我们通过 `Scanner` 类获取用户输入的字符串、i 和 j 的值。然后,我们使用 `substring` 方法取出 s 中第 i 到第 j 个字符组成的子串,并使用 `StringBuilder` 类的 `reverse` 方法将其颠倒顺序。最后,我们使用字符串拼接的方法将颠倒顺序后的子串替换回 s 中原来的位置。需要注意的是,Java 中字符串的下标也是从 0 开始的,因此我们需要对用户输入的 i 和 j 的值进行减 1。
c语言将用户输入的字符串中从第 i 个到第 j 个之间的字符逆序颠倒。
可以使用指针来实现字符串的逆序颠倒。以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str, int i, int j) {
if (i >= j || j >= strlen(str)) {
// 不需要颠倒或下标越界,直接返回
return;
}
char *p = str + i; // 指向第 i 个字符
char *q = str + j; // 指向第 j 个字符
while (p < q) {
// 交换 p 和 q 指向的字符
char temp = *p;
*p = *q;
*q = temp;
// 移动 p 和 q 的指针
p++;
q--;
}
}
int main() {
char str[100];
int i, j;
printf("请输入一个字符串:");
scanf("%s", str);
printf("请输入要颠倒的区间 [i, j],i 和 j 用空格隔开:");
scanf("%d%d", &i, &j);
reverse(str, i, j);
printf("颠倒后的字符串为:%s\n", str);
return 0;
}
```
在这个示例代码中,我们使用 `reverse` 函数来实现字符串的逆序颠倒操作。该函数接受三个参数,分别是要操作的字符串、要颠倒的区间起始下标和要颠倒的区间终止下标。
在函数中,我们首先判断是否需要颠倒或下标是否越界。如果不需要颠倒或下标越界,直接返回即可。
接着,我们使用两个指针 `p` 和 `q` 分别指向要颠倒的区间的第一个字符和最后一个字符。然后,我们使用 `while` 循环,不断交换 `p` 和 `q` 指向的字符,并移动指针,直到 `p` 和 `q` 相遇。
最后,我们在 `main` 函数中读入一个字符串和颠倒区间的下标,并调用 `reverse` 函数来颠倒指定区间的字符。最后,输出颠倒后的字符串。
阅读全文