版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/XiaoCaiDaYong/article/details/69308184
题目:
对一个字符串重新排列,字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。
如:wjhg1451wet030 ——wjhgwet1451030
我们暂不考虑这些字符串中有其他非法字符,只考虑该字符串只有字母和数字组成。
需要注意:字母分大小写,代码需要体现出来。
代码如下:
/*
对一个字符串重新排列,字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。
如:wjhg1451wet030 ——wjhgwet1451030
*/
#include <stdio.h>
#include <string.h>
/* 完成对字符串的相关操作 */
void fun(char *p)
{
int len;
int i,j=0;
char s[100];
len=strlen(p); // 求出字符串的长度
for(i=0;i<len;i++)
{
if((p[i]>='A'&&p[i]<='Z')||(p[i]>='a'&&p[i]<='z')) // 判断是否是字母
{
s[j]=p[i]; // 赋值给备用数组
j++;
}
}
for(i=0;i<len;i++)
{
if(p[i]>='0'&&p[i]<='9') // 判断是否是数字
{
s[j]=p[i]; // 在原有的基础上继续赋值给备用数组
j++;
}
}
s[j]='\0'; // 字符串结束符
strcpy(p,s); // 将备用数组中的字符串拷贝到既定字符串
}
void main()
{
char str[100];
gets(str); // 获得一个字符串
fun(str); // 字符串操作
puts(str); // 字符串输出
}
结果为: