#include<iostream>
#include<string>
using namespace std;
int num1(string a)
{
int n = 0;
for (int i = 0; i < a.length(); ++i)
if (a[i] == '1')
n++;
return n;
}
int main()
{
string s[60], a;
int i=0;
while (cin >> a)
{
s[i] = a;
i++;
}
for (int j = 0; j < i-1; ++j)
for (int k = 0; k < i -1- j; ++k) {
if (s[k].length() > s[k+1].length())
{
string temp = s[k];
s[k] = s[k+1];
s[k+1] = temp;
}
else if (s[k].length() == s[k+1].length())
{
int n1 = num1(s[k]), n2 = num1(s[k+1]);
if (n1 > n2)
{
string temp = s[k];
s[k] = s[k + 1];
s[k + 1] = temp;
}
else if (n1 == n2)
{
if (s[k] > s[k+1])
{
string temp = s[k];
s[k] = s[k + 1];
s[k + 1] = temp;
}
}
}
}
for (int p = 0; p < i; ++p)
cout << s[p] << endl;
}
在linux上用gdb命令调试,就知道在哪里有异常了