题目:输入十个数字,将这十个数字中的偶数按照从小到大的顺序放在前面,同时将奇数从小到大放在偶数的后面。
下面是我自己的解决方法,比较低级,调试正常,大家来发表发表还有其他的方法么。
[C++] 纯文本查看 复制代码 // Study-Project.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
const int Size = 10;
void function(const int *str,int size);
int main()
{
int ch[Size];
cout << "Please enter ten numbers: " << endl;
for (int x = 0; x < Size;x++)
cin >> ch[x]; //输入10个数字作为测试
function(ch,Size);
system("pause");
return 0;
}
void function(const int *str,int size)
{
int tmp;
int j = 0,count=0;
int c = 0;//记录偶数的个数,同时作为奇数的起点
int temp[Size] = {0};//初始化一个新的数组
///////////////////////////////////////////////////////////
for (int i = 0; i < size; i++)
{
if (str[i] % 2 == 0)
{
temp[j] = str[i];
j++;
}
} //判断原数组的偶数成分,并将这些偶数存入新的数组中
//////////////////////////////////////////////////////////
count = j;
c = j;//获取偶数的个数
while (count)
{
for (int i = j-count; i < j; i++)
{
tmp = temp[j - count];
if (tmp>=temp[i])
{
tmp = temp[i];
temp[i]=temp[j - count];
temp[j - count] = tmp;
}
}
count--;
} //判断新的数组的偶数部分的大小,并排序
////////////////////////////////////////////////////////////
for (int i = 0; i < size; i++)
{
if (str[i] % 2 == 1)
{
temp[j] = str[i];
j++;
}
} //判断原数组的奇数成分,并将这些奇数存入新的数组中
////////////////////////////////////////////////////////////
count = j;
while (count)
{
for (int i = j - count+c; i < size; i++)//其中j-count+c作为奇数的起点
{
tmp = temp[j - count+c];
if (tmp >= temp[i])
{
tmp = temp[i];
temp[i] = temp[j - count+c];
temp[j - count+c] = tmp;
}
}
count--;
} ////判断新的数组的奇数部分的大小,并排序
//////////////////////////////////////////////////////
for (int i = 0; i < size; i++)
cout << temp[i] << " ";
}
|