赞
踩
萨博有 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));
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。