A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© carshoel 中级黑马   /  2015-6-29 21:02  /  794 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

*
写一个程序,设定要运行某个代码前先要输入密码。共3次输入机会。
*/
int at()
{
        int i=2;
        char *s="yw123";//定义登录密码
        char a[100]={0};
        printf("输入密码:\n");
        gets(a);//接收用户输入的密码
        while(strcmp(s,a))//循环条件:当判断密码相同返回0,循环终止
        {
                if(!i)//当i=0时
                {
                        printf("错误已达3次,按任意键退出:\n");
                        gets(a);//避免程序“闪退”,方便用户观看程序运行结果
                        return 0;//密码未通过返回 0
                }else{
                        printf("密码错误,还剩%d次机会:\n",i);
                        i--;//计数器,统计密码输入错误次数
                }
                memset(a,0,sizeof(a));
                gets(a);//接收用户输入的密码
                if(!strcmp(s,a))
                {
                        printf("密码通过\n");
                        return 1;//密码通过,返回 1
                }
        }
       
}

8 个回复

倒序浏览
还可以啊,找大神给你优化下
回复 使用道具 举报
张国繁 发表于 2015-6-29 21:09
还可以啊,找大神给你优化下

这不是正在找嘛,麻烦你帮给优化下撒:lol
回复 使用道具 举报
沙睿 来自手机 中级黑马 2015-6-29 21:53:54
板凳
gets 可用别的代替,因为这个方法不安全..
回复 使用道具 举报
已经不错了
回复 使用道具 举报
最好还是不要用gets(),这个程序应该会报错的,因为系统不知道你要接受多少字符,数组的大小你这样声明是一个定值。  这个程序对于初学者来说可以说准确的应用了一些现成的函数,写项目的时候如果能准确的想到这些函数就不错了!我反正有时候经常忘。不过可以给你一个建议,函数的命名都是很直白的,一般看了函数名就知道什么意思了~ 有助于你的记忆。  不过这些封装好的函数也不是想有就有的,比如说max比较大小挺简单吧,但是math.h里面还真没写~好好加油吧~
回复 使用道具 举报

谢谢建议,gets改为fgets函数,超过的字符串会记入下次输入的值,从而浪费机会
回复 使用道具 举报
沙睿 发表于 2015-6-29 21:53
gets 可用别的代替,因为这个方法不安全..

恩,暂没想到哦
回复 使用道具 举报
大神一般都可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马