大学c语言入门题 10
3个回答
展开全部
题意是要你将英文前两个字母和中文做成数据列表。然后通过遍历匹配查询。
对于保存该数据列表,可以用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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询