您的位置:首页 > 编程语言 > C语言/C++

把**a*b**c***d**转换为**********abcd

2016-04-05 21:33 351 查看
// JIEFA_2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

void swap(char *a,char *b){
char *temp;
*temp=*a;*a=*b;*b=*temp;
}
//void swap(char a,char b){
//	char temp;
//	temp=a;a=b;b=temp;
//}////0xC00000FD: Stack overflow
void   movestr(char *str){
/*
char *p=str;
cout<<*p<<endl;///a
cout<<*str<<endl;///a
cout<<strlen(str)<<endl<<strlen(p)<<endl; ///10   ////10
*/
//char *p=str;
//char *q=str;
//int i;
//++p;////p从1号元素往后指
//cout<<strlen(p)<<endl;///9
bool  flag=false;
int i;
for(i=0;i<strlen(str)-1;i++){
if(str[i]!='*'&&str[i+1]=='*'){  /////遇到a*就交换,遇到*a不处理
swap(str[i],str[i+1]);/////数组元素直接做实参,传递引用,要用*point
flag=true;
}
}//for
if(flag==false){
cout<<"移动后的字符串是:"<<str<<endl;
}else{
movestr(str);/////第一遍可能不完全,可能有*b没处理,需要递归
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "**a*b**c***d**";///*str = "**a*b**c***d**";这两个区别很大!要使用*str,swap()无效果
movestr(str);
//swap(str[0],str[1]);
//cout<<str;
system("pause");
return 0;
}
//移动后的字符串是:**********abcd
//请按任意键继续. . .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息