| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1699 人关注过本帖
标题:这是个排序代码 编译后还是一样 请大佬指点迷津
只看楼主 加入收藏
风流泰
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2018-9-29
结帖率:87.88%
收藏
已结贴  问题点数:11 回复次数:4 
这是个排序代码 编译后还是一样 请大佬指点迷津
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
    char *tmpBuf=NULL; 
    int i=0,j=0; 
    char myBuf[30];
    char myArray[10][30]={"aaa","bbb","ccc","ddd"}; 
    
    int num=4;
    
    printf("排序之前\n"); 
    //打印
    for(i=0;i<num;i++)
    {
        printf("%s\n",myArray[i]); 
    } 
    
    //排序
    for(i=0;i<num;i++)
    {
        for(j=i+1;j<num;j++)
        {
            if(strcmp(myArray[i],myArray[j])>0)
            {
                strcpy(tmpBuf,myArray[i]);//交换的是内存块 
                strcpy(myArray[i],myArray[j]);
                strcpy(myArray[j],tmpBuf); 
            } 
        } 
    } 
    
    //打印
    printf("排序之后\n"); 
    for(i=0;i<num;i++)
    {
        printf("%s\n",myArray[i]); 
    } 
     
    system("pause");
    return 0; 
} 
搜索更多相关主题的帖子: 排序 char num printf for 
2019-04-30 15:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:6 
编译后还是一样
听不懂,你想问什么?

strcpy(tmpBuf,myArray[i]);//交换的是内存块
此时,tmpBuf 的值还是 NULL 吧。
因为 myArray 本身就是排序好的,不需要交换。否则肯定运行时错误
2019-04-30 16:18
风流泰
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2018-9-29
收藏
得分:0 
回复 2楼 rjsp
这是编译后的结果

排序之前
aaa
bbb
ccc
ddd
排序之后
aaa
bbb
ccc
ddd
请按任意键继续. . .

原本我认为编译的结果应该是,

排序之前
aaa
bbb
ccc
ddd
排序之后
ddd
ccc
bbb
aaa
请按任意键继续. . .


所以程序中怎么修改会编译后变成

排序之前
aaa
bbb
ccc
ddd
排序之后
ddd
ccc
bbb
aaa
请按任意键继续. . .





2019-04-30 23:12
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:6 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
    char *tmpBuf=NULL;
    int i=0,j=0;
    char myBuf[30];
    char myArray[10][30]={"aaa","bbb","ccc","ddd"};
   
    int num=4;
   
    printf("排序之前\n");
    //打印
    for(i=0;i<num;i++)
    {
        printf("%s\n",myArray[i]);
    }
   
    //排序
    for(i=0;i<num;i++)
    {
        for(j=i+1;j<num;j++)
        {
            if(strcmp(myArray[i],myArray[j])<0)
            {
                strcpy(myBuf,myArray[i]);//交换的是内存块
                strcpy(myArray[i],myArray[j]);
                strcpy(myArray[j],myBuf);
            }
        }
    }
   
    //打印
    printf("排序之后\n");
    for(i=0;i<num;i++)
    {
        printf("%s\n",myArray[i]);
    }
     
    system("pause");
    return 0;
}
2019-05-01 14:07
风流泰
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2018-9-29
收藏
得分:0 
回复 4楼 word123
谢谢
2019-05-01 16:29
快速回复:这是个排序代码 编译后还是一样 请大佬指点迷津
数据加载中...
 
   



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

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