目录
一、要求
实现读取一个字符串,字符串可能会有空格,将字符串逆转,原来的字符串与逆转字符串相同,输出0,原字符串小于逆转后字符串输出-1,大于的话输出1,例如输入hello,逆转后的字符串为olleh,因为hello小于olleh,所以输出-1。
二、代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
//实现读取一个字符串,字符串可能会有空格,将字符串逆转,原来的字符串与逆转字符串相同,输出0,原字符串小于逆转后字符串输出-1,
//大于的话输出1,例如输入hello,逆转后的字符串为olleh,因为hello小于olleh,所以输出-1
char c[100];
char d[100];
printf("输入一个字符串:");
gets(c);
//备份c
strcpy(d,c);
/*printf("%d", strlen(c));*/
int len = strlen(c);
//for循环实现第一个字符和最后一个字符交换,第二个和倒数第二个交换
for (int i = 0; i < len/2; i++)
{
char temp = c[i];
c[i] = c[len - i - 1];
c[len - i - 1] = temp;
}
printf("逆转后的字符串:%s\n", c);
//把原字符串和逆转后的字符串进行比较,结果记录下来
int result = strcmp(d,c );
if (result < 0)
{
printf("%d\n", -1);
}
else if(result==0) {
printf("%d\n", 0);
}
else
{
printf("%d\n", 1);
}
return 0;
}
三、结果
四、注意事项
1.备份字符串时,要写成strcpy(d, c);
而不是直接把数组c附给数组d,例如这样:char d[100] = c[100];注意这一行代码是错误的,错误原因:这一行尝试将
c
数组的第100个元素(实际上超出了数组界限,因为数组索引是从0开始的,且长度为100的数组最后一个元素的索引是99)赋值给整个d
数组,这是不正确的。2.strcmp字符串比较函数,注意用法(比较的时候看那个数组在前,那个数组在后),用法如下:
您的
strcmp
比较逻辑不正确。strcmp
返回的值小于0表示第一个字符串小于第二个字符串,等于0表示两者相等,大于0表示第一个字符串大于第二个字符串。您应该直接输出strcmp
的返回值,而不是只输出-1或1。如果必须按照题目要求输出-1、0或1,
结束~