数字与字母乱序输入a34b56c7777d8,数字在前字母在后输出345677778abcd

// 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   movestr(char *str){
	bool  flag=false;
	int i;
	for(i=0;i<strlen(str)-1;i++){
		if((('a'<=str[i]&&str[i]<='z')||( 'A'<=str[i] &&str[i]<='Z')) && (0<=str[i+1]-'0' && str[i+1]-'0'<=9)){
			 ////前面的是字母且后面的是数字,再处理
				//swap(str[i],str[i+1]);/////数组元素直接做实参,传递引用,要用*point
				char temp; ////用或不用这个swap()均可
				temp = str[i];str[i]=str[i+1];str[i+1]=temp;
				//swap(a,b);//
				flag=true;}
	}
	if(flag==false){
		cout<<"移动后的字符串是:"<<str<<endl;
	}else{
		movestr(str);/////第一遍可能不完全,可能有*b没处理,需要递归
	}
}//for
int _tmain(int argc, _TCHAR* argv[])
{
	char str[] = "a34b56c7777d8";
	int i;
	//for(i=0;i<strlen(str);i++){
	//	if(0<=str[i]&&str[i]<=9){////结果为空,char 与int在一起比较  char升级为int  ,这里条件是:str[i]的ASCII在0-9之间
	//	cout<<str[i]<<endl;
	//	}
	//}
	///----------------------
	//	for(i=0;i<strlen(str);i++){
	//	if(0<=str[i]-'0'&&str[i]-'0'<=9){////结果为空,char 与int在一起比较  char升级为int  ,这里条件是:str[i]的ASCII在0-9之间
	//	cout<<str[i];////12345677778请按任意键继续. . .
	//	}
	//}
	///----------------------
	//for(i=0;i<strlen(str);i++){
	//if(48<=str[i]&&str[i]<=57){////结果为空,char 与int在一起比较  char升级为int  ,这里条件是:str[i]的ASCII在0-9之间
	//cout<<str[i];////12345677778请按任意键继续. . .
	//}
	///----------------------
	//	cout<<str[0]<<endl;  ///1
	//for(i=0;i<strlen(str);i++){
	//	if(('a'<=str[i]&&str[i]<='z')||( 'A'<=str[i] &&str[i]<='Z')    ){
	//		cout<<str[i];
	//	}   //////输出  abcd
	//}
	///----------------------
	movestr(str);
	system("pause");
	return 0;
}
//移动后的字符串是:345677778abcd
//请按任意键继续. . .






你可能感兴趣的:(字符串,C语言)