| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4149 人关注过本帖
标题:萌新脑已烧,求大神帮助
只看楼主 加入收藏
祝XX
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-4-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:13 
萌新脑已烧,求大神帮助
0865-字符串排序(数组)
输入若于书名,每个书名长度不超过100,将书按ASCII顺序,从小到大排序。
输入书名个数不定,直到文件结束为止。
将字符串按ASCII码从小到大排序后输出。
输入样列
Java
Basic
C#
Fortran
Delphi
输出样例
Basic
C#
Delphi
Fortran
Java
搜索更多相关主题的帖子: 字符串 
2017-04-09 13:58
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:4 
程序代码:
#include "stdio.h"
#include "string.h"
void main()
{char str[5][100],str_t[100]; // 数字5是可以改成你要输入书本数量
int i,j;
for(i=0;i<5;i++)

scanf("%s",&str[i]);
for(j=0;j<5;j++)
for(i=0;i<5-j;i++)
    {  
    if(strcmp(str[i],str[i+1])>0)
    {strcpy (str_t ,str[i+1]);
    strcpy (str[i+1] ,str[i]);
    strcpy (str[i] ,str_t);}
    };


 for(i=0;i<5;i++)

printf("%s \n  ",str[i]);
   
}


[此贴子已经被作者于2017-4-9 19:28编辑过]


我是硬件工程师
2017-04-09 19:12
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:4 
这题我想到的比较好的办法就是用链表做,按升序插入。
理论上动态行主序多维数组也可以。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-09 19:31
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
一开始也是想到链表,可是能用数组就不用链表,占内存大。
#include "stdio.h"
#include "string.h"
#define size   9
void main()
{char str[size][100],str_t[100]; //定义二维数组表示五个书名,
int i,j;
for(i=0;i<size;i++)

scanf("%s",&str[i]);
for(j=0;j<size;j++)      //交换排序
for(i=0;i<size-j;i++)
    {   
    if(strcmp(str[i],str[i+1])>0)
    {strcpy (str_t ,str[i+1]);
    strcpy (str[i+1] ,str[i]);
    strcpy (str[i] ,str_t);}
    };
 
 for(i=0;i<size;i++)

printf("%s \n  ",str[i]);
   
}

我是硬件工程师
2017-04-09 20:06
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 4楼 qdcs
这题的麻烦是数量未知,所以,二维数组应该建多大?

或者动态指针数组。



[此贴子已经被作者于2017-4-9 20:52编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-09 20:07
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:4 
必须是C吗,如果是C++的话用矢量就可以不管个数限制。
2017-04-10 13:24
祝XX
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-4-9
收藏
得分:0 
回复 2楼 qdcs
这个老师给的提示是用   !=EOF
2017-04-13 15:09
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
要是这样你老师让你用eof来判断书名的输入结束。是啥意思,用文件来输入书名?

[此贴子已经被作者于2017-4-13 19:03编辑过]


我是硬件工程师
2017-04-13 19:00
清扬_栾
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2017-4-14
收藏
得分:4 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUMBER 5 //可以根据书本数量进行更改
int compare_sizes(const void *v1,const void *v2);
int main(void)
{
    char temporary[80],*the_title_of_a_book[NUMBER];
    int count;
    printf("请输入书名: \n");
    for(count=0;count<NUMBER;count++)
    {
        gets(temporary);
        the_title_of_a_book[count]=(char *)malloc(strlen(temporary)+1);
        strcpy(the_title_of_a_book[count],temporary);
    }
    qsort(the_title_of_a_book,NUMBER,sizeof(the_title_of_a_book[0]),compare_sizes);
    for(count=0;count<NUMBER;count++)
    {
        printf("%s\n",the_title_of_a_book[count]);
    }
    return 0;
}
int compare_sizes(const void *v1,const void *v2)
{
    return (strcmp(*(char **)v1,*(char **)v2));
}
我并不确定,你老师所说的数组是否是指针数组。
但是我用标准库函数qrsot尝试了一下,确实可以解决问题。
才疏学浅,若有错误。望不吝指教。
2017-04-14 13:06
清扬_栾
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2017-4-14
收藏
得分:0 
回复 9楼 清扬_栾
仔细检查了一下,发现qsort居然打成了qrsot,感觉很丢人,是qsort。有点对不起C.A.R Hoare创始人的辛苦。
2017-04-14 13:14
快速回复:萌新脑已烧,求大神帮助
数据加载中...
 
   



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

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