输入一串字符(长度不超过80个字符),要求不开辟其它数组而将该字符串逆序存放,并输出逆序后的字符串内容。(要求用字符指针来实现
时间: 2023-06-24 14:05:25 浏览: 108
可以使用指针来实现字符串的逆序存放,具体步骤如下:
1. 使用 `cin` 或 `fgets` 等函数读入字符串;
2. 使用指针 `p` 指向字符串的首地址;
3. 使用指针 `q` 指向字符串的尾地址;
4. 交换 `p` 和 `q` 指向的字符,直到 `p` >= `q`;
5. 输出逆序后的字符串。
代码如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[81];
cout << "请输入字符串:";
cin.getline(str, 81); // 或者使用 fgets(str, 81, stdin);
char *p = str, *q = str + strlen(str) - 1;
while (p < q) {
char tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
cout << "逆序后的字符串为:" << str << endl;
return 0;
}
```
注意,上述代码中使用了 `cin.getline(str, 81)` 来读入字符串,这是为了避免输入含有空格的字符串时出现错误。如果不需要读入含有空格的字符串,可以使用 `cin >> str` 或者 `fgets(str, 81, stdin)`。
相关问题
c语言字符指针输入一串字符(长度不超过80个字符),要求不开辟其它数组而将该字符串逆序存放,并输出逆序后的字符串内容。(要求用字符数组和字符指针两种方式来实现)
使用字符数组实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[81];
printf("请输入字符串(长度不超过80个字符):");
scanf("%s", str);
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
printf("逆序后的字符串为:%s\n", str);
return 0;
}
```
使用字符指针实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[81];
printf("请输入字符串(长度不超过80个字符):");
scanf("%s", str);
char *p = str;
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = *(p + i);
*(p + i) = *(p + len - i - 1);
*(p + len - i - 1) = temp;
}
printf("逆序后的字符串为:%s\n", str);
return 0;
}
```
输入一个字符串存放到一-维字符数组中,再将其中各字符逆序存放并输出用cyuyan
好的,下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int len, i;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
// 逆序存放
for (i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
printf("逆序存放后的字符串是:%s\n", str);
return 0;
}
```
这个程序要求用户从键盘上输入一个字符串,并将它存储在字符数组 `str` 中。然后,程序使用 `strlen()` 函数计算字符串的长度,并将结果存储在变量 `len` 中。
接下来,程序使用 `for` 循环将 `str` 数组中的各字符逆序存放。循环的条件是 `i < len / 2`,因为只需要交换前一半和后一半的字符即可。
最后,程序使用 `printf()` 函数输出逆序存放后的字符串。
需要注意的是,这个程序只能处理不包含空格的字符串。如果要处理包含空格的字符串,可以使用 `fgets()` 函数读取一行文本,而不是使用 `scanf()` 函数读取一个单词。