| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 716 人关注过本帖
标题:将若干字符串的按字母大小输出
只看楼主 加入收藏
honghong88
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-10-16
结帖率:50%
收藏
已结贴  问题点数:2 回复次数:3 
将若干字符串的按字母大小输出
#include<iostream>
#include< string>
  using namespace std;

int main()
{ void cmp (char (*name)[],int n );
  void print (char (*name)[],int n );

   
    char name[5][30];
int i ;

for(i=0;i<5;i++  )
{cout<<"input"<<i+1;
cin>>name[i];

}

 cmp(name ,5  );
 print(name,5 );


void cmp (char  (* name)[30],int n )
{ char *temp;
int i,j,k;
for( i=0;i<n-1;i++ )
{k=i;
for(j=i+1;j<n-1;j++)
  if((strcmp(name[k],name[j]))>0 )
      k=j;
if(k!=i)
{temp = name[i] ;  name[i]=name[k];name[k]=temp;       }
}
}

void  print(char (* name)[30],int n )
{ int i;
   
for(i=0; i<n;i++  )
     cout<<name[i]<<endl;
      
}


1>------ 已启动生成: 项目: job, 配置: Debug Win32 ------
1>正在编译...
1>22.cpp
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(24) : error C2664: “cmp”: 不能将参数 1 从“char [5][30]”转换为“char (*)[]”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(25) : error C2664: “print”: 不能将参数 1 从“char [5][30]”转换为“char (*)[]”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(45) : error C2106: “=”: 左操作数必须为左值
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(45) : error C2440: “=”: 无法从“char *”转换为“char [30]”
1>        没有转换为数组类型,但有转换为数组的引用或指针

搜索更多相关主题的帖子: 字符串 include 字母 
2011-11-14 19:24
honghong88
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-10-16
收藏
得分:0 
#include<iostream>
#include< string>
  using namespace std;

int main()
{ void cmp (char *,int n );
  void print (char *,int n );
   

   
    char name[5][30];

int i ;
char (*p)[5];
p=name;
for(i=0;i<5;i++  )
{cout<<"input"<<i+1;
cin>>name[i];

}

 cmp(p ,5  );
 print(p,5 );

}

void cmp (char  *p,int n )

{ char *temp;

int i,j,k;
for( i=0;i<n-1;i++ )
{k=i;
for(j=i+1;j<n-1;j++)
  if((strcmp(*(p+i),(*p+j))>0 )
      k=j;
if(k!=i)
{temp = *(p+i) ;   *(p+i) = *(p+j) ; *(p+j) =temp;       }
}
}

void  print(char * p,int n )

{ int i;
   
for(i=0; i<n;i++  )
     cout<< *(p+i) <<endl;
      
}


1>正在编译...
1>22.cpp
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(18) : error C2440: “=”: 无法从“char [5][30]”转换为“char (*)[5]”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(25) : error C2664: “cmp”: 不能将参数 1 从“char (*)[5]”转换为“char *”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(26) : error C2664: “print”: 不能将参数 1 从“char (*)[5]”转换为“char *”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(43) : error C2664: “strcmp”: 不能将参数 1 从“char”转换为“const char *”
1>        从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(44) : error C2146: 语法错误 : 缺少“)”(在标识符“k”的前面)
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(46) : error C2440: “=”: 无法从“char”转换为“char *”
1>        从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\job\job\22.cpp(46) : error C2440: “=”: 无法从“char *”转换为“char”
1>        没有使该转换得以执行的上下文
1>生成日志保存在“file://d:\我的文档\Visual Studio 2005\Projects\job\job\Debug\BuildLog.htm”
1>job - 7 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

2011-11-14 19:31
honghong88
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-10-16
收藏
得分:0 
为什么 无法从“char [5][30]”转换为“char (*)[5]”
 从2维数组的  转换为数组 指针 只能是 int的形式 呢

2011-11-14 19:34
xlj3105098
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2011-10-8
收藏
得分:2 
#include<iostream>
#include<string>
using namespace std;
void cmp (char *name[],int n );
void print (char *name[],int n );
int main(void)
{
    char name[5][30];
    int i ;
    for(i=0;i<5;i++)
    {
        cout<<"input"<<i+1;
        cin>>name[i];
    }
    cmp((char**)name,5);
    print((char**)name,5);
}

void cmp (char *name[30],int n )
{
    char *temp;
    int i,j,k;
    for( i=0;i<n-1;i++ )
    {
        k=i;
        for(j=i+1;j<n-1;j++)
            if((strcmp(name[k],name[j]))>0 )
                k=j;
        if(k!=i)
        {
            temp = name[i] ;  
            name[i]=name[k];
            name[k]=temp;
        }
    }
}
 
void  print(char * name[30],int n )
{
    int i;
    for(i=0; i<n;i++  )
        cout<<name[i]<<endl;
}

帮你改了一点,后面的你自己再改下~
2011-11-14 22:50
快速回复:将若干字符串的按字母大小输出
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030465 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved