问题描述 :
从键盘上输入一个整数(长度不大于200),将其各位上为奇数的数字去除,剩余的数字按数字大小从大到小排序,组成一个新的数,并输出到屏幕上。
输入说明 :
你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行有一个整数,整数的长度不大于200。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。
输出说明 :
对于每一组测试数据,你写的程序要求计算出一组相应的计算结果,并将这一组计算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。若全为奇数,输出结果为“None”。注:通常,显示屏为标准输出设备。
输入范例 :
276238496
13579
输出范例 :
866422
None
AC代码
#include<iostream>
#include <cstring>
using namespace std;
void bubbleSort(char a[], int n)//冒泡排序
{
for(int i = n - 1; i > 0; i--)
for(int j = 0; j < i; j++)
if(a[j] < a[j+1])
swap(a[j], a[j+1]);
}
void delete_the_number(char *number)//删除字符串中的某一项
{
for(;*number;number++)
*number=*(number+1);
}
int main()
{
char str[300];
while(cin.getline(str,300,'\n')) {
for (int i = 0; str[i]; i++) {
if ((str[i] - '0') % 2 != 0)
delete_the_number(str + i--);
}
if (str[0] == 0)
cout << "None" << endl;
else {
bubbleSort(str, strlen(str));
cout << str << endl;
}
}
return 0;
}