c++程序实现: 输入一个长度不大于30的字符串,将此字符串中从第m个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。 输入样例: ab 1 输出样例: ab 输入样例: abcdef 3 输出样例: cdef
时间: 2023-06-14 09:07:08 浏览: 297
下是一个 C++ 程序实现,可以满足你的需求:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[31], newStr[31];
int m;
// 输入字符串和开始位置
cout << "请输入一个长度不大于30的字符串:";
cin >> str;
cout << "请输入开始位置:";
cin >> m;
// 复制字符串
int len = strlen(str);
if (m > len) {
cout << "开始位置超出字符串长度!" << endl;
return 0;
}
strcpy(newStr, str + m - 1);
// 输出新字符串
cout << "新字符串为:" << newStr << endl;
return 0;
}
```
该程序首先输入一个字符串和开始位置,然后使用 `strlen` 函数获取字符串的长度,判断开始位置是否超出字符串长度,如果超出就输出错误信息。接着使用 `strcpy` 函数将从第 m 个字符开始的剩余全部字符复制到新的字符串中,并使用 `cout` 输出新字符串。
相关问题
C++输入一个长度不大于30的字符串,将此字符串中从第m个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[31], new_str[31];
int m;
printf("请输入一个长度不大于30的字符串:");
scanf("%s", str);
printf("请输入起始位置m(m必须小于等于字符串长度):");
scanf("%d", &m);
if (m > strlen(str)) {
printf("m必须小于等于字符串长度!");
return 0;
}
strcpy(new_str, str + m - 1);
printf("新字符串为:%s", new_str);
return 0;
}
```
代码逻辑如下:
1. 定义两个字符数组 `str` 和 `new_str`,分别用于存储输入的原始字符串和输出的新字符串;
2. 定义变量 `m`,用于存储起始位置;
3. 通过 `scanf()` 函数分别读取用户输入的字符串和起始位置;
4. 判断起始位置是否超出字符串长度,如果超出则输出提示信息并结束程序;
5. 调用 `strcpy()` 函数将原始字符串中从第 `m` 个字符开始的剩余全部字符复制到新字符串中;
6. 输出新字符串。
编写一个C++程序:在输入的非空字符串中右截取 M 个字符,显示截取的子串内容。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int m, len;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
printf("请输入要截取的字符数:");
scanf("%d", &m);
if (m >= len) {
printf("截取的字符数大于等于字符串长度,无法截取。\n");
return 0;
}
printf("截取后的子串为:");
for (int i = len - m; i < len; i++) {
printf("%c", str[i]);
}
printf("\n");
return 0;
}
```
该程序首先读取一个非空字符串,并获取其长度。然后要求用户输入要截取的字符数,如果该数字大于等于字符串长度,则提示无法截取并退出程序。
否则,程序从原字符串的倒数第 m 个字符开始遍历,将每个字符打印出来,最终输出截取后的子串。