目录
getchar和putchar
3.2 for循环
3.2.1 break和continue在for循环中
3.2.2 for语句的循环控制变量
3.2.3 一些for循环的变种
3.2.4 一道笔试题:
3.3 do...while()循环
3.3.1 do语句的语法:
3.3.2 do语句的特点
3.3.3do while循环中的break和continue
3.4 练习
getchar和putchar
//PS:在进行本文讲解时,我们先用以下这些图来了解一下gerchar和putchar这两个函数:
这是msdn上面定义的getchar函数
上图意思就是当getchar读取错误或者读到文件结束标志的时候就返回一个EOF。
这是msdn上面定义的putchar函数
//linux上面是 Ctrl+D
ps:此时getchar拿的是空格
ps:当然如果想要读取到空格的话我们可以去用gets这个函数,目前也只是提一下。
//以上就是给小伙伴们补充的getchar和putchar两个函数啦!!!
//再次回来!上文我们讲完了while循环,这节课我们接着来讲for循环和do...while循环
3.2 for循环
我们已经知道了
while
循环,但是我们为什么还要一个
for
循环呢?
首先来看看
for
循环的语法:
for
(
表达式
1
;
表达式
2
;
表达式
3
)
循环语句
;
表达式
1
表达式
1
为
初始化部分
,用于初始化循环变量的。
表达式
2
表达式
2
为
条件判断部分
,用于判断循环时候终止。
表达式
3
表达式
3
为
调整部分
,用于循环条件的调整。
实际的问题:
使用
for
循环 在屏幕上打印
1-10
的数字。
现在我们对比一下
for
循环和
while循环。
int
i
=
0
;
//
实现相同的功能,使用
while
i
=
1
;
//
初始化部分
while
(
i
<=
10
)
//
判断部分
{
printf
(
"hehe\n"
);
i
=
i
+
1
;
//
调整部分
}
//
实现相同的功能,使用
while
for
(
i
=
1
;
i
<=
10
;
i
++
)
{
printf
(
"hehe\n"
);
}
可以发现在
while
循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较 远,这样查找修改就不够集中和方便。所以,
for
循环的风格更胜一筹;
for
循环使用的频率也最高。
3.2.1 break和continue在for循环中
我们发现在
for
循环中也可以出现
break
和
continue
,他们的意义和在
while
循环中是一样的。
但是还是有些差异:
//
代码
1
//
代码
2
3.2.2 for语句的循环控制变量
建议:
1.
不可在
for
循环体内修改循环变量,防止
for
循环失去控制。
2.
建议
for
语句的循环控制变量的取值采用
“
前闭后开区间
”
写法。
int
i
=
0
;
//
前闭后开的写法
for
(
i
=
0
;
i
<
10
;
i
++
)
{}
//
两边都是闭区间
for
(
i
=
0
;
i
<=
9
;
i
++
)
{}
//一般建议用前闭后开的方法,因为这样可以使后开的那个值赋有一定的意义。
3.2.3 一些for循环的变种
//for
循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问
题。
//
代码
2
int
i
=
0
;
int
j
=
0
;
//
这里打印多少个
hehe?
for
(
i
=
0
;
i
<
10
;
i
++
)
{
for
(
j
=
0
;
j
<
10
;
j
++
)
{
printf
(
"hehe\n"
);
}
}
//打印100个
//
代码
3
int
i
=
0
;
int
j
=
0
;
//
如果省略掉初始化部分,这里打印多少个
hehe?
for
(;
i
<
10
;
i
++
)
{
for
(;
j
<
10
;
j
++
)
{
printf
(
"hehe\n"
);
}
}
//打印10个
//
代码
4-
使用多余一个变量控制循环
3.2.4 一道笔试题:
//
请问循环要循环多少次?
#include <stdio.h>
int
main
()
{
int
i
=
0
;
int
k
=
0
;
for
(
i
=
0
,
k
=
0
;
k
=
0
;
i
++
,
k
++
)
k
++
;
return
0
;
}
//循环0次,因为for里面的k是赋值,并不是判断,赋值为0直接为假,跳出循环,所以是0次
3.3 do...while()循环
3.3.1 do语句的语法:
do
循环语句
;
while
(
表达式
);
3.3.2 do语句的特点
循环至少执行一次,使用的场景有限,所以不是经常使用。
3.3.3do while循环中的break和continue
ps:break只能跳出一条循环
//上面的知识点就讲完了哈!!!现在我们来自己尝试编写下面的程序来巩固知识吧!!!
//当然,下面的题也有很多新奇的东西,大家一时半会想不出来很正常,先接触一下哈!!!到后面自然就熟悉了!!!不要想不开哈!这是大部分人都会经历的!当然,我只是说初学者哈!!
3.4 练习
1.
计算
n
的阶乘。
2.
计算
1!+2!+3!+……+10!
3.
在一个有序数组中查找具体的某个数字
n
。(讲解二分查找)
4.
编写代码,演示多个字符从两端移动,向中间汇聚。
1.思路:
例2 求1到n阶乘的和(用以上相关联的方法就是再套一个循环然后加在一起)
法一:
法二:
对于法一,重复算了很多值,所以来个更有效的方法
例3:
用二分法
法一:
法二:
这就是二分查找,找不到就缩小一半查找范围
例4:
演示多个代码从两边向中间汇聚
PS:
还有一点说掉啦,就是arr1和arr2数组要一样长才可以哈!不然超过的部分就会打印随机数的哈!
今天的内容就到处结束了哈!感谢大家的观看!!要是觉得对你有一点用的话,就来一个点赞加关注吧!!!谢谢大家!!!
编程就是永不放弃!永不放弃有两个原则,第一个原则是永不放弃,第二个原则就是:当你想放弃时回头看第一个原则!加油!!!