华中科技大学 头歌educoder C语言实训作业 理论课 结构与联合 第3关

第3关:结构体元素排序

任务描述

本关任务:现有如表中所示的4个常用的网站网址信息,包括缩略名、全名、url信息。现设计一个结构体struct web,并编写结构体数组获取表中的网址信息,同时将网站信息按照缩略名排序并按照升序输出,最后获取一个缩略名,输出它的URL信息。 要求:将排序定义成函数。

缩略名全名URL
hkd华中科技大学http://www.hust.edu.cn
bd百度搜索网站http://www.baidu.com
gg谷歌搜索网站http://www.google.com
wy网易邮箱登录https://mail.163.com
测试说明

平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。

测试输入: hkd 华中科技大学 http://www.hust.edu.cn bd 百度搜索网站 http://www.baidu.com gg 谷歌搜索网站 http://www.google.com wy 网易邮箱登录 https://mail.163.com gg 预期输出: bd 百度搜索网站 http://www.baidu.com gg 谷歌搜索网站 http://www.google.com hkd 华中科技大学 http://www.hust.edu.cn wy 网易邮箱登录 https://mail.163.com http://www.google.com

测试输入: hkd 华中科技大学 http://www.hust.edu.cn bd 百度搜索网站 http://www.baidu.com gg 谷歌搜索网站 http://www.google.com wy 网易邮箱登录 https://mail.163.com cs 预期输出: bd 百度搜索网站 http://www.baidu.com gg 谷歌搜索网站 http://www.google.com hkd 华中科技大学 http://www.hust.edu.cn wy 网易邮箱登录 https://mail.163.com 未找到搜寻的网址

要求

输入格式与输出格式为,同一网站的信息之间以空格分隔,不同网站信息之间以回车分隔。


开始你的任务吧,祝你成功!

以下是通关代码:

#include<stdio.h>

struct web /*  设计表示网址的结构  */
{
    /**********  Begin  **********/
    char brief[5];
    char name[30];
    char url[30];

    /**********   End   **********/
};

#define N 4 /*  网址表大小  */

void sort(struct web webs[], int n);
int main()
{
    /**********  Begin  **********/
    struct web webs[N];
    char s[2] = {'0'};
    struct web *p = webs;

    for (int i = 0; i < N; i++)
    {
        scanf("%s %s %s", (p + i)->brief, (p + i)->name, (p + i)->url); }
    
    sort(webs, N);
    for (int i = 0; i < N; i++)
    {
        printf("%s %s %s\n", (p + i)->brief, (p + i)->name, (p + i)->url);
    }
    scanf("%s", s);
    if (s[0] == p->brief[0] && s[1] == p->brief[1])
        
    {
        printf("%s", p->url);
    }
    else
    {
        if (s[0] == (p + 1)->brief[0] && s[1] == (p + 1)->brief[1])
        {
            printf("%s", (p + 1)->url);
        }
        else
        {
            if (s[0] == (p + 2)->brief[0] && s[1] == (p + 2)->brief[1])
            {
                printf("%s", (p + 2)->url);
            }
            else
            {
                if (s[0] == (p + 3)->brief[0] && s[1] == (p + 3)->brief[1])
                {
                    printf("%s", (p + 3)->url);
                }
                else
                {
                    printf("未找到搜寻的网址");
                }
            }
        }
    }

    /**********   End   **********/
    return 0;
}

void sort(struct web webs[], int n) // 要求:将排序定义成函数
{
    /**********  Begin  **********/
    struct web swap;
    struct web *fp = webs;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - i - 1; j++)
        {
            if ((fp->brief[0]) > ((fp + 1)->brief[0]))
            {
                swap = webs[j];
                webs[j] = webs[j + 1];
                webs[j + 1] = swap;
            }
            fp++;
        }
        fp = webs;
    }
    /**********   End   **********/
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值