题目描述:
问题分析:
此题分5步:
1.输入n。2.输入毛绒玩具的名字。3.颠倒名字。4.为颠倒好的名字排序。5.输出
与海贼216题类似,这里只说第三步,其余步骤与216题相同。当名字个数为奇数k时,只需交换(k-1)/2次,当为偶数k时交换k/2次,这里使用指针和函数嵌套,方便操作的进行。
代码实现:
#include <stdio.h>
#include <string.h>
void sor(char p[], int k)
{
int i, j;
for (j = 0; j <=k/2; j++)
{
i = p[j];p[j] = p[k - j];p[k - j] = i;
} //交换字符
}
void fun(char*p[],int n)
{
for (int i = 0; i < n; i++)
{
int k = strlen(p[i])-1;
sor(p[i], k); //一行一行的进行
}
}
void sort(char* p[], int n)
{
char* temp;
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (strcmp(p[i], p[j]) > 0)
{
temp = p[i]; p[i] = p[j]; p[j] = temp;
} //交换字符串
}
}
}
int main()
{
int n, i, j;
char a[30][40];
char* p[30];
scanf("%d\n", &n); //输入n
for (i = 0; i < n; i++)
{
gets(a[i]); //输入名字
p[i] = a[i];
}
fun(p, n); //颠倒名字
sort(p, n); //排序名字
for (i =0; i <n; i++)
puts(p[i]); //输出
}
运行结果:
输入:
输出:
//有问题请指出,感谢!