题目描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
题目来源
输入描述
输入一行,为一个只包含小写字母的字符串。
输出描述
输入一行,为一个只包含小写字母的字符串。
思路:
输入后用一个临时变量tmp进行原地逆置
具体实现:
#include <stdio.h>
#include <string.h>
int main(void)
{
printf("请输入一行不超过1000个字符的字符串\n");
char st[1000] = {};
char tmp=NULL;
for (int i = 0; i < 1000; i++)
{
st[i] = getchar();
if (st[i] == '\n')
{
st[i] = '\0';
break;
}
}
int c = (strlen(st)-1);
int d = 0;
for (; c>d; c--)
{
tmp = st[c];
st[c] = st[d];
st[d] = tmp;
d++;
}
printf("逆置为:%s\n",st);
return 0;
}小结:对函数如何传入字符串不明确,以下是错误代码
未解决:
#include <stdio.h>
#include <string.h>
char* Reverse_1(char s[])//原地逆置
{
char* add = s;
int a = (strlen(s)-1);
int b = 0;
char str1[1000] = {};
char c;
for (; a > b; a--)
{
c = str1[a];
str1[a] = str1[b];
str1[b] = c;
b++;
}
return add;
}
int main(void)
{
printf("请输入一行不超过1000个字符的字符串\n");
char st[1000] = {};
for (int i = 0; i < 1000; i++)
{
st[i] = getchar();
if (st[i] == '\n')
{
st[i] = '\0';
break;
}
}
int c = strlen(st);
char st2[1000] = {};
st2[c] = *Reverse_1(&st[c]);
printf("逆置为:%s\n",st2);
return 0;
}
C语言实现字符串原地反转,
文章提供了一个C语言程序,用于接受用户输入的小写字母字符串并进行原地反转。程序首先读取一行不超过1000个字符的字符串,然后使用一个临时变量在原数组中进行字符交换来实现反转。错误代码部分展示了尝试创建一个独立函数进行字符串反转,但未能正确传递和处理字符串。
696

被折叠的 条评论
为什么被折叠?



