NIKO0BUT 发表于 2017-8-30 12:01:56

如何在输入正确后不执行最后的printf()语句?

#include <stdio.h>

int main()
{

    int password,writevalue;
    int i;

    printf("请设置密码:");
    scanf("%d", &password);


    for(i=1;i<=3;i++)
    {
      printf("请输入密码:");
      scanf("%d", &writevalue);
      if (password == writevalue)
      {
            printf("欢迎进入!");
      }
    }
    printf("输入错误次数过多!");

    return 0;
}

kikyoulin 发表于 2017-8-30 12:17:03

你好 我在GCC下编译正常运行

请设置密码:123456
请输入密码:123456
欢迎进入!请输入密码:0
请输入密码:0
输入错误次数过多!
Process returned 0 (0x0)   execution time : 7.309 s
Press any key to continue.

楼主如果用的是VC,建议调试下。

NIKO0BUT 发表于 2017-8-30 12:37:09

kikyoulin 发表于 2017-8-30 12:17
你好 我在GCC下编译正常运行

请设置密码:123456


但是输入正确后就应该停止啊,不能再输入密码了。

3-3 发表于 2017-8-30 15:18:23

在你的基础上修改,本地运行可以
#include <stdio.h>

int main()
{

    int password,writevalue;
    int i,flog;

        flog = 0;

    printf("请设置密码:");
    scanf("%d", &password);


    for(i=1;i<=3;i++)
    {
      printf("请输入密码:");
      scanf("%d", &writevalue);
      if (password == writevalue)
      {
            printf("欢迎进入!");
                        flog = 1;
                        break;
      }
    }

        if ( 0 == flog )
        {
          printf("输入错误次数过多!");
        }

    return 0;
}

zj_song 发表于 2017-8-30 18:46:03

#include <stdio.h>

void InputError(int iErrorPwd);
void InputCorrect(int iTryTimes);

int main()
{

    int password,writevalue;
    int i;

    printf("请设置密码:");
    scanf("%d", &password);


    for(i=1;i<=3;i++)
    {
      printf("请输入密码:");
      scanf("%d", &writevalue);
      if (password == writevalue)
      {
            InputCorrect(i);
      }
      if (i>=3)
      {
                  InputError(password);
      }
                }
       

    return 0;
}

void InputError(int iPwd)
{
        printf("输入错误次数过多!");   
/////////////输入错误处理语句;
}

void InputCorrect(int iTryTimes)
{
        printf("欢迎进入!");
/////////////输入正确处理语句;       
}

NIKO0BUT 发表于 2017-8-30 21:31:51

解决了,加了个goto语句#include <stdio.h>

int main()
{

    int password,writevalue;
    int i;

    printf("请设置密码:");
    scanf("%d", &password);


    for(i=1;i<=3;i++)
    {
      printf("请输入密码:");
      scanf("%d", &writevalue);
      if (password == writevalue)
      {
            printf("欢迎进入!");
            goto A;
      }
    }
    printf("输入错误次数过多!");

A:

    return 0;
}

kikyoulin 发表于 2017-8-31 14:33:10

哈哈,昨天我题目没看懂就随意回答了。抱歉。现在明白你的意思了。
你的解决方法可以的,我给出另一个思路,通过设置一个flag变量来判定是否密码正确。
int flag = 0;//等于0的时候就是假,密码错误的情况
在密码正确的情况下,flag = 1;将它设置成1,然后用break;语句跳出循环即可。

而循环后是否输出,可以通过if(flag)的分支语句来决定。

其实flag可以当成是bool类型。

lizechen 发表于 2017-8-31 16:58:13

这种带行号的代码是怎么复制粘贴发到帖子上的啊?
页: [1]
查看完整版本: 如何在输入正确后不执行最后的printf()语句?