switch循环的ns图,以及调用函数的ns图如何去画呢?

switch循环的ns图,以及调用函数的ns图如何去画呢?

img


希望得到指点😭

switch 不是循环,是开关语句。case 匹配到 switch() 括号里表达式的值,就会执行它后面的逻辑,遇到 break 就退出。
你输入1,它就执行 case 1 后面的 f(),输出“按书名查找”,然后退出。
一般使用 microsoft visio 这个工具画图。
也有网站在线画图的,你可以试试这个:https://www.edrawsoft.cn/flowchart/n-stu

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7618840
  • 这篇博客你也可以参考下:利用switch语句编写一个程序,把用数字表示的成绩转化为字母表示的等级。连续查询50次结束
  • 除此之外, 这篇博客: switch的简单举例中的 switch的简单举例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 您还可以看一下 高升老师的快速入门Go语言(转行Go开发必修课程)课程中的 switch分支语句写法小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对优化后的问题,要求画出使用switch循环和调用函数时的网络结构图,具体步骤如下:

    1. 首先明确函数的作用是判断年份是否为闰年,接收一个年份作为参数,返回一个整型值。
    int judgeyear(int year){
        int day=28;
        if((year%4==0 && year%100!=0) || year % 400 == 0){
            day=29;
        }
        return day;
    }
    
    1. 接下来看主函数中的switch语句,根据输入的月份计算天数,并将结果存入sequence变量中。
    switch(mouth){
            case 12:
            case 11:
            sequence+=+(mouth>11)*30;
            case 10:
            sequence+=+(mouth>10)*31;
            case 9:
            sequence+=+(mouth>9)*31;
            case 8:
            sequence+=+(mouth>8)*30;
            case 7:
            sequence+=+(mouth>7)*31;
            case 6:
            sequence+=+(mouth>6)*30;
            case 5:
            sequence+=+(mouth>5)*31;
            case 4:
            sequence+=+(mouth>4)*30;
            case 3:
            sequence+=+(mouth>3)*31;
            case 2:
            sequence+=+(mouth>2)*judgeyear(year);
            case 1:
            sequence+=+(mouth>1)*31;
            sequence +=day;
    }
    

    这里使用了穿透特性,即在没有break的情况下,程序会自动执行后续case的代码。根据月份的大小依次累加天数,注意二月的天数需要调用judgeyear函数来判断。 3. 继续观察主函数的结构,发现输入的是年月日三个整数,所以需要在主函数中定义并初始化这三个变量。

    int sequence=0;
    int year,mouth,day;
    scanf("%d%*c%d%*c%d",&year,&mouth,&day);
    
    1. 最后将sequence变量输出即可,表示该日期在一年中是第几天。
    printf("%d",sequence);
    

    至此,整个程序的网络结构图就清晰地展现出来了。需要注意的是,在调用函数时需要先定义并初始化相应的参数,在主函数中顺序执行语句,得出最终结果。在使用switch语句时也需要注意穿透特性的影响。