题目:
把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。
Cede(C):
#include<stdio.h>
#include<string.h>
void change(char* inMsisdn);
void main()
{
char inMsisdn[100] = {'0'};
printf("输入一个字符串\n");
scanf("%s",inMsisdn);
change(inMsisdn);
printf("调整后的结果%s\n",inMsisdn);
}
void change(char* inMsisdn)
{
int len = strlen(inMsisdn);
int i,j,count = 0;
for(i = 0;i < len;i++)
{
if(i < len -count) //这里的判断是必须有的
//防止对已经调整到后面的大写字母再次调整位置,导致死循环
{
if(inMsisdn[i] >= 'A' && inMsisdn[i] <= 'Z')
{
inMsisdn[len] = inMsisdn[i];
for(j = i+1;j <= len;j++)
{
inMsisdn[j-1] = inMsisdn[j];
}
i--;
count++;
}
}
}
inMsisdn[len] = '\0';
}