回 帖 发 新 帖 刷新版面

主题:这个程序中最后字符串是怎么排序的?

#include<string.h>
int n,j;
void f(char *p[n],int n)
{
     char *t;int i,j;
     for(i=0;i<n-1;i++)
     for(j=i+1;j<n;j++)
     if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j];p[j]=t;}
     }
     
  main()
  {
        char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
        f(p,5);
        printf("%d\n",strlen(p[1]));
        printf("%s  %s  %s  %s  %s\t",p[0],p[1],p[2],p[3],p[4]);
        
        system("pause");
        return 0;
        }
为什么得到的结果是如下:
4
aabdfg  abbd  abc  cd  dcdbe    请按任意键继续. . .
程序中第六七行中的变量i,j的控制条件知交换的元素有(i=0,j=1),(i=1,j=2),(i=2,j=3),(i=3,j=4)共五次那么得到的结果应该是如下:
4
aabdfg  abbd  dcdbe  abc  cd
不明白为什么??????

回复列表 (共2个回复)

沙发

字符串比较是比较前面字母的ASCII码,你的程序要求是把小字符排在前面,a是最小的字符,所以有a的字符串排前面,另外你的循环数量不止你所说的那些,比如i=0时,要经过j=1,j=2,j=3.....一直到条什不满足结束。你可以自己看清楚代码。还有在传递数组时,通常的做法是数组名+数组长度。

板凳

又是卖萌的,你说你看了strcmp的功能介绍么

我来回复

您尚未登录,请登录后再回复。点此登录或注册