把一个字符串的大写字母放到字符串的后面 ,各个字符的相对位置不变,不能申请额外的空间

题目

把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。

 

Cede(C):

#include
#include

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';
}


 


 

你可能感兴趣的:(c面试笔试题)