switch循环的ns图,以及调用函数的ns图如何去画呢?
switch 不是循环,是开关语句。case 匹配到 switch() 括号里表达式的值,就会执行它后面的逻辑,遇到 break 就退出。
你输入1,它就执行 case 1 后面的 f(),输出“按书名查找”,然后退出。
一般使用 microsoft visio 这个工具画图。
也有网站在线画图的,你可以试试这个:https://www.edrawsoft.cn/flowchart/n-stu
针对优化后的问题,要求画出使用switch循环和调用函数时的网络结构图,具体步骤如下:
int judgeyear(int year){
int day=28;
if((year%4==0 && year%100!=0) || year % 400 == 0){
day=29;
}
return day;
}
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);
printf("%d",sequence);
至此,整个程序的网络结构图就清晰地展现出来了。需要注意的是,在调用函数时需要先定义并初始化相应的参数,在主函数中顺序执行语句,得出最终结果。在使用switch语句时也需要注意穿透特性的影响。