首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮忙见见哪里出错了~

2013-01-06 
帮忙看看哪里出错了~~~题目:假设有一个字符数组a已经按降序排好序,编写程序输入一个字符串b(无序),将b中的

帮忙看看哪里出错了~~~
题目:假设有一个字符数组a已经按降序排好序,编写程序输入一个字符串b(无序),将b中的每个字符按降序的规则插到数组a中。

我写的:
#include<cstring>
#include<iostream>
using namespace std;
int main()
{   char a[20];
    char *str=new char[20];strcpy_s(a,"igeca");
strcat_s(a,"hfdjb");
strcpy_s(str,20,a);
cout<<"原无序的的数列为:"<<str<<endl;
char *pt;
int i,j,k;
for(i=0;i<19;i++)
{   k=i;
    for(j=i+1;j<20;j++)
if(strcmp(str[i],str[j])>0) k=j;if(k!=i)
{   pt=str[k];
    str[k]=str[i];
str[i]=pt;
}
}
for(i=0;i<20;i++)
cout<<"按降序规则排好序的新数列为:"<<str[i]<<endl;
system("pause");
}

问题主要出在红色字体部分吧...麻烦告诉下我这样写问题出在哪儿了?灰常感谢!!!
[解决办法]
1 char *pt ------> char pt
2 strcmp ------比较字符串,单个字符直接比较
3 if(str[i]>str[j]) 多了一个 )
4 代码有点乱,编程忌讳这个。
5 只改了语法错误

#include<cstring>
#include<iostream>
using namespace std;
int main()
{   char a[20];
char *str=new char[20]; strcpy_s(a,"igeca");
strcat_s(a,"hfdjb");
strcpy_s(str,20,a);
cout<<"原无序的的数列为:"<<str<<endl;
char pt;
int i,j,k;
for(i=0;i<19;i++)
{   k=i;
for(j=i+1;j<20;j++)
if(str[i]>str[j])
k=j; 
if(k!=i)
{   pt=str[k];
str[k]=str[i];
str[i]=pt;
}
}
for(i=0;i<20;i++)
cout<<"按降序规则排好序的新数列为:"<<str[i]<<endl;
system("pause");
}

[解决办法]
引用
    for(j=i+1;j<20;j++)
if(strcmp(str[i],str[j])>0) k=j; if(k!=i)
比如这里很乱。

还有为什么要把char *pt ------> char pt??
----char *pt;pt是指针。
----可以写char pt1; pt = ‘c';
可以写 char *pt2; *pt = ’c';
就是说 *pt2 与 pt1,是同类型的。pt2与pt1不是同类型。

热点排行