本文主要是介绍Practice—毛绒玩具名字(字典序排序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 一、题目
- 二、输入输出格式
- 三、实现
- 四、总结
一、题目
萨博有 N 个毛绒玩具,萨博给他们都起了名字。每个毛绒玩具的名字都不超过 40 个字符。 萨博想把这些毛绒玩具的“名字”倒过来,并将倒过来后的“名字”按照字典序排序。
二、输入输出格式
输入
第一行是一个整数 N( 0<N≤3 )表示萨博的毛绒玩具数。
之后的 N 行,每行有一个字符串,是萨博的某一个毛绒玩具的名称。
输出
输出有 N 行,是所有毛绒玩具倒过来后的“名字”按照字典序排序后的结果。
输入样例
4
Tommy
Cat
Airman
Spider
输出样例
namriA
redipS
taC
ymmoT
三、实现
代码
#include <stdio.h>
#include <string.h>int main()
{int N;scanf("%d", &N);char name[N][41];memset(name, 0, sizeof(name));for (int i = 0; i < N; i++){scanf("%s", &name[i][0]);}for (int i = 0; i < N; i++){char temp[41];int len;len = strlen(&name[i][0]); //二维数组中第i个元素的长度memset(temp, 0, sizeof(temp));for (int j = len - 1; j >= 0; j--){ temp[len - 1 - j] = name[i][j];} strcpy(&name[i][0], temp);//printf("%s\n", &name[i][0]);} for (int i = 0; i < N; i++){for (int j = i + 1; j < N; j++){char temp2[41];memset(temp2, 0, sizeof(temp2));if (name[i][0] > name[j][0]){strcpy(temp2, &name[i][0]);strcpy(&name[i][0], &name[j][0]);strcpy(&name[j][0], temp2);}}printf("%s\n", &name[i][0]);}return 0;
}
四、总结
以上题为例
二维数组:
char name[N][41];
//N 是名字个数,41是给每个名字分配的内存空间(字节)
其中第 i 个名字的长度为:(二维数组中某个元素的长度)
len = strlen(&name[i][0]);
二维数组的初始化:
memset(name, 0, sizeof(name));
这篇关于Practice—毛绒玩具名字(字典序排序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!