第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 **********/
}