说到对字符串的处理,用字符数组再合适不过了,先定义一个字符数组,长度的话,一般练习来说100足够了,特殊要求除外。再定义两个循环变量。前期准备工作就算是完成了。
程序运行第一步应该输入字符串,可以先来一个提示语句,请输入一个字符串之类的。用哪一个输入函数比较好呢,个人认为gets()要比scanf()来的好一点,前者只以回车作为字符串结束标志,后者除了回车,还有空格之类作为结束标志。如果说输入的字符串里面含有空格,用scanf()函数来说就行不通了。
接着就是找到’\0’这个结束标志,用一个for循环就可以实现,然后让’\0’前面的字符逆序输出,这样思路就有了。程序代码如下:运行结果如下:
好像一切都没有问题,但是这只是再输出的时候展示了字符串的逆序,实际上并没有,数组str的顺序还是没有改变,这是一个典型的偷换概念的例子。
字符串逆序这个问题只能用两个数组来完成,一个数组无法完成。在找到字符串结束标志之前都没有什么问题,关键就是结果不是输出时逆序就可以了,而是字符串顺序真正改变了。
再定义一个字符数组,把字符串逆序赋值给这个字符数组,然后输出字符串就可以了,别忘了最后一步给字符数组加一个字符串结束标志,否则不是字符串,只能是字符数组。详细代码如下:运行结果如下:
虽然运行结果相同,但是实质完全不同。