| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 471 人关注过本帖
标题:[求助]指针数组例题出错
取消只看楼主 加入收藏
zhk3293474
Rank: 1
等 级:新手上路
帖 子:16
专家分:4
注 册:2008-3-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
[求助]指针数组例题出错
例题题目:将若干字符串按字母顺序(由小到大)输出
代码如下:
#include"stdio.h"
#include"string.h"
int main()
{int sort(char *name[],int n);
 int print(char *name[],int n);
 char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"};
 int n=5;
 sort(name,n);
 print(name,n);
 return 0;
}
int sort(char *name[],int n)
{char *temp;
 int i,j,k;
 for(i=0;i<n-1;i++)
  {k=i;
   for(j=i+1;j<n;j++)
   {if(strcmp(name[k],name[j])>0)k=j;
    if(k!=i)
    temp=name[i];name[i]=name[k];name[k]=temp;}
   }
   return 0;
}
int print(char *name[],int n)
{int i;
 for(i=0;i<n;i++){
 printf("%s\n",name[i]);
 }
 return 0;
}
书上写的例题的运行结果为:
BASIC
Computer design
FORTRAN
Follow me
Great Wall

而我按照例题代码运行出现的结果为:
Computer design
BASIC
BASIC
FORTRAN
Great WALL


该例题中的核心代码是:
int sort(char *name[],int n)
{char *temp;
 int i,j,k;
 for(i=0;i<n-1;i++)
  {k=i;
   for(j=i+1;j<n;j++)
   {if(strcmp(name[k],name[j])>0)k=j;
    if(k!=i)
    temp=name[i];name[i]=name[k];name[k]=temp;}
   }
   return 0;
}
疑问如下:
1.每次循环,是不是按顺序将两个if语句都会运行,还是只运行符合某一个if条件的语句?
2.为什么运行会导致少掉了一个字符串,并且BASIC字符串会出现重复
3.我在纸上自己划的运行结果是:
Computer design
BASIC
FORTRAN
Follow me
Great Wall
希望能给我个正确的代码

我已经用turbo c和vc 6.0运行后都是同样的结果
搜索更多相关主题的帖子: 指针数组 
2009-08-11 12:17
zhk3293474
Rank: 1
等 级:新手上路
帖 子:16
专家分:4
注 册:2008-3-24
收藏
得分:0 
非常感谢,是大括号的问题
int sort(char *name[],int n)  
{char *temp;  
int i,j,k;  
for(i=0;i<n-1;i++)  
  {k=i;  
   for(j=i+1;j<n;j++)  
   {if(strcmp(name[k],name[j])>0)k=j;}     //大括号去掉或者括在这里才是正确的
    if(k!=i)  
    temp=name[i];name[i]=name[k];name[k]=temp;  
   }  
   return 0;  
}  
2009-08-11 13:36
快速回复:[求助]指针数组例题出错
数据加载中...
 
   



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

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