[日常练习]练习10:翻转字符数组


练习10

【日常练习】
翻转字符数组


描述

读取一个字符串,字符串可能含有空格,将字符串逆转,原来的字符串与逆转后字符串相同,输出0,原字符串小于逆转后字符串输出-1,大于逆转后字符串输出1。例如输入 hello,逆转后的字符串为 olleh,因为hello 小于 olleh,所以输出-1

注意最后的判断一定要这么写,因为strcmp标准C中并不是返回-1和1,而是负值和正值


int result = strcmp(c, d);

if (result < 0)

{

printf("%d\n",-1);

}

else if (result > 0)

{

printf("%d\n", 1);

}

else {

printf("%d\n", 0);

}

输入

输入一个字符串,例如 hello,当然输入的字符串也可能是 how are you,含有空格的字符串

输出

输出是一个整型数,如果输入的字符串是hello,那么输出的整型数为-1


输入示例1

hello

输出示例1

-1

输入示例2

cba

输出示例2

1

输入示例3

aba

输出示例4

0


代码演示1:

#include <stdio.h> 
#include<string.h>
void reverse(char c[])//使用翻转字符串子函数reverse
{
	int p, i, j;
	for (i = 0, j = strlen(c) - 1; i < j; i++, j--)
	{
		p = c[i];
		c[i] = c[j];
		c[j] = p;
	}
}
int main()
{
	char c[100];
	char reverse_c[100];
	char backup_c[100];
	gets(c);
	strcpy(backup_c, c);
	reverse(c);
	strcpy(reverse_c, c);
	int result = strcmp(backup_c, reverse_c);
	
	if (result < 0)
	{
		printf("%d\n", -1);
	}

	else if (result > 0)
	{
		printf("%d\n", 1);
	}

	else 
	{
		printf("%d\n", 0);
	}
	return 0;
}

代码演示2:

//更简洁的写法
#include <stdio.h> 
#include <string.h>//记得加头文件
int main()
{
	char c[100];//原字符串
	char d[100] = {0};//翻转后的,初始化的目的是为了d有结束符
	gets(c);
	//puts(c);//用来调试的
	int i, j;
	for (i = strlen(c) - 1, j = 0; i >= 0; i--, j++)//字符串翻转
	{
		d[j] = c[i];
	}
	d[j] = '\0';//需要结束符,避免输出乱码
	//puts(d);//得到d对不对
	int result = strcmp(c, d);
	if (result < 0)
	{
		printf("%d\n", -1);
	}

	else if (result > 0)
	{
		printf("%d\n", 1);
	}

	else
	{
		printf("%d\n", 0);
	}
	return 0;
}

总结

本题主要考察如何对字符数组中的字符进行翻转,同时要掌握strcmp函数的使用。
头文件不能忘
使用增量编写法,一步一步写
strcmp标准C中并不是返回-1和1,而是负值和正值,要加一个判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H3T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值