C语言编程,求解

利用二维字符数组存储年12个月的月份英文名称,并能打印输出所有月份,同时要求对这12个月按字母顺序从小到大排序并输出。(单独写排序函数(排序函数可以用交换排序和冒泡排序)... 利用二维字符数组存储年12个月的月份 英文名称,并能打印输出所有月份,同时要求对这12个月按字母顺序从小到大排序并输出。(单独写排序函数(排序函数可以用交换排序和冒泡排序),和打印输出函数, 也可以写一个输入月份的函数) 展开
 我来答
自我编程
2020-06-24 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

代码思路:

一、程序需要四个函数,分别是入口主函数、输入函数、输出函数、排序函数。

二、题目要求按首字母排序,未限制大小写,因此不能直接用字母比大小,需根据大小写求字母差值,用差值比较。

三、字符串排序交换,用函数strcpy。

下面是代码:

#include<stdio.h>

#include<string.h>

#define MM 12//月份个数

#define MS 20//字符串长度

void px(char moms[][MS]);// 排序

void showMM(char moms[][MS]);

void inputMM(char moms[][MS]);//手动输入月份名

int main()

{

    char moms[12][MS]={"January",\

                    "February",\

                    "March",\

                    "April",\

                    "May",\

                    "June",\

                    "July",\

                    "August",\

                    "September",\

                    "October",\

                    "November",\

                    "December"};


    printf("%d个月英文名为:\n",MM);

    showMM(moms);

    px(moms);

    printf("%d个月英文名按首字母升序排序后为:\n",MM);

    showMM(moms);

    inputMM(moms);

    printf("输入后的月份英文名:\n");

    px(moms);

    showMM(moms);


    return 0;

}

void inputMM(char moms[][MS])

{

    int i;

    printf("手动输入%d个月份英文名称(每个名称不超过%d个字符):\n",MM,MS-1);

    for(i=0;i<MM;scanf("%s",moms[i]),i++);

}

void showMM(char moms[][MS])

{

    int i;

    for(i=0;i<MM;printf("%s\n",moms[i]),i++);

    printf("\n");

}

void px(char moms[][MS])

{

    char strTemp[MS]={0};

    int i,j,n1,n2;

    for(i=0;i<MM-1;i++)

        for(j=i+1;j<MM;j++)

        {

            if(moms[i][0]>='A' && moms[i][0]<='Z')n1=moms[i][0]-'A';//大小写识别

            if(moms[i][0]>='a' && moms[i][0]<='z')n1=moms[i][0]-'a';

            if(moms[j][0]>='A' && moms[j][0]<='Z')n2=moms[j][0]-'A';

            if(moms[j][0]>='a' && moms[j][0]<='z')n2=moms[j][0]-'a';

            memset(strTemp,0,MS);

            if(n1>n2)

                strcpy(strTemp,moms[i]),strcpy(moms[i],moms[j]),strcpy(moms[j],strTemp);

        }

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式