条件判断与循环原创
# 条件判断
C 语言把任何非零
和非空
的值假定为 true
,把零
或 null
假定为 false
。
# 三元运算
表达式1 ? 表达式2 : 表达式3 ;
当表达式1
为true
时,执行表达式2
否则执行表达式3
。
# if
if(表达式){
// 表达式值为 true 时才执行本花括号内的语句
}
# else
else
必须搭配在if
或else if
之后,放在整个结构的最后。
if(表达式){
// 表达式值为 true 时才执行本花括号内的语句
……
} else {
// 表达式为 false 时执行本括号内的语句。
……
}
# else if
在if
之后,else
之前。
if(表达式1){
// 表达式1值为 true 时才执行本花括号内的语句
……
} else if(表达式2){
// 表达式2值为 true 时才执行本花括号内的语句
……
} else if(表达式……){ // 可以无限个 else if
// 表达式……值为 true 时才执行本花括号内的语句
……
} else {
// 以上表达式均为为 false 时执行本括号内的语句。
……
}
# switch
switch(表达式) //表达式的值只能是整型或字符型
{
// 常量表达式其实就是 表达式 的值枚举。
case 常量表达式1:语句1;
case 常量表达式2:语句2;
...
case 常量表达式n-2:
case 常量表达式n-1:语句n-1; // 当多个case没有语句时将执行后面 case 的语句
case 常量表达式n:语句n;
default:语句n+1;
}
# switch选择中止
#include <stdio.h>
int main() {
int i;
do {
if(i)printf("------------------------------------------------------------\n");
printf("请选择输出模式(输入对应数字):\n");
printf("1.输出字符 2.输出字符串 \n");
printf("3.输出整型数字 4.输出浮点型数字\n");
printf("5.重新选择 6.退出程序\n");
printf("------------------------------------------------------------\n");
fflush(stdout);
scanf("%d",&i);
switch (i) {
case 1:
case 2:
printf("输出字符或字符串。\n");
break;
case 3:
case 4:
printf("输出整数或小数。\n");
break;
case 5:
printf("重新选择。\n");
continue;
default: // default 不需要 break 更不能使用 continue!!
printf("啥也没干。\n");
}
} while (i!=6);
printf("程序结束。");
return 0;
}
# 循环
# for
for ( init; condition; increment )
{
statement(s);
}
- init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
- 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
- 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
- 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。
init
和increment
可以省略,但是对应位置的;
一定不能省略!
#include <stdio.h>
int main() {
for (int i = 0; i < 5 ; ++i) {
printf("这个是第%d行;\n",i+1);
}
// 以下省略 第一个参数与第三个参数
int j=0;// 初始化第一个参数放到外面了
for (; j < 5; ) {
printf("第%d行 第二次打印;\n",j+1);
j++; // 将第三参数放到循环体里面了
}
return 0;
}
省略 第一、三参数,代码阅读性偏差。
# for循环中止
不建议用goto
终止循环
int main() {
for (int i = 1; i < 10 ; i++) {
if(i == 3){
continue;
}
if(i==7){
break;
}
printf("这个是第%d行;\n",i);
}
printf("程序结束。");
return 0;
}
更简洁的写法:
int main() {
for (int i = 1; i < 10 ; i++) {
if(i == 3)
continue;//只有一条语句时,可以不用{}
if(i==7)break;//只有一条语句时,可以不用{}
printf("这个是第%d行;\n",i);
}
printf("程序结束。");
return 0;
}
# while
只要给定的条件为真,C 语言中的 while 循环语句会重复执行while
里面的内容,记得在循环体内设定结束条件。
while(condition)
{
statement(s);
}
- statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。
- condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。
#include <stdio.h>
int main() {
int a=1;
while (a <= 5){
printf("这是第%d行;\n",a);
a++;// 设定结束条件,否则无限循环
}
return 0;
}
可以使用break``continue``goto
语句跳出循环。
# while中循环中止
int main() {
int a = 1;
Tiaochu: // goto 语句的标记,名称随便起 尽量少用goto!!!
while (a <= 10) {
if (a == 3) { // 不会打印第3行
a++;
continue;// 跳出本次循环,继续执行下次循环
}
if (a == 4) { // 不会打印第4行
a++;
goto Tiaochu;;// goto 到自定义标记处 尽量少用goto!!!
}
if (a == 7) { // 最多只打印到第6行
break;// 结束整个循环体
}
printf("这是第%d行;\n", a);
a++;
}
return 0;
}
- continue 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代
- goto 将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。
# do while
先执行do
里面的内容,然后再进行while
判断,若为ture
泽继续执行do
里面的内容,否则跳出循环。
#include <stdio.h>
int main() {
int i,j,k;
do {
printf("请输入比较的基数:\n");
fflush(stdout);
scanf("%d",&i);
printf("请输入要比较的数:\n");
fflush(stdout);
scanf("%d",&j);
if(j >= i){
printf("%d大于等于基数%d\n",j,i);
} else if (j < i && j >= i/2.0 ){
printf("%d小于%d切大于等于%.2f\n",j,i,i/2.0);
} else {
printf("%d小于%.2f\n",j,i/2.0);
}
printf("是否继续进行比较?\n");
printf("1.按任意数字键继续 2.按“0”退出\n");
fflush(stdout);
scanf("%d",&k);
} while ( k != 0);
printf("退出比较,程序结束。");
return 0;
}
# do-while的循环中止
#include <stdio.h>
int main() {
int i=1, j, k;
Tiaochu: // goto 标记点,名称随便起 尽量少用goto!!!
do {
printf("程序开始第%d次……\n",i);
j = i;
if (j == 3) {
i++;
continue;// j=3时,跳出本次循环,继续循环体
}
if (j == 5) {
i++;
goto Tiaochu;// j=3时,goto到标记处 尽量少用goto!!!
}
k = i + j;
if (k == 16) {
break;// 当K等于16时直接跳出本次循环体
}
printf("i=%d, j=%d, i+j=%d \n", i, j, k);
i++;
} while (1 < 10);// 最终结束条件
printf("程序结束。");
return 0;
}
# 选择循环中止
# break
# continue
跳过本次循环或选择,继续循环体的下一次循环。
# goto
将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。
# 无限循环
#include <stdio.h>
int main ()
{
for( ; ; )
{
printf("该循环会永远执行下去!\n");
}
return 0;
}
注意:您可以按 Ctrl + C 键终止一个无限循环
上次更新: 2022/08/20, 00:50:36