回 帖 发 新 帖 刷新版面

主题:向高手请教

我编写了一个验证密码的程序,如下:
#include <stdio.h>
main()
{
    int a,i=1;
    printf("请输入密码(六位):\n");
    while(i<=3)
    {
        scanf("%d\n",&a);
        if(a=111111)
            return printf("欢迎进入!!!");
        else 
            return printf("密码有误!请输入密码!");
        i++;
    }
    if (i>3)
        printf("您无权使用本系统!");
}
可是将密码输进去为什么没有反应?请高手指教指教!!!感激不尽!谢谢!![em18]

回复列表 (共10个回复)

沙发

好像scanf那里不需要换行吧!

板凳

哦!还真是啊,谢谢哦!但为什么不换行呢?是不是所有的scanf都不需要换。再就是我不管输什么数字,都显示“欢迎进入”,这是哪里错了?谢谢!![em12]

3 楼


if(a==111111)
不是if(a=111111)
后面一个是对a赋直
你赋值成功了
if条件判断肯定正确了

4 楼

唉!我太笨了!!谢谢啊!呵呵,可是它又不循环啊!输错误值只能输一次!下面的又不执行了!这又是为什么呢?呵呵,我真的很笨!又要麻烦您!!不好意思!谢谢哦!!呵呵
[em12]

5 楼


把printf 前面的return的去掉就可以了,return直接结束了这个函数了。再试下应该可以的 
或者把return放在循环体的外面。

6 楼

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

7 楼

此段代码能基本满足你的要求:
#include <stdio.h>
main()
{
    int i;
    long a;/*由于密码是6位,因此要定义为长整型,否则出错*/
    printf("请输入密码(六位):\n");
    for(i=1;i<=3;i++)
    {
        scanf("%ld",&a);
        if(a==111111)
            {printf("欢迎进入!!!\n");
             break; } /*如果密码正确,则跳出循环并结束程序*/
        if(a!=111111)
           printf("密码有误!请重新输入密码!\n");

      }
      for(i=4;;i++)
           {
            if(a==111111)
            break;/*如果密码正确,则不执行后面的程序,如果错误,则执行*/
            else
            scanf("%ld",&a);
            printf("您无权使用本系统!\n"); /*如果密码错误,则一直执行此句*/
           }
     getch();

}

8 楼

注意,写在if判断里的break不能达到目的

9 楼


哦!很好的!谢谢!!能不能在简化一下?谢谢!!![em8]

10 楼

一般来说认证是登陆的第一步
写个简单函数来看吧

#DEFINE PASSWD 111111

int passlogin()
{
  long inpass=0;
  int i=0;
  while(i<3)
  {
    printf("\n请输入密码:");
    scanf(" %ld",&inpass);
    if(inpass==PASSWD)
    {
      printf("\n密码正确\n");
      return 0;
     }  
    printf("\n输出错误,你还有%d次机会",3-i-1);
  }
  printf("输入错误3次,登陆失败");
  return -1;
}

然后形如这样地登陆:
if(!passlogin())
  exit -1;

我来回复

您尚未登录,请登录后再回复。点此登录或注册