| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 836 人关注过本帖
标题:[求助]一个c++题目
只看楼主 加入收藏
xuyuke
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-4-1
收藏
 问题点数:0 回复次数:7 
[求助]一个c++题目

5. 编程练习:在已设置好若干个用户名/口令后,通过输入用户名,查找对应的口令,连续执行这一过程直到用户输入结束标记“end”为止。
1). 提示:设计一个User类,数据成员有user和pass两个字符数组,存储用户名和口令,另有一个构造函数和getUser(),getUser()两个成员函数,用于获取用户名和口令。
2). 提示:在main中设计一个对象数组ua,当用户输入一用户名后,在us中查找,找到后输出对应的口令,找不到时输出相应能够的提示信息。

图片附件: 游客没有浏览图片的权限,请 登录注册

#include <iostream.h>
#include <stdio.h>
#include <string.h>
class User
{
public:
User(){}
~User(){}
User(char *a,char *b){strcpy(user,a);strcpy(pass,b);}
char getUser(){return user[30];}
char getpass(){return pass[30];}
private:
char user[30];
char pass[30];
};
void main()
{
int i,j;
char str[30],str1[]="end";
User ua[]={User("Li","123456"),User("Wang","654321"),
User("chen","213412"),User("Xu","878616"),
User("Ma","876123"),User("Song","666666")};
for(i=0;;i++)
{
cout <<"请输入用户名";
cin>>str;
if(strcmp(str,str1)==0) break;
else if (strcmp(str,ua[i].getUser)==0)
cout <<"用户口令:" << ua[i].getpass <<endl;
else cout<<"用户名不存在"<<endl;

}
}
我写的代码有错误,希望有人帮我改正一下。

搜索更多相关主题的帖子: 口令 用户名 getUser 函数 
2007-04-13 13:12
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
收藏
得分:0 

你有一个错误是很明显的嘛!

else if (strcmp(str,ua[i].getUser)==0)
cout <<"用户口令:" << ua[i].getpass <<endl;

红字部分 "ua[i].getUser" "ua[i].getpass"

你在这里调用了两个成员函数,用法应该是这样的" ua[i].getpass();
 
你少用了一对括弧"()".

修改这两处后,程序就能运行了,但是还是有BUG,那就是字符串不能用成员函数 getUser() 与 getpass() 得到 
 
得到的只是 user[30] 与 pass[30] 的字符串的地址 故出现乱码, 这个我还没有解决,找个高手吧!


真理往往掌握在少数人手中,可现实却是少数服从多数!
2007-04-13 15:28
xuyuke
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-4-1
收藏
得分:0 

谢谢了


2007-04-13 16:39
xuyuke
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-4-1
收藏
得分:0 
char getUser(){return user[30];}
char getpass(){return pass[30];}
这里改成
char *getUser(){return user;}
char *getpass(){return pass;}



if(strcmp(str,str1)==0) break;
else if (strcmp(str,ua[i].getUser)==0)
这里else去掉。
终于可以了。谢谢上面2楼的。

2007-04-13 16:45
condor888
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-1-13
收藏
得分:0 

为什么要这样,能解释下马,谢谢


2007-04-16 19:49
condor888
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-1-13
收藏
得分:0 

楼主能不能把正确的在发一遍啊,不太明白啊


2007-04-16 19:54
condor888
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-1-13
收藏
得分:0 
为什么我的只输入一个用户名就美了啊:
请输入用户名:Li
用户口令:123456
Press any key to continue
就是和上面的,和楼主的答案不一样啊,好像用不到end的啊

2007-04-16 19:58
condor888
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-1-13
收藏
得分:0 
不好意思自己解决了,原来我申明main为int
后面返回一个值,return 0;
这样就行啊。
我改成楼主的void main()就可以了啊
这是为什么啊?

2007-04-16 20:02
快速回复:[求助]一个c++题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017461 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved