有C语言写定义一个二维数组,存放你的姓名的拼音,如果你的姓名总共只有2个汉字,请加上你母亲的姓,保证有三个汉字,将它们的拼音存到二维数组中,比较三个拼音,按照字母排序,输出排最前面的拼音,如“huang”,“fei”,“hong”三个拼音,应输出“fei”,最后将三个拼音合并到一个一维数组中并输出,即输出“huangfeihong”,要求如下: 1) 定义一个3*10的数组,如name[3][10], 通过for循环,从键盘读取姓名并赋值给数组,可通过语句gets(name[i])来实现从键盘读取字符串到数组中,注意这里的name[i]为二维数组的某一行; 2) 调用比较拼音大小的函数,将二维数组作为实参传给该函数,并获得返回值即排在最前面的拼音,并输出该拼音; 3)定义一个比较拼音大小的函数,函数中可使用strcmp进行拼音比较,可使用strcpy进行字符串数组的拷贝; 4)最后将姓名的三个拼音进行拼接并输出。
时间: 2023-05-31 08:06:43 浏览: 133
```c
#include <stdio.h>
#include <string.h>
char* compare(char name[][10], int n); // 比较拼音大小的函数
int main()
{
char name[3][10];
char pinyin[30];
int i;
for(i = 0; i < 3; i++)
{
printf("请输入第%d个人的姓名:", i+1);
gets(name[i]); // 从键盘读取姓名
}
char* p = compare(name, 3); // 比较拼音大小
printf("排在最前面的拼音是:%s\n", p); // 输出排最前面的拼音
strcpy(pinyin, name[0]); // 将第一个拼音复制到pinyin中
strcat(pinyin, name[1]); // 将第二个拼音接到pinyin后面
strcat(pinyin, name[2]); // 将第三个拼音接到pinyin后面
printf("拼接后的姓名是:%s\n", pinyin); // 输出拼接后的姓名
return 0;
}
char* compare(char name[][10], int n)
{
int i, j;
char temp[10];
for(i = 0; i < n-1; i++) // 冒泡排序
{
for(j = 0; j < n-1-i; j++)
{
if(strcmp(name[j], name[j+1]) > 0)
{
strcpy(temp, name[j]);
strcpy(name[j], name[j+1]);
strcpy(name[j+1], temp);
}
}
}
return name[0]; // 返回排在最前面的拼音
}
```
阅读全文