C++数组排序问题,不知道哪错了
#include<iostream>#include<cstring>usingnamespacestd;voidsort(char*str1,char*str2);in...
#include <iostream>
#include <cstring>
using namespace std;
void sort(char *str1, char *str2);
int main ()
{
char str1[20]="qwertyuiasdvvsdg";
char str2[20];
sort(str1,str2);
cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl;
return 0;
}
void sort(char *str1, char *str2)
{
int i,j,n,digit_pos,digit;
char temp;
strcpy(str2,str1);
n=strlen(str2);
for(i=0;i<n-1;i++)
{
digit=str2[0];
digit_pos=0;
for(j=0;j<n-1-i;j++)
if(str2[j]>digit)
{
digit=str2[j];
digit_pos=j;
}
temp=digit;
str2[digit_pos]=str2[n-1-i];
str2[n-1-i]=temp;
}
} 展开
#include <cstring>
using namespace std;
void sort(char *str1, char *str2);
int main ()
{
char str1[20]="qwertyuiasdvvsdg";
char str2[20];
sort(str1,str2);
cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl;
return 0;
}
void sort(char *str1, char *str2)
{
int i,j,n,digit_pos,digit;
char temp;
strcpy(str2,str1);
n=strlen(str2);
for(i=0;i<n-1;i++)
{
digit=str2[0];
digit_pos=0;
for(j=0;j<n-1-i;j++)
if(str2[j]>digit)
{
digit=str2[j];
digit_pos=j;
}
temp=digit;
str2[digit_pos]=str2[n-1-i];
str2[n-1-i]=temp;
}
} 展开
2个回答
展开全部
楼主,你的程序只是for循环计数中有点问题,详情请参见下面的程序……
#include <iostream>
#include <cstring>
using namespace std;
void sort(char *str1, char *str2);
int main ()
{
char str1[20]="qwertyuiasdvvsdg";
char str2[20];
sort(str1,str2);
cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl;
return 0;
}
void sort(char *str1, char *str2)
{
int i,j,n,digit_pos,digit;
char temp;
strcpy(str2,str1);
n=strlen(str2);
for(i=0;i<n;i++)
{
digit=str2[0];
digit_pos=0;
for(j=0;j<n-i;j++)
{
if(str2[j]>digit)
{
digit=str2[j];
digit_pos=j;
}
}
temp=digit;
str2[digit_pos]=str2[n-1-i];
str2[n-1-i]=temp;
}
}
我已测试通过哦,谢谢采纳。
#include <iostream>
#include <cstring>
using namespace std;
void sort(char *str1, char *str2);
int main ()
{
char str1[20]="qwertyuiasdvvsdg";
char str2[20];
sort(str1,str2);
cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl;
return 0;
}
void sort(char *str1, char *str2)
{
int i,j,n,digit_pos,digit;
char temp;
strcpy(str2,str1);
n=strlen(str2);
for(i=0;i<n;i++)
{
digit=str2[0];
digit_pos=0;
for(j=0;j<n-i;j++)
{
if(str2[j]>digit)
{
digit=str2[j];
digit_pos=j;
}
}
temp=digit;
str2[digit_pos]=str2[n-1-i];
str2[n-1-i]=temp;
}
}
我已测试通过哦,谢谢采纳。
展开全部
算法有问题。帮你改了。
#include <iostream>
#include <cstring>
using namespace std;
void sort(char *str1, char *str2);
int main ()
{
char str1[20]="qwertyuiasdvvsdg";
char str2[20];
sort(str1,str2);
cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl;
return 0;
}
void sort(char *str1, char *str2)
{
int i,j,n,/*digit_pos,*/digit;
//char temp;
strcpy(str2,str1);
n=strlen(str2);
for(i=0;i<n;i++)
{
digit=str2[i];
//digit_pos=0;
for(j=0;j<i;j++)
if(str2[j]>digit)
{
str2[i]=str2[j];
str2[j]=digit;
digit=str2[i];
//digit_pos=j;
}
//temp=digit;
//str2[digit_pos]=str2[n-1-i];
//str2[n-1-i]=temp;
}
}
#include <iostream>
#include <cstring>
using namespace std;
void sort(char *str1, char *str2);
int main ()
{
char str1[20]="qwertyuiasdvvsdg";
char str2[20];
sort(str1,str2);
cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl;
return 0;
}
void sort(char *str1, char *str2)
{
int i,j,n,/*digit_pos,*/digit;
//char temp;
strcpy(str2,str1);
n=strlen(str2);
for(i=0;i<n;i++)
{
digit=str2[i];
//digit_pos=0;
for(j=0;j<i;j++)
if(str2[j]>digit)
{
str2[i]=str2[j];
str2[j]=digit;
digit=str2[i];
//digit_pos=j;
}
//temp=digit;
//str2[digit_pos]=str2[n-1-i];
//str2[n-1-i]=temp;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询