首页 > 解决方案 > 如何使用 getch 函数创建流程图?

问题描述

我的程序是用 C 语言编写的,它基本上有一个 I/O 函数来检查为用户名和密码输入的凭据是否正确(为此我使用了一个简单的 if-else 语句)。

我必须在程序中添加一个流程图,我似乎无法理解我将如何做到这一点。如何在流程图中将do-while循环与getch()函数和if-语句结合起来?else我有一个getch()用“*”/星号屏蔽密码的功能。

#include <stdio.h>
#include <conio.h>
  
int main()
{
    char username[15];
    char password[12];
    int i=0;
     
    printf("\nUsername: ");
    scanf("%s",username);
  
    printf("\nPassword: ");
    do
    {
        password[i]=getch();
        printf("*");
        i++;
    }
    while(password[i-1]!='\r');
    password[i-1]='\0';
     
    if( strcmp ( username,"usernamesample" ) == 0 && strcmp ( password,"password1234" ) == 0 )
    {
        printf("\nVALID!");
    }
    else
    {  
    puts("\nINVALID!"); 
      
    return 0;
    }
};

标签: cdiagramflowchart

解决方案


流程图记录了程序中的控制流程。挑战在于处理这种图表所知道的非常基本的控制流操作。

依次进行的操作显示在用箭头链接的框中。

条件流,例如if (condition) { /*then do*/ } else { /*else do/* }使用菱形:

在此处输入图像描述

没有标准化的循环符号。所以你需要使用条件来显示循环:

  • while (condition) { /*do something*/ }好像:

    在此处输入图像描述

  • do { /*do something*/ } while (condition);好像:

    在此处输入图像描述

  • 最后,getch()是用户输入:

    在此处输入图像描述

C 条件可以调用函数,例如getch()在评估条件时执行用户输入。流程图不允许这样做;您需要分解流程并在条件菱形之前添加额外的符号。然后,while循环要求您不仅在菱形之前循环,而且在这些额外符号之前循环,以便正确执行条件评估的准备工作。


推荐阅读