现有己下几个己赋值的变量
int asdflj=23,lsjf=33,dsllie=234;
这几个变量的名字并没有任何联系
我想得到这样的结果:
当我从键盘输入asdflj或lsjf或dsllie则输出相应变量名的值
不用switch一个一个去判断的办法 有没有别的办法?
期待帮助......
----------------解决方案--------------------------------------------------------
我的想法是:建一个 KeyWord 表应该足以解决这个问题。
个人认为建表存在的好处是程序能进行扩展。
使用结构体便能胜任。
----------------解决方案--------------------------------------------------------
其实不用 switch 是有可能的,
用 strcmp 函数去检验字符串是否相等也不失为一个好办法。
----------------解决方案--------------------------------------------------------
这样吧,我把代码写上,您可以参考一下。 为了测试,我对您的题目进行了如下修改: 增加了两个字符串,且它们的值由1到5排列。 本人不保证程序会发生异常或运行期错误。 #include "stdio.h" #include "conio.h" #include "string.h"
#define MAXBUF 128 /* 字符串最大缓冲区*/ #define MAXTABLE 5 /* 表大小*/ typedef struct KeyWordTag /* 表类型*/ { char KeyName[MAXBUF]; /* 字符串存储区*/ int Value; /* 对应的值存储区*/ }KeyWord;
int main(void) { KeyWord kwTab[MAXTABLE] = /* KeyWord Table */ { {"asdflj",1}, /* 初始化表 */ {"lsjf",2}, {"dsllie",3}, {"huen",4}, {"bccn",5} }; KeyWord *pkwTab = &kwTab; /* 指向由结构体构建的类型 KeyWord 的指针 */ char Buf_InStr[MAXBUF]; /*输入字符串的缓冲区*/ char *pInStr = Buf_InStr; /* 指向输入字符串的指针 */ int T; /* 循环辅助作用的临时变量 */
puts("\nInput a string."); scanf("%s",pInStr); /* 获得输入字符串 */
for(T = 0;T < MAXTABLE;T++) { if(!strcmp((pkwTab+T) -> KeyName,pInStr)) /* 找到匹配的字符串,输出其相应的值 */ { /* 输出结果 */ printf("\nFindout this string <%s> successfully!!!\nIt's value is: %d", pInStr, (pkwTab+T) -> Value); puts("\n\nPress any key to exit....\n"); getch(); return 0; /* 并不继续查找是否尚有相同的字符串 */ } }
printf("Fail: Unable to findout this string <%s>.\n", pInStr); /*查找失败*/ puts("\nPress any key to exit....\n"); getch(); return 0; }
----------------解决方案--------------------------------------------------------
注释应该算非常详尽,此处附上测试结果:
第一次测试,输入表中存在的正确字符串 "huen",运行过程:正确运行
第二次测试,输入表中存在的正确字符串 "bccn",运行过程:正确运行
第三次测试,输入表中不存在的错误字符串 "temp",运行过程:正确运行
[此贴子已经被作者于2005-5-28 2:32:43编辑过]
----------------解决方案--------------------------------------------------------
晕 哈哈 看来我意思没说清楚 先谢谢 我这就看
[此贴子已经被作者于2005-5-28 2:30:40编辑过]
----------------解决方案--------------------------------------------------------
其实我的意思呢是 有没有可以偷赖的办法
比如结构里的段位不能用数组表示吧 必须是
struct {
unsigned a:1;
unsigned b:1;
unsigned c:1;
unsigned d:1;};
当段位数量稍多如十几个时 去查看段位的数值 (比如输入5,想要查看第5个段位的值)
如果一个一个地判断就要写十几个case挺麻烦
所以我就在想 有没有办法不用写这么多语句 并且只需要输入a就能直接查看到a段位的值就好了
----------------解决方案--------------------------------------------------------
原来如此,我尚未想到什么好办法。
要定位我想多数情况下多要经过搜索的,
计算机可不如人眼,一看――就是它――不用找了,如果是的话那计算机可真神了。。。
偷懒?……
那吃饭时不勺碗不夹菜你怎么吃呢?食物如果会自动飞进嘴里那该有多好啊(好像植物人是这样“灌”的)……
----------------解决方案--------------------------------------------------------
希望偷赖 只是希望
----------------解决方案--------------------------------------------------------
厉害啊 注释写得这么清楚 我根本不知道如何写注释
----------------解决方案--------------------------------------------------------