修仙之条件语句与循环语句
- 一 、条件语句
- 1.算术运算符,逻辑运算符
- a. 算术运算符
- b.逻辑运算符
- 2.if语句
- 3.switch语句
- 二、循环语句
- 1.while语句
- 2.do while语句
- 3.for 语句
- 总结
一 、条件语句
1.算术运算符,逻辑运算符
a. 算术运算符
在写代码时候,一定会涉及到计算。
C语言中为了方便运算提供了一系列操作符,其中有一组操作符叫:算术操作符。分别是: + - * / % 等等,叫做双目操作符,这些较为简单,我这里就暂且不提。
我主要想介绍是单目操作符,如++,–等等;如图所示:
b.逻辑运算符
逻辑运算符:三个运算符(!、&& 和 ||),又叫布尔运算符,它们是对 true/false 值进行运算。其中第一个,!执行布尔值 NOT 操作。它是一个一元运算符,如果其操作数为 false,则计算结果为 true,如果操作数为 true,则计算结果为 false。
&& 和 ||运算符分别执行逻辑 and和逻辑 or 运算。当且仅当两个值都为真时,两个值的逻辑 AND 为真,否则为假。当且仅当其中任何一个值为真时,两个值的逻辑 or 为真,否则为假。
与我们之前看到的运算符不同,&& 和 ||可能只从一个论点中知道他们的答案。在 &&, 的情况下,如果任一操作数为 false,则结果为 false,而不管其他值如何。与 ||类似,如果任一操作数为 true,则无论其他值如何,结果均为 true。C 以计算 && 和 || 的方式利用了这一事实通过使它们短路,它们可能只计算一个操作数。具体来说,第一个操作数的计算结果始终为一个值;但是,如果该操作数的值决定了整个 && 或 || 的结果—false 表示 && 或 true 表示 ||- 则根本不计算第二个操作数
2.if语句
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
else;
printf("%d 是偶数\n", num);
return 0;
}
当执行箭头到达 if 语句时,计算条件表达式。计算此表达式的过程与计算任何其他表达式一样。如果结果为 true,则立即在“if”块内移动执行箭头,然后像往常一样继续执行语句。当执行到达结束“if”块的右大括号时,跳过 else 块,将执行箭头紧接在“else”块的右大括号之后,然后从那里继续执行语句。
如果条件表达式的结果为 false,则应跳过“if”块并执行“else”块。将执行箭头移动到“else”块的开头,然后从那里继续执行语句。当您的执行箭头到达结束“else”块的近大括号时,只需将其移过该大括号(这没有效果,它只是表示块的结束)并继续正常执行语句。
C 允许 if 没有 else,这相当于一个空的 “else” 块(就好像程序员写了 else {})。如果你执行一个没有其他的if,那么只需想象一个空的“else”块。如果条件表达式的计算结果为 true,则应如前所述执行“if”块,但是,没有“else”块可以跳过。
3.switch语句
#include<stdio.h>
int main()
{
int n, x;
int g( x, n);
switch (x + n)
{
case 6:
x = x + 1;
case 0:
n = n - 1;
break;//表示程序结束。
case 14:
return n - x;
default://表示如果g()没有符合的结果,则进入default的进程
x = n;
break;
}
return x * n;
}
int a = g(10, 4);
int b = g(a, 2);
int c = g(9, b);
return 0;
}
当运行到达 switch 语句时,选择表达式(在关键字 switch 后面的括号中)被计算为一个值。然后,此值用于确定要输入的情况。然后,将跳转到相应的事例,即其标签(紧跟在关键字大小写之后的常量)与选择表达式的值匹配的事例。如果没有标签匹配,则将跳转到默认大小写(如果有),如果没有,则跳转到开关的右大括号。
一旦运行跳转到特定情况,执行将照常继续,直到遇到关键字中断。当执行箭头到达 break 关键字时,它会跳转到结束 switch 语句的右大括号。请注意,到达另一个案例标签不会结束当前案例。除非执行箭头遇到中断,否则执行会从一个语句继续到下一个语句。当执行箭头像这样从一个案例传递到下一个案例时,称为“落入”下一个案例。
例如,如果我们执行上图中的代码,并得到 switch 语句,其中 x 的值为10 ,n 的值为 4,那么我们将首先计算选择表达式 (x - n),并得到值 6。然后,执行箭头将跳转到情况 6:,并在其后开始执行语句。我们将执行 x = 11;。然后,我们将落在下一个案例标签中——我们的执行箭头将越过它进入下一个案例(标签本身没有效果)。然后我们将执行 n = 3;。接下来,我们将执行中断;如果没有可以得到的值,就运行default的代码进程中。
二、循环语句
1.while语句
#include<stdio.h>
int main()
{
int x , y;
f (x, y)
{
while (x < y)
{
printf("%d ", y - x);
x = x + 1;
y = y - 1;
}
}
return 0;
}
关键字 while 后跟括号中的表达式。与 if 语句非常相似,计算此表达式以确定是否输入紧跟其后面的代码块,称为循环主体。如果条件表达式的计算结果为 true,则执行箭头将在循环主体内移动,其语句将正常执行。while 循环与 if 语句的不同之处在于,当执行箭头到达右大括号时会发生什么。在 while 循环的情况下,它会跳到循环的顶部,紧挨着 while 关键字。然后重新计算条件表达式,如果它仍然为 true,则执行将重新进入循环体。如果条件表达式的计算结果为 false,则执行箭头将立即跳到循环体的右大括号之后,并从那里继续。
2.do while语句
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}
与在循环顶部检查其条件表达式的 while 循环不同,do-while 循环在执行正文后在循环底部检查其条件表达式。虽然这种区分似乎是人为的(无论哪种方式,在迭代之间检查条件),但它在循环开始时很重要。如果条件最初为 false,while 循环可能会执行其主体零次,跳过整个循环。相比之下,do-while 循环保证至少执行其主体一次,因为它在检查条件之前执行循环主体。
do-while 循环的执行首先进入循环体并执行其中包含的所有语句。当执行箭头到达循环体末尾的 while 时,将计算其条件表达式。如果表达式的计算结果为 true,则执行箭头将跳回循环正文的开头。如果表达式的计算结果为 false,则它会移动到循环的末尾,并在循环之后的下一个语句中继续执行。
3.for 语句
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
for 关键字后面跟着括号内的三个部分,用分号分隔。第一个是“初始化语句”。在第一次检查循环的状况之前,它发生一次。第二部分不是语句(即使后面跟着分号),而是循环的条件表达式。第三个语句是“增加语句”
首先执行表达式1 初始化循环变量,接下来就是执行表达式2 的判断部分, 表达式2 的结果如果==0,则循环结束; 表达式2 的结果如果!=0则执行循环语句,循环语句执行完后,再去执行表 达式3 ,调整循环变量,然后再去 表达式2 的地方执行判断, 表达式2 的结果是否为0,决定循环是否继续。
整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。
注意,for语句的初始值要进入代码,不要直接运用到表达式3。本人有此错误的经历!!!
总结
今天,我们学习了条件语句与循环语句。懂得了while与do while语句的区别与while与for语句之间相似性。这也为我们后面学习其他的C语言知识,奠定基础。
旅途还在继续,来日方长!