C 判断
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
下面是大多数编程语言中典型的判断结构的一般形式:
判断语句
C++ 编程语言提供了以下类型的判断语句。
语句 | 描述 |
---|---|
if 语句 | 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 |
if...else 语句 | 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。 |
嵌套 if 语句 | 您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 |
switch 语句 | 一个 switch 语句允许测试一个变量等于多个值时的情况。 |
嵌套 switch 语句 | 您可以在一个 switch 语句内使用另一个 switch 语句。 |
【示例】嵌套if语句
1 #include <iostream> 2 using namespace std; 3 4 int main () 5 { 6 // 局部变量声明 7 int a = 100; 8 int b = 200; 9 10 // 检查布尔条件 11 if( a == 100 ) 12 { 13 // 如果条件为真,则检查下面的条件 14 if( b == 200 ) 15 { 16 // 如果条件为真,则输出下面的语句 17 cout << "a 的值是 100,且 b 的值是 200" << endl; 18 } 19 } 20 cout << "a 的准确值是 " << a << endl; 21 cout << "b 的准确值是 " << b << endl; 22 23 return 0; 24 }
【示例】switch嵌套
1 #include <stdio.h> 2 3 int main () 4 { 5 /* 局部变量定义 */ 6 int a = 100; 7 int b = 200; 8 9 switch(a) { 10 case 100: 11 printf("这是外部 switch 的一部分 "); 12 switch(b) { 13 case 200: 14 printf("这是内部 switch 的一部分 "); 15 } 16 } 17 printf("a 的准确值是 %d ", a ); 18 printf("b 的准确值是 %d ", b ); 19 20 return 0; 21 }
? : 运算符(三元运算符)
三元运算符的一般形式如下:
1 Exp1 ? Exp2 : Exp3;
其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。
? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。
1 #include<stdio.h> 2 3 int main() 4 { 5 int num; 6 7 printf("输入一个数字 : "); 8 scanf("%d",&num); 9 10 (num%2==0)?printf("偶数"):printf("奇数"); 11 }
C 循环
有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
编程语言提供了更为复杂执行路径的多种控制结构。
循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图:
循环类型
C 语言提供了以下几种循环类型。点击链接查看每个类型的细节。
循环类型 | 描述 |
---|---|
while 循环 | 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。 |
for 循环 | 多次执行一个语句序列,简化管理循环变量的代码。 |
do...while 循环 | 除了它是在循环主体结尾测试条件外,其他与 while 语句类似。 |
嵌套循环 | 您可以在 while、for 或 do..while 循环内使用一个或多个循环。 |
【示例】for循环嵌套
1 #include <stdio.h> 2 3 int main () 4 { 5 /* 局部变量定义 */ 6 int i, j; 7 8 for(i=2; i<100; i++) { 9 for(j=2; j <= (i/j); j++) 10 if(!(i%j)) break; // 如果找到,则不是质数 11 if(j > (i/j)) printf("%d 是质数 ", i); 12 } 13 14 return 0; 15 }
【示例】while循环嵌套
1 #include <stdio.h> 2 int main() 3 { 4 int i=1,j; 5 while (i <= 5) 6 { 7 j=1; 8 while (j <= i ) 9 { 10 printf("%d ",j); 11 j++; 12 } 13 printf(" "); 14 i++; 15 } 16 return 0; 17 }
【示例】do-while循环嵌套
1 #include <stdio.h> 2 int main() 3 { 4 int i=1,j; 5 do 6 { 7 j=1; 8 do 9 { 10 printf("*"); 11 j++; 12 }while(j <= i); 13 i++; 14 printf(" "); 15 }while(i <= 5); 16 return 0; 17 }
循环控制语句
循环控制语句改变你代码的执行顺序。通过它你可以实现代码的跳转。
C 提供了下列的循环控制语句。点击链接查看每个语句的细节。
控制语句 | 描述 |
---|---|
break 语句 | 终止循环或 switch 语句,程序流将继续执行紧接着循环或 switch 的下一条语句。 |
continue 语句 | 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。 |
goto 语句 | 将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。 |
【示例】break语句
1 #include <stdio.h> 2 3 int main () 4 { 5 /* 局部变量定义 */ 6 int a = 10; 7 8 /* while 循环执行 */ 9 while( a < 20 ) 10 { 11 printf("a 的值: %d ", a); 12 a++; 13 if( a > 15) 14 { 15 /* 使用 break 语句终止循环 */ 16 break; 17 } 18 } 19 20 return 0; 21 }
【示例】continue语句
1 #include <stdio.h> 2 3 int main () 4 { 5 /* 局部变量定义 */ 6 int a = 10; 7 8 /* do 循环执行 */ 9 do 10 { 11 if( a == 15) 12 { 13 /* 跳过迭代 */ 14 a = a + 1; 15 continue; 16 } 17 printf("a 的值: %d ", a); 18 a++; 19 20 }while( a < 20 ); 21 22 return 0; 23 }
goto语句一般不会建议程序员使用,大家了解有这条语句就好,这里就展示示例了。
无限循环
如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。
1 #include <stdio.h> 2 3 int main () 4 { 5 for( ; ; ) 6 { 7 printf("该循环会永远执行下去! "); 8 } 9 return 0; 10 }
当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C 程序员偏向于使用 for(;;) 结构来表示一个无限循环。(当然你也可以使用while、do-while来构建无限循环)
注意:您可以按 Ctrl + C 键终止一个无限循环。