大学c语言入门题 10

 我来答
自我编程
2018-04-09 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

题意是要你将英文前两个字母和中文做成数据列表。然后通过遍历匹配查询。

对于保存该数据列表,可以用2维数组,可以用结构,也可以用数据库或文件。

我这里用数组的方法写了一个,你参考。  原理:利用数组在内存中地址是连续的。

#include<stdio.h>
#define row 7 //列表行数
#define clo 9 //列表列数
char *findc(char c[3],int n);
//参数c:查找的字符; n:正常调用传值0。
//功能:通过字符,匹配数组列表每行首字母。无匹配返回NULL;有唯一匹配,返回中文对应首地址;如有多个匹配 对比每行第二个字母

int main()
{
    char c[3],*str;
    while(1)
    {
        printf("输入首字母:");
        scanf("%c",&c[0]);
        c[1]=c[2]=0;
        getchar();
        str=findc(c,0);
        printf("代表%s\n",str);
    }

    return 0;
}
char *findc(char c[3],int n)
{
    char week[row][clo]={"Mo星期一","Tu星期二","We星期三","Th星期四","Fr星期五","Sa星期六","Su星期天"},*p=&week[0][0],*pSave;
    int count=0;//记录匹配成功次数
    while(p<=&week[row-1][clo-1])
    {
        if(c[0]==*p && c[0+n]==*(p+n))
        {
            pSave=p+2;
            count++;
        }
        p+=clo;
    }

    if(count==1)
        return pSave;
    if(count>1)
    {
        printf("请输入一个字符:");
        scanf("%c",&c[1]);
        getchar();
        return findc(c,1);
    }
    else
        return NULL;
}
未向什么
2018-04-09 · TA获得超过374个赞
知道小有建树答主
回答量:544
采纳率:54%
帮助的人:276万
展开全部
这个还是比较简单的,几个if语句就能解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
心空不下
2018-04-09 · TA获得超过139个赞
知道小有建树答主
回答量:99
采纳率:88%
帮助的人:29万
展开全部
用switch case语句嵌套实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式