华为od机试真题 c++ 实现【字符串重新排列
时间: 2023-05-08 13:00:35 浏览: 161
华为OD机试真题-字符串重传排列2023
题目描述:
给定一个字符串,将其中的小写字母和大写字母分别重新排列,使得所有的小写字母都排在大写字母的前面。
解题思路:
本题的思路比较简单,我们只需要遍历整个字符串,将其中的小写字母和大写字母分别存入两个数组中,然后将它们依次拼接起来就可以了。
具体步骤如下:
1. 定义两个数组,分别用于存放小写字母和大写字母。
2. 遍历字符串,将其中的小写字母存入小写字母数组中,将其中的大写字母存入大写字母数组中。
3. 将小写字母数组和大写字母数组依次拼接起来,并将拼接后的字符串输出即可。
代码实现:
#include <stdio.h>
#include <string.h>
int main()
{
char str[100]; //定义字符串
char lower[100], upper[100]; //定义存放小写字母和大写字母的数组
int i, j=0, k=0; //i为循环变量,j和k分别用于记录小写字母数组和大写字母数组中的元素个数
printf("请输入字符串:");
scanf("%s", str); //输入字符串
for(i=0; i<strlen(str); i++) //遍历字符串
{
if(str[i]>='a' && str[i]<='z') //如果是小写字母
{
lower[j] = str[i]; //将它存入小写字母数组中
j++;
}
else if(str[i]>='A' && str[i]<='Z') //如果是大写字母
{
upper[k] = str[i]; //将它存入大写字母数组中
k++;
}
}
lower[j] = '\0'; //在小写字母数组最后加上'\0',表示字符串结束
upper[k] = '\0'; //在大写字母数组最后加上'\0',表示字符串结束
strcat(lower, upper); //将小写字母数组和大写字母数组依次拼接起来
printf("重新排列后的字符串为:%s\n", lower); //输出拼接后的字符串
return 0;
}
阅读全文