题目描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过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;
}