为什么我的程序编译链接没错 运行缺出错了?
题目是这样的:将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ascll码值排序如:
10011111
0001101
1010101
1
0
1100
输出:
0
1
1100
1010101
00001101
10011111
我的程序是
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int snum(string& str);
void main()
{
string *s,str;
int k,i,j;
cout<<"输入字符串个数: ";
cin>>k;
s=new string[k];
cout<<"输入字符串:\n";
for(i=0;i<k;i++)
cin>>s[i];
for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
if(s[j].length()<s[i].length())
str=s[i],s[i]=s[j],s[j]=str;
for(i=0;i<k-1;i++)
if(s[i].length()==s[i+1].length())
{
//if(snum(s[i])>snum(s[j])) str=s[i],s[i]=s[j],s[j]=str;
if(snum(s[i])==snum(s[j])) {
if(atoi(s[i].c_str())>atoi(s[j].c_str())) str=s[i],s[i]=s[j],s[j]=str;
}
}
cout<<endl;
for(i=0;i<k;i++)
cout<<s[i]<<endl;
cout<<endl;
}
int snum(string& str)
{
int i,flag=0;
for(i=0;i<str.length();i++)
if(str.substr(i,1)=="1") flag+=1;
return flag;
}