目录:
一.选择语句:
1.if else语句
2.switch语句(附break的使用)
二.循环语句:
1.for循环
2.while循环
3.do while循环
4.break和continue在循环语句中的使用
(一)选择语句
1.if 语句的基本表达为:
if(表达式1)
语句1;
理解起来就是当表达式1为真时,程序执行语句1,否则执行语句2
我们用代码来理解一下:
#includeint main() {int i = 2;
if (i=1)
printf("hello");
return 0;
}
按照我们的理解
,
i
赋值为
2
,
但是
i
f
的表达式为
i
=
1
\color{Red}{按照我们的理解,i赋值为2,但是if的表达式为i=1}
按照我们的理解,i赋值为2,但是if的表达式为i=1
所以说这个程序应该什么都不打印,结果真的是这样吗?我们看看结果:
这里居然把hello打印出来了,为什么呢?是这样的,i=1本身为真了,所以就打印hello了.
在if语句里面表达式应该用赋值运算符来看,而不应该用关系运算符(点击就可以看)
我们尽量写成
i
f
(
1
=
=
i
)
,
因为当我们写成
i
f
(
1
=
i
)
时
\color{Purple}{我们尽量写成if(1==i),因为当我们写成if(1=i)时}
我们尽量写成if(1==i),因为当我们写成if(1=i)时
这个语句编译器会报错
,
因为
i
怎么能赋值给
1
呢
?
\color{Purple}{这个语句编译器会报错,因为i怎么能赋值给1呢?}
这个语句编译器会报错,因为i怎么能赋值给1呢?
所以我们应该写成下面这样:
#includeint main() {int i = 2;
if (1==i)
printf("hello");
return 0;
}
这样就什么都不会打印,如何写成if(2==i),就会打印hello
1.1 if语句还有多语句的:
if(表达式1) if(表达式1)
语句1; 语句1;
else else if(表达式2)
语句2; 语句2;
else
语句3;
当一个分支语句有多个if else语句时,if 总是和最近else匹配
来个栗子:
#includeint main() {int m = 1;
int n = 2;
if (2==m)//为假了,不会执行后面的if else语句了,所以什么都不会打印
if (1==n)
printf("hello");
else
printf("world");
return 0;
}
2. s w i t c h 语句 \color{red}{switch语句} switch语句的基本表达式为:
switch(整型表达式)
{
case 整型常量表达式:
语句;
case 整型常量表达式:
语句;
~~~
}
接下来我们用代码来感受一下switch的使用:
#includeint main() {int month = 0;
scanf("%d", &month);
switch (month)
{case 1://记住case后面的为整型常量的表达式,如果写成1.0这种就不行
printf("一月\n");
case 2:
printf("二月\n");
case 3:
printf("三月\n");
case 4:
printf("四月\n");
case 5:
printf("五月\n");
case 6:
printf("六月\n");
case 7:
printf("七月\n");
case 8:
printf("八月\n");
case 9:
printf("九月\n");
case 10:
printf("十月\n");
case 11:
printf("十一月\n");
case 12:
printf("十二月\n");
}
return 0;
}
我们的目的呢?希望输入数字几,就打印几月出来.但结果时这样吗?
当我们输入1会得到什么呢?
这里month为1,就会从case 1进去,依次打印后面的月份,如果我们要想达到目的,应该在printf后面加上break,
b
r
e
a
k
的作用就是结束
s
w
i
t
c
h
的循环
,
就是说不在执行下面的
c
a
s
e
语句
\color{Red}{break的作用就是结束switch的循环,就是说不在执行下面的case语句}
break的作用就是结束switch的循环,就是说不在执行下面的case语句,代码结果如下:
#includeint main() {int month = 0;
scanf("%d", &month);
switch (month)
{case 1:
printf("一月\n");
break;
case 2:
printf("二月\n");
break;
case 3:
printf("三月\n");
break;
case 4:
printf("四月\n");
break;
case 5:
printf("五月\n");
break;
case 6:
printf("六月\n");
break;
case 7:
printf("七月\n");
break;
case 8:
printf("八月\n");
break;
case 9:
printf("九月\n");
break;
case 10:
printf("十月\n");
break;
case 11:
printf("十一月\n");
break;
case 12:
printf("十二月\n");
break;
}
return 0;
}
(二).循环语句
循环语句:在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。
1.1
f
o
r
循环
\color{red}{for循环}
for循环的基本表达式
for(表达式1;表达式2;表达式3)
{
语句;
}
注意:
表达式1:一般为赋值表达式,给控制变量赋初值;
表达式2:关系表达式或逻辑表达式,循环控制条件;
表达式3:一般为赋值表达式,给控制变量增量或减量。
语句:循环体,当有多条语句时,必须使用复合语句。
表达式的中间用分号隔开,表达式3后面不加分号
这是它的执行顺序:
1-2-3-4-2-3依次类推,直到i=11时,退出循环,于是打印1到10.
我们来一个题来练练手:
输入一个数:
输出这个数的阶乘:
#includeint main() {int i = 1;
int n = 1;
int fact = 1;//不能初始化为0,不然结果也是0
scanf("%d", &n);
for (i = 1;i<=n;i++) {fact = fact * i;
}
printf("%d", fact);
return 0;
}
运行的步骤为:
如果我们输入5
1.当i=1时,小于5,fact=1*1=1;
2.i++,此时i为2,也小于5,fact=1*2=2;
3.i++,此时i为3,也小于5,fact=2*3=6;
4.i++,此时i为4,也小于5,fact=6*4=24;
5.i++,此时i为5,满足条件,fact=24*5=120;
6.i++,此时i为6,不满足条件,退出循环.
1.2 for循环嵌套if语句中的break和continue
上面已经说到了,break就是跳出循环体,那continue有什么作用呢?
C语言中continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,然后进行下一次是否执行循环的判定。需要注意的是continue语句只结束本次循环,而不是终止整个循环。
我们用代码来理解一下它们的用法:
#includeint main() {int i = 0;
for (i = 1; i< 10; i++) {if (5 == i)
break;//当i为5时,跳出循环,不会再打印5了
printf("%d ", i);
}
return 0;
}
如果把break换成continue会发生什么呢?
#includeint main() {int i = 0;
for (i = 1; i< 10; i++) {if (5 == i)
continue;//当i为5时,continue跳过后面代码,来到for语句
printf("%d ", i);
}
return 0;
}
应该打印1 2 3 4 6 7 8 9,结果是不是呢?我们来看看:
果然我们理解的,还是对的,我们真棒!
2.
w
h
i
l
e
循环
\color{red}{ while循环}
while循环
whlie(表达式){
语句;
}
while和for本质上都是循环,只是表达式放的位置不同,故相同代码,运行结果可能也会不同
先来一个简单的代码,计算1加到100的总和:
#includeint main() {int i = 0;
int sum = 0;
while (i<= 100) {sum = sum + i;
i++;//和for循环不同,调整语句不在括号里面
}
printf("sum=%d", sum);
return 0;
}
如果我们用上述for循环嵌套里面的break,continue来编写while会怎么样呢?结果会不会一样呢?
break代码:
#includeint main() {int i =1;
while (i< 10) {if (5 == i)
break;
printf("%d ", i);
i++;
}
return 0;
}
这里可以看出,当使用break时,for和while代码一样时,运算结果也一样.
continue代码:
#includeint main() {int i =1;
while (i< 10) {if (5 == i)
continue;
printf("%d ", i);
i++;
}
return 0;
}
这里可以看出,程序陷入了死循环,因为当i为5时,continue跳过后面的代码,返回到while的判断句,5小于10,恒成立,依次类推,程序陷入了死循环.
所以说for和while因为调整语句的位置不同,两个循环还是存在差异的,做题时,根据自己的喜好来看吧,随便哪一个都行,或者两个都可以相互嵌套使用的.
3.
d
o
\color{red}{do}
do
w
h
i
l
e
\color{red}{while}
while循环
do while 循环是 while 循环的变体。在检查while ()条件是否为真之前,该循环首先会执行一次do 之内的语句 ,然后在while()内检查条件是否为真,如果条件为真的话,就会重复do while这个循环,直至while ()为假。 和 while循环有相似之处,但使用方法完全不同。
do while用的很少,这里就不多说了。
最后,感谢大家的莅临。😘
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧