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

用C语言将4个学生的姓名按拼音首字母从大到小排序并显示.

发布网友 发布时间:2023-04-23 23:03

我来回答

1个回答

热心网友 时间:2023-10-10 11:40

一个学生的这样搞:

姓名分开,成两个字符串。

分别排序,形成新的字符串,然后输出。


其他学生一样的方法。

#include <stdio.h>
#include <string.h>

#define STU_NAME_MAX_LEN 20
char stu_name[][STU_NAME_MAX_LEN] = 
{
    "iker cassilas",
    "luis suarez",
    "cristiano ronaldo",
    "lionl messi"
};

void main()
{
    int stu_count = sizeof(stu_name)/sizeof(stu_name[0]);
    int i, j, k;
    for (i=0; i<stu_count; i++)
    {
        char firstname[STU_NAME_MAX_LEN];
        char familyname[STU_NAME_MAX_LEN];
        int blankpos = 0;

        //将姓名分开
        memset(firstname, 0, STU_NAME_MAX_LEN);
        memset(familyname, 0, STU_NAME_MAX_LEN);
        for (j=0; j<sizeof(stu_name[i]); j++)
        {
            if (stu_name[i][j] == ' ')
            {
                blankpos = j;
                break;
            }
        }
        memcpy(firstname, &stu_name[i][0], blankpos);
        memcpy(familyname, &stu_name[i][blankpos+1], sizeof(stu_name[i])-blankpos-1);
        printf("old: %s %s\n", firstname, familyname);

        //排序
        for (j=0; firstname[j]!='\0'; j++)
        {
            for (k=j+1; firstname[k]!='\0'; k++)
            {
                if (firstname[j] < firstname[k])
                {
                    char ctemp = firstname[j];
                    firstname[j] = firstname[k];
                    firstname[k] = ctemp;
                }
            }
        }
        for (j=0; familyname[j]!='\0'; j++)
        {
            for (k=j+1; familyname[k]!='\0'; k++)
            {
                if (familyname[j] < familyname[k])
                {
                    char ctemp = familyname[j];
                    familyname[j] = familyname[k];
                    familyname[k] = ctemp;
                }
            }
        }
        printf("new:%s %s\n\n", firstname, familyname);
    }
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
前两天我崴到脚了,脚肿的很厉害,不过现在消了很多,但是淤青很厉害,怎 ... 我打球脚崴了有10多天了,告诉我怎么帮! 空中大卖场阿玛尼手表是机械表吗 Excel如何才能保留两位小数-Excel真正保留两位小数的方法 论文开题报告和前言的内容是一样的吗 小规模纳税人差额征税的会计处理? 增值税差额征税解析 差额征税的账务处理是怎样的? 大连市内有什么好玩的地方 大连有什么好玩的地方适合年轻人 求助,C语言怎么将文档中的数据用动态链表按姓名排序。。 c语言利用指针将10个学生的姓名排序 阳伞的读音阳伞的读音是什么 阳伞的引证解释阳伞的引证解释是什么 水钻打混凝土地面废钻头吗 诺基亚C20 Plus开售在即,买不买主要看这三点 19年春节是几月几日 燕然山的拼音狐燕然山的拼音是什么 梦见自家里有个透明的小蜘蛛的预兆 梦见大蜘蛛生了个小蜘蛛的预兆 一直不明白请教大家什么是*、什么是漫游,希望各位大虾能指点一二,详细最好,谢谢 &quot;冰火、漫游&quot;是什么? 阿拉德之怒漫游怎么加点 漫游技能加点方法攻略 天龙八部冰火玄毒四属性 分别指些什么能力 慕容打冰石头如何? DNF男漫游能不能带必火 堆火强 刷图? DNF,漫游是什么型属性? DNF的漫游枪手在哪能找到让子弹变成冰火属性的技能 苹果12初始锁屏时间 梦见被狗咬或被狗追的预兆 4的个数,摆出的数?摆出的个数? 按人名排序 c语言 占上风什么意思 攻其不备、兵贵神速、草木皆兵、所向无敌、声东击西、围魏救赵 的意思 《三十六计》中胜敌计的瞒天过海,围魏救赵,借刀杀人,以逸待劳,趁火打劫,声东击西各有什么事理?将各 刘牧是复姓吗 刘禹是复姓吗 苹果xsmax好用吗? xs max有什么参数配置,使用效果如何? 莱卡相机是哪国品牌 我是想把自己添加到米聊里面的一些个人信息删除掉,请问应该怎么弄? 响晴的意思响晴的意思是什么 “响晴”的含义? 苹果手表充不进去电维修要多少钱 B柱是什么意思 汽车的B柱有什么用 如果只知道QQ帐号忘记了QQ号码也忘记了QQ密码如何才能找到呢如何才能登上去了 韩语吃方便面是什么意思 可以帮我找一下韩语中方便面怎么说吗 韩国女孩说的要来我家吃泡面吗是什么意思 用硼砂水如何做泥