练习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,而是负值和正值,要加一个判断