本关任务:编写程序,然用户输入10首歌名,歌名存在一个字符指针数组,然后按字典序进行排序,最后依次输出这些歌名。 注意:为了简化起见,输入的歌名只有一个单词,即歌名中不含空格。 测试说明 平台会对你编写的代码进行测试: 测试输入: Maps Sorry Problem Animals Centuries Baby Dance Face Hello Roses 预期输出: Animals Baby Centuries Dance Face Hello Maps Problem Roses Sorry
时间: 2024-03-17 13:47:10 浏览: 13
好的,我已经了解了您的要求。以下是C语言实现该功能的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SONG_NUM 10
#define MAX_SONG_NAME_LEN 20
void sortSongNames(char *songNames[MAX_SONG_NUM], int songNum);
int main()
{
char *songNames[MAX_SONG_NUM];
int songNum = 0;
char input[MAX_SONG_NAME_LEN + 1];
printf("请输入10首歌名:\n");
while (songNum < MAX_SONG_NUM)
{
scanf("%s", input);
songNames[songNum] = (char*)malloc(strlen(input) + 1);
strcpy(songNames[songNum], input);
songNum++;
}
sortSongNames(songNames, songNum);
printf("按字典序排序后的歌名为:\n");
for (int i = 0; i < songNum; i++)
{
printf("%s\n", songNames[i]);
free(songNames[i]);
}
return 0;
}
void sortSongNames(char *songNames[MAX_SONG_NUM], int songNum)
{
char *temp;
int i, j;
for (i = 0; i < songNum - 1; i++)
{
for (j = i + 1; j < songNum; j++)
{
if (strcmp(songNames[i], songNames[j]) > 0)
{
temp = songNames[i];
songNames[i] = songNames[j];
songNames[j] = temp;
}
}
}
}
```
该程序首先定义了一个字符指针数组 `songNames`,用于存储用户输入的歌名。然后程序通过循环,获取用户输入的10个歌名,并将它们存储到 `songNames` 数组中。接着,程序调用 `sortSongNames` 函数对歌名数组进行排序。最后,程序按顺序输出排好序的歌名,并释放 `songNames` 数组中分配的内存。
`sortSongNames` 函数使用简单的冒泡排序算法,对歌名数组进行排序。该函数的输入参数为歌名数组和歌曲数量,它会将数组中的歌名按字典序排序。排序完毕后, `songNames` 数组中的元素被重新排列,按照字典序排列。