// 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
//请按任意键继续. . .
数字与字母乱序输入a34b56c7777d8,数字在前字母在后输出345677778abcd
最新推荐文章于 2024-11-07 13:22:42 发布