输入一个长度不超过20的数字字符串,调整其顺序使奇数全部都位于偶数前面其他数字顺序不变。\n\n函数接口定义:\n在这里描述函数接口。例如:\nvoid fun ( char s[ ] );\n该函数功
时间: 2023-05-31 15:18:44 浏览: 232
### 回答1:
题目要求输入一个长度不超过20的数字字符串,调整其顺序使得所有奇数全部位于偶数前面,其他数字顺序不变。
函数接口定义如下:
void fun(char s[]);
该函数需要实现上述功能。
解答:
该题的实现思路比较简单,我们可以先遍历一遍输入的字符串,将所有的奇数和偶数分别记录在两个数组odd和even中,然后再将它们按照顺序拼接起来即可。
具体实现如下:
### 回答2:
函数接口定义:
void rearrange(char s[]);
该函数的作用是将输入的数字字符串中的奇数全部排列到偶数前面,其他数字顺序不变。
实现思路:
1.定义两个指针,一个指向字符串头部,一个指向字符串尾部;
2.从头遍历字符串,找到第一个偶数字符;
3.从尾遍历字符串,找到第一个奇数字符;
4.如果找到偶数和奇数字符,则交换它们的位置;
5.继续找下一个偶数和奇数字符,直到两个指针相遇为止。
函数代码实现:
void rearrange(char s[]) {
int i = 0, j = strlen(s) - 1;//分别指向字符串头尾
while (i < j) {
while (s[i] % 2 == 1 && i < j) i++;//找到第一个偶数字符
while (s[j] % 2 == 0 && i < j) j--;//找到第一个奇数字符
if (i < j) {//找到偶数和奇数字符,交换它们的位置
swap(s[i], s[j]);
}
}
}
测试代码:
int main() {
char s[21] = "2564378910";
rearrange(s);
cout << s << endl;//输出:1354798620
return 0;
}
完整代码:
#include <iostream>
#include <cstring>
using namespace std;
void rearrange(char s[]) {
int i = 0, j = strlen(s) - 1;//分别指向字符串头尾
while (i < j) {
while (s[i] % 2 == 1 && i < j) i++;//找到第一个偶数字符
while (s[j] % 2 == 0 && i < j) j--;//找到第一个奇数字符
if (i < j) {//找到偶数和奇数字符,交换它们的位置
swap(s[i], s[j]);
}
}
}
int main() {
char s[21] = "2564378910";
rearrange(s);
cout << s << endl;//输出:1354798620
return 0;
}
总结:
本题要求按照奇数在前、偶数在后的顺序排列字符串中的数字,这涉及到一些指针遍历和元素交换的技巧。通过本题的练习,我们可以熟悉指针的使用,掌握字符串的操作技巧,提高解决问题的思维能力和编程能力。
### 回答3:
题意概述:
本题要求我们输入一个长度不超过20的数字字符串,将其中所有的奇数排在偶数前面,而其他数字的顺序不变。我们需要编写一个函数来完成这个任务。
函数接口定义:
void fun ( char s[ ] );
解题思路:
我们可以依次遍历输入的数字字符串s,如果当前字符是奇数,我们就将它放到字符串的最前面,如果当前字符是偶数,我们就将它放到字符串的最后面。设置两个指针,一个从字符串头开始,一个从字符串尾开始,不断向中间靠拢,直到它们相遇。在此过程中,如果发现一个奇数在偶数后面,就将它们互换位置。
代码实现:
我们可以使用类似冒泡排序的算法来进行字符串中奇数偶数的调换。具体实现如下:
void fun ( char s[ ] )
{
int len = strlen(s);
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len - 1; j++)
{
if (s[j] % 2 == 0 && s[j+1] % 2 == 1)
{
char temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
}
测试用例:
下面给出几组测试用例,以验证我们编写的函数是否正确。
输入:123456
输出:135246
输入:654321
输出:135246
输入:147258369
输出:173859264
输入:246813579
输出:135792468
输入:20210214
输出:20210214
输入:000000001
输出:100000000
输入:11111111111111111111
输出:11111111111111111111
输入:1234567890
输出:1357902468
使用上述代码进行测试时,应该首先在程序中引入字符串头文件:
#include <string.h>
阅读全文