问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何给字符串排序?

发布网友 发布时间:2022-04-23 23:08

我来回答

3个回答

热心网友 时间:2023-10-13 03:39

结构体 * 弄个结构体数组 ...............

方法一 结构体数组排序
/////////////////////////////////////////
// C-Free 4.1
// MinGW 3.4.5
// veket的小号
/////////////////////////////////////////
#include <stdio.h>
#include <string.h>
typedef struct data
{
char s[4];
int x;
int y;
}DATA;
int main()
{
DATA d[3];
DATA temp;
int i;
int j;

strcpy(d[0].s, "ASD");
d[0].x = 25;
d[0].y = 4;

strcpy(d[1].s, "ZXC");
d[1].x = 36;
d[1].y = 9;

strcpy(d[2].s, "QWE");
d[2].x = 10;
d[2].y = 2;

printf("Array before sort:\n");
for(i=0;i<3;i++)
{
printf("%s\t%d\t%d\n", d[i].s, d[i].x, d[i].y);
}

for(i=0;i<2;i++)
{
for(j=i+1;j<3;j++)
{
if(d[i].x<d[j].x)
{
strcpy(temp.s, d[i].s);
temp.x = d[i].x;
temp.y = d[i].y;
strcpy(d[i].s, d[j].s);
d[i].x = d[j].x;
d[i].y = d[j].y;
strcpy(d[j].s, temp.s);
d[j].x = temp.x;
d[j].y = temp.y;
}
}
}

printf("\n\nArray after sort:\n");
for(i=0;i<3;i++)
{
printf("%s\t%d\t%d\n", d[i].s, d[i].x, d[i].y);
}

return 0;
}

方法二 结构体不排序 建个指针数组 每个元素 依次指向 结构体数组的元素
然后 对指针数组 进行排序

#include <stdio.h>
#include <string.h>
typedef struct data
{
char s[4];
int x;
int y;
}DATA;
int main()
{
DATA d[3];
DATA *p[3];
DATA *temp;
int i;
int j;

strcpy(d[0].s, "ASD");
d[0].x = 25;
d[0].y = 4;

strcpy(d[1].s, "ZXC");
d[1].x = 36;
d[1].y = 9;

strcpy(d[2].s, "QWE");
d[2].x = 10;
d[2].y = 2;

printf("Array before sort:\n");
for(i=0;i<3;i++)
{
p[i] = &d[i];
printf("%s\t%d\t%d\n", p[i]->s, p[i]->x, p[i]->y);
}

for(i=0;i<2;i++)
{
for(j=i+1;j<3;j++)
{
if(p[i]->x<p[j]->x)
{
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}

printf("\n\nArray after sort:\n");
for(i=0;i<3;i++)
{
printf("%s\t%d\t%d\n", p[i]->s, p[i]->x, p[i]->y);
}

return 0;
}

热心网友 时间:2023-10-13 03:39

结构体必须的。
二楼不对吧,如果光用字符串是不行的,因为scanf不支持空格输入,有空格的话会将它分成3个数组的 。在不知道最后数据有多少位的时候,提取后面的数字可能出错。
而且那种方法没有结构体省事。

热心网友 时间:2023-10-13 03:39

很简单

不用结构体 二维字符串就可以搞定··

用sscanf提取后面的数字 将之存入int数组

对数组排序 然后二维字符串按照int数组顺序输出
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天将雄师观后感600字 为什么喝酒会降血糖 牛栏山 52度浓香型白酒-购买最佳价格 全兴大曲 52度浓香型白酒-购买最佳价格 笔记本电脑怎么接音箱电脑如何连接外置音箱 笔记本电脑有音箱插孔吗笔记本电脑如何连接喇叭 冰箱压缩机过热启动5秒就停了 周长相等的正方形和圆,其面积比是多少 周长相等的正方形和圆面积比是多少 周长相等的正方形与圆形,边长与半径的比是( ),面积之比是( )。 要有... C语言中如何将10个字符串进行排序 电话是1876年由?发明的 求详细解答:1876年,贝尔发明了电 历史上第一个电器是什么? 电灯泡是谁在哪一年发明的? 电报电话分别是谁发明的? 爱迪生发明电的事例 爱迪生在什么时候发明了什么东西? 电是由谁发明的? 1876年发明的是电话还是电灯?? 谁发明了电?谁让人类掌握了电的使用? 最早发明电器的是谁? 谁发明了电? 库课网课过期了还可以看吗 1876年由哪位科学家发明了电话? 求解答过程:1876年,贝尔发明了电 谁发明了 电?谁让人 类 掌握 了电的 使用 考虫买的课快过期了,怎么下载下来 美团跑腿好用吗?有人试过吗? 哪个跑腿平台比较便宜? 然后对这些字符串排序,该怎么做 C语言中 字符串怎么排序 c语言字符串排序 字符串排序 C语言编程 按照指定的字符顺序进行字符串排序 字符排序 Excel字符串排序 C语言,字符串排序问题。。 java:字符串排序问题 字符串排列 java中怎么对一串字符进行排序! 字符串排序(使用动态链表)先悬赏100分,满意另加分 C语言 字符串排序的规则是什么?就是字符串排序是什么意思? OPPOR11s与荣耀v10哪个好? OPPOR11s与荣耀 v10对比? oppor11s与荣耀V10比较哪个拍照效果好 华为荣耀9和OPPO R11s有什么区别 OPPOR11s与荣耀v10对比? OPPO R11s与荣耀 v10哪个好? oppor11s好还是荣耀8x好?