注册 登录
编程论坛 C++教室

比较用指针比较5个字符串的大小.大家帮忙看看下面程序有什么问题??

gyfabc 发布于 2012-04-20 21:34, 1877 次点击
#include<iostream>
#include<string>
using namespace std;

int main()
{
cout<<"本程序比较用指针比较5个字符串的大小"<<endl;

int i,j;char *t,*ss[6],aa[15][15];

    for(i=0;i<5;i++)
        for(j=0;j<15;j++)
             cin>>aa[i][j];
    ss=aa;

cout<<"排列前的顺序:"<<endl;
for(i=0;i<5;i++)
    cout<<*(ss+i)<<" ";
cout<<endl;

for(i=0;i<4;i++)
    for(j=i+1;j<5;j++)
        if(strcmp(ss[i],ss[j])>0)
        {t=ss[i];
         ss[i]=ss[j];
         ss[j]=t;
        }
cout<<"排列后的顺序:"<<endl;
for(i=0;i<5;i++)
  cout<<*(ss+i)<<" ";
  cout<<endl;
return 0;

}
9 回复
#2
ab10349827492012-04-21 00:41
经过适当修改后得到的程序;
#include<iostream>

#include<string>
using namespace std;
int main()
{
cout<<"本程序比较用指针比较5个字符串的大小"<<endl;

int i=0,j;char *t,*ss[6],aa[15][15];

    for(i=0;i<5;i++)
             cin>>aa[i];
    for(i=0;i<5;i++)
        ss[i]=aa[i];

cout<<"排列前的顺序:"<<endl;
for(i=0;i<5;i++)
    cout<<ss[i]<<" ";
cout<<endl;

for(i=0;i<4;i++)
    for(j=i+1;j<5;j++)
        if(strcmp(ss[i],ss[j])>0)
        {t=ss[i];
         ss[i]=ss[j];
         ss[j]=t;
        }
cout<<"排列后的顺序:"<<endl;
for(i=0;i<5;i++)
  cout<<*(ss+i)<<" ";
  cout<<endl;
return 0;

}
希望对你有帮助
#3
ab10349827492012-04-21 00:43
主要修改了:
 for(i=0;i<5;i++)
        for(j=0;j<15;j++)
             cin>>aa[i][j];
    ss=aa;

cout<<"排列前的顺序:"<<endl;
for(i=0;i<5;i++)
    cout<<*(ss+i)<<" ";
这段。
#4
gyfabc2012-04-21 16:57
回复 2楼 ab1034982749
谢谢你,程序这样的话就没问题了。但我有个问题,就是

   int main()
 {
 cout<<"本程序比较用指针比较5个字符串的大小"<<endl;
 
int i=0,j;char *t,*ss[6],aa[15][15];
 
    for(i=0;i<5;i++)
              cin>>aa[i];

中的for(i=0;i<5;i++)
              cin>>aa[i]
  cin>>a[i]是输入二维数组的吗?能不能用两个for语句输入a[i][j]代替?
#5
ToBeOOP2012-04-21 17:47
可以试下运行这段代码..我出错..但是可以输出结果..我把第二个下标上限设置为元素总数..还有一个问题就是..在数组为int时会出现">>"操作符不匹配的情况..char就可以
程序代码:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main( )  {
    char a[5][5]={' '};
    for(int i=0; i !=25;i++)  {
        cin >> a[i];
    }
    for(int i=0; i !=25;i++)  {
        cout << a[i];
    }
    return 0;
}

 
#6
ab10349827492012-04-21 18:21
cin>>a[i]是输入二维数组的吗?能不能用两个for语句输入a[i][j]代替?

cin>>a[i]是输入字符串的,而用两个循环的话
cin>>a[i][j];
这样输入的就是单个字符了。不是字符串。

#7
gyfabc2012-04-21 18:47
回复 5楼 ToBeOOP
会提示Compiling...
fdgdf.cpp
J:\33333\fhgfh\fdgdf.cpp(10) : error C2374: 'i' : redefinition; multiple initialization
#8
gyfabc2012-04-21 18:52
回复 6楼 ab1034982749
是的,我是输入二维字符,第一个字符串就占一行,然后我将 ss=aa;给指针数组,指针数组不就是指向二维数组的每一行了?
#9
ab10349827492012-04-21 18:59
回复 8楼 gyfabc
对于指针数组ss[6];因为他是个数组,所以ss和其他的一般数组一样是个常量,不能对它进行赋值,
ss是常量其值为系统对其分配内存空间的首地址。
#10
gyfabc2012-04-21 19:06
回复 9楼 ab1034982749
哦哦。原来如此,对指针还是吃不透
1