逻辑与(&&):当两个条件都为真时,整个表达式才为真。如果第一个条件为假,则整个表达式的结果已经确定为假,此时不会计算第二个条件。
逻辑或(||):当两个条件中至少有一个为真时,整个表达式就为真。只有当两个条件都为假时,整个表达式才为假。
逻辑非(!):这个运算符将一个条件的结果取反。如果条件为真,则结果为假;如果条件为假,则结果为真
相关关键字
continue语句
在C语言中用于跳过当前循环中剩余的代码,直接进入下一次循环的判断条件。它的使用可以减少不必要的计算或操作,提高程序的效率。continue语句通常与for、while和do-while循环结构一起使用,可以在循环中的任何位置使用。在使用continue时,需要注意循环的条件和循环变量的更新,以避免出现死循环或逻辑错误。
for (int i = 0; i < 10; i++) {
if (i == 7) {
continue; // 当i等于7时,跳过本次循环
}
printf("%d ", i); // i==7的时候,不打印7
}
// 输出结果:0 1 2 3 4 5 6 8 9
中断语句break关键字
是C语言中的关键字,用于跳出循环或switch语句的执行。break语句通常用于在满足某个条件时提前终止循环,或在switch语句中匹配到某个case后跳出。
for (int i = 0; i < 5; i++) {
if (i==3) {
break; // 跳出循环
}
printf("%d",i);
}
//循环外
printf("循环结束");
//输出结果:0 1 2 循环结束
switch (条件) {
case 1:
// 相应的代码
break; // 跳出switch语句
case 2:
// 相应的代码
break; // 跳出switch语句
default:
// 相应的代码
}
return关键字
在c语言中用于将函数的执行结果返回给调用函数,并终止当前函数的执行
```void peintpassage()
{
printf("使用return\n");
return;
printf("本条语句不会被执行哦\n");
5.2真题画控制流图
2010年真题下午卷
【问题1答案】程序中的逻辑判断子语句如下:
i<=k
m%i==0
i>=k+1
【问题2答案】 白盒测试用例设计方法:判定覆盖法又称为逻辑覆盖,是通过对程序逻辑结构的遍历实现程序的覆盖
【问题3答案】
控制流程图:(条件是为了便于理解,正式作图的时候不需要标)
环路复杂度V(G)=控制流线-节点+2=8-6+2=4
环路复杂度V(G)=密封区域+1=3+1=4
环路复杂度V(G)=判定节点数+1 =3+1=4 /通过代码看判断条件
注:环路复杂度任选一种答题即可
总结
根据控制流图计算复杂度,如果没有代码,只有控制流图的情况下,尽可能使用【控制流线-节点+2】的方式计算V(G),这种情况一般会出现在选择题中,如果有代码没有图,可以使用【判定点+1】的方式计算V(G)
画控制流图正确与否可以通过计算3种复杂度计算结果相同来校验图是否画正确
本题的代码中没有给定具体的节点,那么我们可以根据判定节点画图,重点必须包含本题代码的所有判定节点路径
2011年真题下午卷
【问题1答案】
【问题2答案】
解析:本题给出了画控制流图的节点数,具体可见代码中//数字,本题代码中给出了节点数为12个,这种题给了节点,那么我们做图的时候节点中需要有数字标明是几号节点
图不需要跟标准答案一致,只要保证节点和控制流线链接正确即可
或者
复杂度V(G)=6
总结
画图技巧:分析每个判定节点可能执行的路径(为真的路径、为假的路径)有哪些,只要每个节点可能执行的路径全部分析正确,控制流图就掌握了80%,另外20%,细心一定要细心,不要把线连错啦;不要把各条件的括号看错,不要画线不带箭头,导致失分(这些都是我画图的时候出现的错误)
画图尽可能保证当前节点画完,在接着画下一个节点,这样不容易出错;另外画完后记得多检查下
【问题3答案】
构造一个6个字符构成的字符串(设置x,y,z,u,v,w6个字符),使得每个字符覆盖一条基本路径。其中,x='r', y='f', z∈['0','9'], u<'0', v>'9'并且v!='f',w为任意,这6个字符可以任意排列。例如:mode="r0faa"
参考文档
https://blog.csdn.net/weixin_64021180/article/details/133999576