【问题标题】:How do I create a flowchart with a getch function?如何使用 getch 函数创建流程图?
【发布时间】:2021-11-06 21:33:25
【问题描述】:

我的程序是用 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;
    }
};

【问题讨论】:

  • 什么的流程图?目前尚不清楚期望的结果是什么
  • 您可能想要开始。向我们展示您的尝试并告诉我们您在哪里绊倒。请edit你的问题,不要在cmets中发布链接。
  • 请选择一种语言并仅添加相关标签。 C 和 C++ 是非常不同的语言。
  • 我想也许你的老师想让你(而不是写代码(用任何语言))这样的东西? sipoc.info/wp-content/uploads/2017/01/…
  • 由于您的凭据处理似乎与某些流程图无关,当您添加对流程图的尝试时,您可能会从问题中删除该部分。尽管如此,您的代码中有 2 个错误:1) password 永远无法保存正确的密码,因为它只能保存 11 个字符 + 0 个终止符。 2)您从不关心检查输入的允许长度。您应该确保名称和密码限制在缓冲区的长度内。

标签: c diagram flowchart


【解决方案1】:

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

按顺序执行的操作显示在用箭头链接的方框中。

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

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

  • while (condition) { /*do something*/ } 看起来像:

  • do { /*do something*/ } while (condition); 看起来像:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    相关资源
    最近更新 更多