各位,请问一下字符倒置的有关问题(有关问题很简单,请大家不要笑小弟我)
各位大虾,请教一下字符倒置的问题(问题很简单,请大家不要笑我)
写一个小程序
例如:welcome to beijing
把它该成 beijing to welcome
设计思想是什么
------解决方案--------------------
我的想法稍微复杂一些,给大家说来听听。
假设:
给定任意字符串之后,先把两端的空格去掉
方法:
两个字符下标指针
int end = strlen(string) - 1 ; // 指向本次要输出字符串的最后一个字符
int beg = end ; // 指向本次要输出字符串的第一个字符
当处理完一个字符串后,则令end=beg,又变回刚开始的那种状态
当beg == 0时,则说明已经到达字符串的开头了,则把本次的字符串输出完毕,程序结束!
程序如下:
写一个小程序
例如:welcome to beijing
把它该成 beijing to welcome
设计思想是什么
------解决方案--------------------
我的想法稍微复杂一些,给大家说来听听。
假设:
给定任意字符串之后,先把两端的空格去掉
方法:
两个字符下标指针
int end = strlen(string) - 1 ; // 指向本次要输出字符串的最后一个字符
int beg = end ; // 指向本次要输出字符串的第一个字符
当处理完一个字符串后,则令end=beg,又变回刚开始的那种状态
当beg == 0时,则说明已经到达字符串的开头了,则把本次的字符串输出完毕,程序结束!
程序如下:
- C/C++ code
#include <iostream> using namespace std ; int main() { int i = 0 ; char a[] = "Hello Beijing Welcome" ; // 要求:两端不能有空格,若有,应该先去掉 int end = strlen(a)-1 ; // 此次要输出字符数组的末端 int beg = end ; // 此次要输出字符数组的前端 while (true) { -- beg ; if ( beg == 0 ) // 如果处理到a[0]时,则应该输出,并结束处理 { for ( i=beg; i<=end; i++ ) cout << *(a+i) ; system("pause") ; break ; } if ( *(a+beg) == ' ' ) // 如果遇到空格,则说明一个“字符串”已经找到 { for ( i=beg+1; i<=end; i++ ) // 输出此“字符串” cout << *(a+i) ; cout << " " ; while ( true) // 寻找下一个字符串的末端 { if ( *(a+beg) != ' ' ) break ; beg -- ; } end = beg ; // 令始端 = 末端,并继续进行处理 } } return 0 ; } // 此程序在VC6.0下调试成功