| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 586 人关注过本帖
标题:[求助]函数调用指针数组对字符串排序问题(无法排序)
只看楼主 加入收藏
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
 问题点数:0 回复次数:3 
[求助]函数调用指针数组对字符串排序问题(无法排序)
#include <stdio.h>
#include<string.h>
#define M 3
#define N 30
int main(){
void input(char* p[],int n);/*声明输入函数*/
void change(char* p[],int n);/*声明排序函数*/
void output(char* p[],int n);/*声明输出函数*/
char a[M][N];/*用来储存字符串*/
int i;
char* str[M];
for(i=0;i<M;i++)
str[i]=a[i];
input(str,M);
change(str,M);
output(str,M);
return 0;
}
void input(char* p[],int n){
int i;
printf("Please input %d character strings!\n",n);
for(i=0;i<n;i++)
gets(p[i]);
}
void change(char* p[],int n){
int i,j,k;
char* temp;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++){
if(strcmp(p[k],p[i])>0)
k=j;
}
if(k!=i){
temp=p[i];
p[i]=p[k];
p[k]=temp;
}
}
}/*用选择排序法排序*/
void output(char* p[],int n){
int i;
for(i=0;i<n;i++)
printf("%s\n",p[i]);
}



运行时无法输出正确的顺序,我想了很长时间就是不知道问题出在哪,估计在指针中。请高手指点一下。谢谢!

[此贴子已经被作者于2006-5-22 10:57:51编辑过]

搜索更多相关主题的帖子: 指针 函数 字符 
2006-05-22 10:55
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
以下是引用蓝色神话在2006-5-22 10:55:00的发言:
#include <stdio.h>
#include<string.h>
#define M 3
#define N 30
int main(){
void input(char* p[],int n);/*声明输入函数*/
void change(char* p[],int n);/*声明排序函数*/
void output(char* p[],int n);/*声明输出函数*/
char a[M][N];/*用来储存字符串*/
int i;
char* str[M];
for(i=0;i<M;i++)
str[i]=a[i];
input(str,M);
change(str,M);
output(str,M);
return 0;
}
void input(char* p[],int n){
int i;
printf("Please input %d character strings!\n",n);
for(i=0;i<n;i++)
gets(p[i]);
}
void change(char* p[],int n){
int i,j,k;
char* temp;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++){
if(strcmp(p[k],p[i])>0) //==>p[k]换成p[j]
k=j;
}
if(k!=i){
temp=p[i];
p[i]=p[k];
p[k]=temp;
}
}
}/*用选择排序法排序*/
void output(char* p[],int n){
int i;
for(i=0;i<n;i++)
printf("%s\n",p[i]);
}



运行时无法输出正确的顺序,我想了很长时间就是不知道问题出在哪,估计在指针中。请高手指点一下。谢谢!


我的原则很简单:不做不喜欢的事!
2006-05-22 11:14
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 

我知道哪错了,不好意思啊,我把if(strcmp(p[k],p[j]>0)),写成了if(strcmp(p[k],p[i])>0).由于i和j很容易写成一样的,所以就造成了这个错误。楼上改的也是对的,只不过我的是从小到大排序,楼上的是从大到小排序!

2006-05-22 11:24
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

从小到大就把K和I调换位置就可以。


我的原则很简单:不做不喜欢的事!
2006-05-22 11:59
快速回复:[求助]函数调用指针数组对字符串排序问题(无法排序)
数据加载中...
 
   



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

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