51Testing软件测试论坛

标题: 在LR中用C语言实现排序的问题 [打印本页]

作者: superfang    时间: 2008-5-6 11:28
标题: 在LR中用C语言实现排序的问题
1.for(k=1;k<7;k++)
{


/*-------------内部--------------------------*/          
   for(j=1;j<7-k;j++)
         {

                if(temp[j]<temp[j+1])
              {
                   strcpy(stemp,temp[j]);
         //      lr_error_message("%s",stemp);
                   strcpy(temp[j],temp[j+1]);
           strcpy(temp[j+1],stemp);
           lr_error_message("%s",temp[j]);
       //   lr_error_message("%s",temp[j+1]);
                   continue;
              }

        
      }


     lr_error_message("***********************");
          
   }

   for(m=1;m<7;m++)
   {
             lr_error_message("%s",temp[m]);
   }
2.  我上面的代码有问题吗? 就是想实现这个排序的功能, 用冒泡法? 可是为什么结果没有改变呢????
    我用 lr_error_message("%s",temp[m]); 输出时, 原来的顺序没有改变? 我想知道为什么?
是不是: strcpy 语句的问题????
作者: superfang    时间: 2008-5-6 11:39
Action()
{


        char arry[100][100]={"90","20","30","40","60"};
    int i;
        int j;
    char temp[100];
        int k;

/*----------------circle-----------------------------*/
        for(i=0;i<5;i++)
        {

          for(j=0;j<5-i;j++)
         {
/*-------------dec---------------------------------*/
              if(arry[j]>arry[j+1])
                          {
                 strcpy(temp,arry[j]);
                                 strcpy(arry[j],arry[j+1]);
                                 strcpy(arry[j+1],temp);
                          }
                  }

           lr_error_message("------------------------------");
                   lr_error_message("%s",arry);

     }

    for(k=0;k<5;k++)
        {
                lr_error_message("%s",arry[k]);
        }


   
        return 0;
}
这是我自己写的,也不行啊..... 不知道为什么? why???? 急............

[ 本帖最后由 superfang 于 2008-5-6 11:40 编辑 ]
作者: by1945    时间: 2008-5-6 17:12
指出你这里面的几个问题:
1.字符数组定义,里面只能是一个字符,比如‘9‘就可以,’90‘就不是字符了;
2. fstrcpy是字符串函数,不是字符函数,所以如果是单个的字符,就不需要用到strcpy函数,直接用=就行了;
3.输出有问题,既然是按%s输出,那么就不要循环了;
下面是我在c环境下编译通过的,给你参考
#include "stdio.h"
main()
{
   char array[5]={'2','3','4','1','6'};
    int i;
    int j;
    char temp;
    int k;
   
        for(i=0;i<5;i++)
        {

          for(j=0;j<5-i;j++)
            {
              if(array[j]>array[j+1])
                          {
                             temp=array[j];
                             array[j]=array[j+1];
                             array[j+1]=temp;
                          }
              }

          }
    for(k=0;k<5;k++)
    printf("%c ",array[k]);
}
作者: superfang    时间: 2008-5-6 22:10
标题: 回复 3# 的帖子
牛B啊....小帅哥...
   谢谢了..
作者: superfang    时间: 2008-5-6 22:10
标题: 回复 3# 的帖子
牛B啊....小帅哥...
   谢谢了..
作者: iori    时间: 2008-5-7 11:28
标题: 回复 3# 的帖子
程序有问题吧for(j=0;j<5-i;j++)应该为for(j=0;j<4-i;j++)
作者: superfang    时间: 2008-5-7 16:53
标题: 回复 6# 的帖子
是有问题的...
  你说的很对的...现在已经修改好了... 
3Q




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2