| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 474 人关注过本帖
标题:初学C语言指针,请大神给点指点。对字符串冒泡排序。。运行不了
只看楼主 加入收藏
liuyawen44
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-11-30
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:7 
初学C语言指针,请大神给点指点。对字符串冒泡排序。。运行不了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
maopao(char *s[5])
{
    int i,j,temp;
    for(i=0; i<5; i++)
    {
        for(j=0; j<5; j++)
        {
            if(strcmp(*(s+j),*(s+j+1)<0))
            {
                temp=*(s+j);
                *(s+j)=*(s+j+1);
                *(s+j+1)=*(s+j);
            }
        }
    }

}
int main()
{
    int i;
    char *s[]= {"man","woman","girl","boy","sister"};
    maopao(s);
    for(i=0; i<5; i++)
        puts(s);
}
搜索更多相关主题的帖子: include sister 字符串 C语言 
2014-12-27 10:48
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:3 
temp=*(s+j);
 *(s+j)=*(s+j+1);
  *(s+j+1)=*(s+j);
字符串怎么能直接赋值?
要用strcpy函数

一片落叶掉进了回忆的流年。
2014-12-27 12:53
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <string.h>

void maopao(char s[][7]) {
    int i, j;
    char temp[7]={0};

    for(i = 0; i < 5; i++) {
        for(j = 0; j < 4 - i; j++) {
            if(strcmp(s[j], s[j + 1]) < 0) {
                strcpy(temp, s[j]);
                strcpy(s[j], s[j + 1]);
                strcpy(s[j + 1], temp);
            }
        }
    }
}

int main(void) {
    int i;
    char s[5][7] = {"man", "woman", "girl", "boy", "sister"};
    maopao(s);

    for(i = 0; i < 5; i++) {
        puts(s[i]);
    }

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2014-12-27 13:26
liuyawen44
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-11-30
收藏
得分:0 
回复 楼主 liuyawen44
改了也不对啊,我就是没法运行,你跑一跑试试
2014-12-27 15:27
liuyawen44
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-11-30
收藏
得分:0 
回复 3楼 longwu9t
不好意思,我想用指针,应该是赋值那一块我不太理解吧
2014-12-27 15:28
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
回复 3楼 longwu9t
j<5-i吧

一片落叶掉进了回忆的流年。
2014-12-27 16:58
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 5楼 liuyawen44
程序代码:
#include <stdio.h>
#define LENMAX 7

int scmp(char *sp, char *sq, int lenmax) {
    int i, flag;
    lenmax--;

    for(i = 0; i < lenmax; i++) {
        if(*(sp + i) - * (sq + i) > 0) {
            flag = 1;
            break;

        } else if(*(sp + i) - * (sq + i) < 0) {
            flag = -1;
            break;

        } else {
            flag = 0;
        }
    }

    return flag;
}

void scopy(char *sp, char *sq, int lenmax) {
    int i;
    lenmax--;

    for(i = 0; i < lenmax && *(sq + i) != '\0'; i++) {
        *(sp + i) = *(sq + i);
    }

    *(sp + i) = '\0';
}

void maopao(char s[][LENMAX]) {
    int i, j;
    char temp[LENMAX] = {0};

    for(i = 0; i < 5; i++) {
        for(j = 0; j < 4 - i; j++) {
            if(scmp(s[j], s[j + 1], LENMAX) < 0) {
                scopy(temp, s[j], LENMAX);
                scopy(s[j], s[j + 1], LENMAX);
                scopy(s[j + 1], temp, LENMAX);
            }
        }
    }
}

int main(void) {
    int i;
    char s[5][LENMAX] = {"man", "woman", "boy", "boys", "sister"};
    maopao(s);

    for(i = 0; i < 5; i++) {
        puts(s[i]);
    }

    return 0;
}


[ 本帖最后由 longwu9t 于 2014-12-27 18:06 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2014-12-27 17:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
下面是对字符串冒泡排序的一个示例:

程序代码:
// 学生数据结构
struct StudentItem
{
    char   Code[7];         // 编码
    char   Name[21];        // 姓名
    int    Sex;             // 性别
    int    SchoolCode;      // 学院编码
    double Scores[10];      // 课程成绩
};

// 学生数据表结构
struct StudentInfo
{
    size_t Count;
    StudentItem Data[100];
};
extern StudentInfo Students;


程序代码:
// 复制一个学生数据
StudentItem CopyStudent(StudentItem* source)
{
    StudentItem target;

    strcpy_s(target.Code, source->Code);
    strcpy_s(target.Name, source->Name);
    target.Sex = source->Sex;
    target.SchoolCode = source->SchoolCode;
    memcpy_s(target.Scores, sizeof(target.Scores), source->Scores, sizeof(source->Scores));

    return target;
}

// 交换两个学生的变量内容
void SwapStudent(StudentItem* s1, StudentItem* s2)
{
    StudentItem temp = CopyStudent(s2);
    *s2 = CopyStudent(s1);
    *s1 = CopyStudent(&temp);
}

// 按姓名排序
void StudentsSortByName(StudentInfo* students)
{
    // 用冒泡法进行排序
    for (size_t i = 0; i < students->Count - 1; ++i)
    {
        for (size_t j = i; j < students->Count; ++j)
        {
            if (strcmp(students->Data[i].Name, students->Data[j].Name) < 0)     // 升序
            {
                SwapStudent(&(students->Data[i]), &(students->Data[j]));
            }
        }
    }
}



授人以渔,不授人以鱼。
2014-12-28 11:22
快速回复:初学C语言指针,请大神给点指点。对字符串冒泡排序。。运行不了
数据加载中...
 
   



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

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