每日一题:用c语言实现字符串逆转并比较逆转前后字符串的大小

目录

一、要求

二、代码

三、结果

四、注意事项


 一、要求

       实现读取一个字符串,字符串可能会有空格,将字符串逆转,原来的字符串与逆转字符串相同,输出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,


结束~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值