c程序允许用户更改已设置4位数的引脚

时间:2014-11-12 14:50:00

标签: c

  1. 输入PIN码并验证是否正确
  2. 更改PIN码
  3. 显示输入PIN的次数(i)成功(ii) 错误地
  4. 退出计划
  5. 我遇到问题选项2在上面的问题中它应该执行以下操作: 如果他们选择选项2,则应允许他们更改PIN。程序应首先验证原始引脚。当他们输入新的PIN时,您的程序必须通过询问来验证新的PIN 客户重新输入此新PIN。这将验证输入的新PIN 是正确的,没有错误。如果有任何差异和 验证失败,您的程序必须显示相应的错误消息 并且原始PIN应保持不变。

    当用户输入新的引脚时,我的问题就出现了,1。引脚必须是4位数2.如果用户在输入新引脚时输入引脚错误,原始引脚必须保持不变。如果他们输入新的引脚,那么他们的新引脚必须更改为该引脚。我已经发布了目前为止选项2的代码。

    如果我的问题不明确,请向我提问。

    case 2:
          {
               //ask user to enter their current pin
               printf("Please enter your current pin \n");
               scanf("%d",&current_pin);
    
    
               if(current_pin != 1234)
               {
                    //if pin entered is not the same as 1234-print error
                    printf("Incorrect pin \n");
                    unsuccessful ++;
                    break;
               }//end if    
    
               else
                {
                    successful++; 
    
                    //ask user to enter new pin
                    printf("Please enter your new pin: \n");
                    scanf("%d",&new_pin);           
    
                } //end else
    
                //set new pin as the current pin
                current_pin = new_pin:      
    
                //check if pin is 4 digits long
                if(current_pin>999 && current_pin<10000)
                {
                    //ask user to re enter their new pin
                    printf("Please re-enter your new pin: \n");
                    scanf("%d",&new_pin);
    
                    printf("Your new pin is %d", new_pin);
    
                    //set new pin as the current pin
                    current_pin = new_pin:  
                }   
    
               else
                {
                    printf("Incorrect entry- pin must be 4 digits and cannot start with a 0");                          
                }
    
                       new_pin=current_pin;
    
                  break;
                }
    

    我知道这段代码非常好,希望你能理解它。我知道我想做什么,但我无法做到。

    **** **** EDIT 好吧,我现在明白我让你们有些困惑了。也许我应该改写我的问题。并将其细分为几个部分。如果更容易,我可以发布该程序的完整代码。

    1. 我希望用户输入当前的引脚,如果程序第一次运行,则会为其分配值1234.如果用户已完成此过程,则当前引脚将成为引脚已将其更改为。

    2. 引脚新引脚必须为4位

    3. 这可能会推动它,但如果用户在我的程序中输入一个字母,它将进入一个无限循环,是否有一个简单的方法。

3 个答案:

答案 0 :(得分:1)

这有点奇怪:

   printf("Please enter your current pin \n");
   scanf("%d",&current_pin);
   if(current_pin != 1234)
   {

current_pin是存储用户引脚的值吗?如果是这样,当您执行scanf时,您将更改它。创建一个新变量来存储结果。像这样:

   int value;
   scanf("%d",&value);
   if(current_pin != value)
   {

你似乎做了很多这样的事情:

current_pin = new_pin:

我会承认我对结肠是否是拼写错误或做一些我不理解的事情感到有些困惑。

但是,在检查新引脚的值之前,您不应该执行此分配

//check if pin is 4 digits long
if(new_pin>999 && new_pin<10000)
{
    int verified;
    //ask user to re enter their new pin
    printf("Please re-enter your new pin: \n");
    scanf("%d",&verified);

    if(verified == new_pin))
    {
        printf("Your new pin is %d", new_pin);

        //set new pin as the current pin
        current_pin = new_pin; // <--- This is the only place you assign to current_pin 
    }
    else
    {
        //tell the user there was an error
    }
}

答案 1 :(得分:0)

在你的第一个if语句中

if (current_pin != 1234)

您将current_pin与常量值1234进行比较 尝试使用变量而不是1234常量。

答案 2 :(得分:0)

您从未检查重新输入的newpin是否与newpin相同。