| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 712 人关注过本帖
标题:[求助]求助啊~~~~求了
收藏  订阅  推荐  打印 
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2650
注册:2005-4-25
[求助]求助啊~~~~求了

求助
现有己下几个己赋值的变量
int asdflj=23,lsjf=33,dsllie=234;

这几个变量的名字并没有任何联系

我想得到这样的结果:
当我从键盘输入asdflj或lsjf或dsllie则输出相应变量名的值

不用switch一个一个去判断的办法 有没有别的办法?
期待帮助......
搜索更多相关主题的帖子: 变量  asdflj  dsllie  lsjf  
2005-5-27 21:39
ChenMo
Rank: 12Rank: 12Rank: 12
等级:版主
威望:3
帖子:478
积分:5112
注册:2004-4-8

我的想法是:建一个 KeyWord 表应该足以解决这个问题。
个人认为建表存在的好处是程序能进行扩展。
使用结构体便能胜任。

fsEditor 1.0.4(beta) by ChenMo,欢迎下载测试。
http://www.bccn.net/Soft/kfyy/c/200805/3298.html
2005-5-28 01:10
ChenMo
Rank: 12Rank: 12Rank: 12
等级:版主
威望:3
帖子:478
积分:5112
注册:2004-4-8

其实不用 switch 是有可能的,
用 strcmp 函数去检验字符串是否相等也不失为一个好办法。

fsEditor 1.0.4(beta) by ChenMo,欢迎下载测试。
http://www.bccn.net/Soft/kfyy/c/200805/3298.html
2005-5-28 01:13
ChenMo
Rank: 12Rank: 12Rank: 12
等级:版主
威望:3
帖子:478
积分:5112
注册:2004-4-8

这样吧,我把代码写上,您可以参考一下。 为了测试,我对您的题目进行了如下修改: 增加了两个字符串,且它们的值由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; }


fsEditor 1.0.4(beta) by ChenMo,欢迎下载测试。
http://www.bccn.net/Soft/kfyy/c/200805/3298.html
2005-5-28 02:25
ChenMo
Rank: 12Rank: 12Rank: 12
等级:版主
威望:3
帖子:478
积分:5112
注册:2004-4-8

注释应该算非常详尽,此处附上测试结果:

第一次测试,输入表中存在的正确字符串 "huen",运行过程:正确运行


第二次测试,输入表中存在的正确字符串 "bccn",运行过程:正确运行


第三次测试,输入表中不存在的错误字符串 "temp",运行过程:正确运行


[此贴子已经被作者于2005-5-28 2:32:43编辑过]


附件: 只有本站会员才能下载或查看附件,请您 登录注册

fsEditor 1.0.4(beta) by ChenMo,欢迎下载测试。
http://www.bccn.net/Soft/kfyy/c/200805/3298.html
2005-5-28 02:29
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2650
注册:2005-4-25

晕 哈哈 看来我意思没说清楚 先谢谢 我这就看

[此贴子已经被作者于2005-5-28 2:30:40编辑过]



欢迎加入C语言QQ群698156 我们都是菜鸟乃至新手 坚信有一天定能展翅高飞 因为有着努力的决心 衷心盼望你的到来 让我们一起进步
2005-5-28 02:30
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2650
注册:2005-4-25

其实我的意思呢是 有没有可以偷赖的办法
比如结构里的段位不能用数组表示吧 必须是
struct {
unsigned a:1;
unsigned b:1;
unsigned c:1;
unsigned d:1;};
当段位数量稍多如十几个时 去查看段位的数值 (比如输入5,想要查看第5个段位的值)
如果一个一个地判断就要写十几个case挺麻烦
所以我就在想 有没有办法不用写这么多语句 并且只需要输入a就能直接查看到a段位的值就好了

欢迎加入C语言QQ群698156 我们都是菜鸟乃至新手 坚信有一天定能展翅高飞 因为有着努力的决心 衷心盼望你的到来 让我们一起进步
2005-5-28 02:38
ChenMo
Rank: 12Rank: 12Rank: 12
等级:版主
威望:3
帖子:478
积分:5112
注册:2004-4-8

原来如此,我尚未想到什么好办法。
要定位我想多数情况下多要经过搜索的,
计算机可不如人眼,一看——就是它——不用找了,如果是的话那计算机可真神了。。。

偷懒?……
那吃饭时不勺碗不夹菜你怎么吃呢?食物如果会自动飞进嘴里那该有多好啊(好像植物人是这样“灌”的)……

fsEditor 1.0.4(beta) by ChenMo,欢迎下载测试。
http://www.bccn.net/Soft/kfyy/c/200805/3298.html
2005-5-28 03:27
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2650
注册:2005-4-25

希望偷赖 只是希望

欢迎加入C语言QQ群698156 我们都是菜鸟乃至新手 坚信有一天定能展翅高飞 因为有着努力的决心 衷心盼望你的到来 让我们一起进步
2005-5-28 03:56
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2650
注册:2005-4-25

厉害啊  注释写得这么清楚 我根本不知道如何写注释

欢迎加入C语言QQ群698156 我们都是菜鸟乃至新手 坚信有一天定能展翅高飞 因为有着努力的决心 衷心盼望你的到来 让我们一起进步
2005-5-28 04:01
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.076822 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved