找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1204|回复: 7

[求助]一个c++题目

[复制链接]
发表于 2009-11-5 01:11:38 | 显示全部楼层 |阅读模式 IP:江苏扬州
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;

}
}
我写的代码有错误,希望有人帮我改正一下。
附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
发表于 2009-11-5 01:11:39 | 显示全部楼层 IP:江苏扬州
你有一个错误是很明显的嘛!

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] 的字符串的地址 故出现乱码, 这个我还没有解决,找个高手吧!
回复

使用道具 举报

发表于 2009-11-5 01:11:40 | 显示全部楼层 IP:江苏扬州
谢谢了
回复

使用道具 举报

发表于 2009-11-5 01:11:41 | 显示全部楼层 IP:江苏扬州
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楼的。
回复

使用道具 举报

发表于 2009-11-5 01:11:42 | 显示全部楼层 IP:江苏扬州
为什么要这样,能解释下马,谢谢
回复

使用道具 举报

发表于 2009-11-5 01:11:44 | 显示全部楼层 IP:江苏扬州
楼主能不能把正确的在发一遍啊,不太明白啊
回复

使用道具 举报

发表于 2009-11-5 01:11:45 | 显示全部楼层 IP:江苏扬州
为什么我的只输入一个用户名就美了啊:
请输入用户名:Li
用户口令:123456
Press any key to continue
就是和上面的,和楼主的答案不一样啊,好像用不到end的啊
回复

使用道具 举报

发表于 2009-11-5 01:11:47 | 显示全部楼层 IP:江苏扬州
不好意思自己解决了,原来我申明main为int
后面返回一个值,return 0;
这样就行啊。
我改成楼主的void main()就可以了啊
这是为什么啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-11-6 03:03 , Processed in 0.758124 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表