一、【掌握】复习昨天知识
1、程序的结构
程序默认从上到下顺序执行(顺序结构)
程序的结构:顺序结构、分支结构、循环结构
2、if分支语句
程序执行的过程中可以有多个选择
格式:
if(表达式){
语句块;
}
进行表达式的求值:如果表达式的值为非0(真)
会执行语句块 0 (假) 不会执行语句块,
3、if分支语句的几种形式
·1)最简单的,要不执行,要不是不执行
if(表达式){
语句块;
}
·2)if.....else......
if(表达式){
语句块1;
}else{
语句块2;
}
进行表达式的求值:如果表达式的值为(真)
会执行语句块1; 0 (假) 会执行语句块2
注意:语句块1和语句2只可能被执行一次
3)if...else...的嵌套问题
if(表达式1){
if(表达式2){
//表达式1值为1,并且表达式2值为1
语句块1;
}else{
语句块2;
//表达式1值为1,但是表达式2的值为0
}
}else{
语句块3;
//表达式1为0的时候
}
4)if..... else if ......else....
if(表达式1){
语句块1;
//表达式1为真
}else
if(表达式2){
语句块2;
//当表达式1不成立,但是表达式2成立
}else{
语句块3;
//当表达式1和表达式2都不成立的时候
}
4、if注意点
1)if(1)、if(-1)永真 if(0) 永假
2)if语句不要加分号!if(表达式);
表示判断完了什么都不做
- if后面的大括号可以省略,省略大括号后,if语句的作用域只可以接一条语句,并且这条语句不能是申明变量的。
4)if(表达式){int num=10;} printf("%d",num);(错误的)
5)if语句块内可以接多条语句
5、switch分支语句
也是用于条件判断,当表达是的结果有多种情况,用switch比较方便一些
格式:
switch(表达式){
case
整型常量或者字符常量: 语句; .....
default:
//如果上面的条件都不满足,执行default
}
计算表达式的值,用这个值和case后的常量进行比较,如果这个值等于了某个常量值,会执行case对应的分支语句,遇到break;才结束,如果没有遇到break,程序一直会往下执行,直到switch语句结束
6、switch的注意点
1)switch(表达式)
表达式:返回值是整型
2)case
常量 必须是常量并且必须是整型或字符 ,不能是float case 2.3:
可以放常量表达式,但是不允许:a+3
3)作用域的问题
case 3: {
int num=-1;
}
case
4:printf("%d\n",num); 这是不允许的
4)case分支语句可以有多句,可以使用大括号,也可以不使用
,如果不使用大括号,则不能进行变量的申明
二、【理解】循环结构的基本介绍
1、循环结构简介
实际生活中的循环:印刷1万份报纸,跑5000米
程序中的循环:要打印999句老师很帅
那么,怎么用循环来实现上面的这个需求呢?
int i = 0;
while (i < 999)
{
printf("老师好帅啊\n");
i++;
}
从上面的结果我们可以看到,我们在程序中需要重复做什么事,就写在大括号里就可以了,要重复多少次,就改一改条件次数就改变了
循环结构简单来说就是:循环是一次又一次的执行相同的代码块
2、构成循环结构的几个条件:
一般来说一个循环需要以下几部分构成:
1)循环控制条件 进入循环以及退出循环的主要依据,来控制是否需要进行循环
2)循环体 循环的过程中重复执行的代码段
3)能够让循环结束的语句(递增、递减、真、假等) 能够让循环条件为假的依据,用来防止死循环
3、C语言中的循环语句
while语句;
do-while语句;
for语句;
三、【掌握】while循环结构
1、while循环的格式:
while
( 条件 )
{
语句1;
语句2;
....
}
2、while循环使用方法:
1)while循环的特点:
如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行
2)while语句的语义是:
如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内容)。
然后再次判断条件,重复上述过程,直到条件不成立就结束while循环
2)while循环的执行步骤:
第1步:判断条件是否为真,如果为真,则转向第2步,如果条件为假则转向第3部
第2步:执行循环体,执行完毕后再转向第1步
第3步:跳出循环,循环结束
避免使用死循环!
死循环:循环条件永不变假
四、【理解】while循环的注意点
1、任何数值都真假性,注意防止死循环
while (-1) {
printf("死循环\n");
}
2、while
后如果只有一条语句它可以省略大括号
1)空语句它也是一条语句
2)while小阔号后面不可以直接写分号
int
num = 0;
while
(num < 3)
{
printf("num
= %d\n",num); num++;
}
3)省略大括号时,不能在下面直接写申明变量的语句
while (1 < 3)
int
num = 5;
是错误的
3、作用域:内部代码块中定义的变量不可以在外边
代码块中访问
while (1 < 3) {
int
a = 0;
}
printf("a =
%d\n",a);
4、while语句后面不要加分号
while (1 < 3); 错误
五、【理解】while循环课堂练习
习题一:计算1-100以内(包含1和100)所有偶数的和
(能被2整除的数都叫偶数)
习题二:请用户输入个任意整数N,打印出从1到这个整数N的所有平方表
例:用户输入4,那么则顺序打印出1的平方的值为1,2的平方的值为4,3的平方的值为9,4的平方的值为16
习题三:要求用户输入5个数字,计算出这5个数字中最小的数字、最大的数字和平均数
习题四:让用户输入一个数n和一个数m,计算从n到m之间的所有数之和
六、【掌握】do…while循环的基本介绍
1、do ... while循环的基本格式
do{
语句1;
语句2;
....
}while ( 条件 );
注意:有分号!!
2、do...while语句用法
1)do...while语句的语义是:
当执行到do-while循环时,首先会执行一遍循环体中的语句(“循环体”就是do后面大括号{} 中的内容)。接着判断while中的条件,如果条件成立,就执行循环体中的语句。然后再次判
断条件,重复上述过程,直到条件不成立就结束while循环
2)do-while循环的特点:
不管while中的条件是否成立,循环体中的语句至少会被执行一遍
int i = 0;
while(i<0){
i++;
}
int i =0;
do{
i++;
}
while(i<10);
```
#####3)do-while的执行过程:
第1步:先执行循环体,再跳转到第2步
第2步:判断条件是否为真,如果为真,跳转第1步,如果为假,跳转第3步
第3步:跳出循环,循环结束
#####3、do...while和while的对比
```
while
是先判断再执行 例:
int i=10;
while(i<10){
printf(i);
i++;
}
```
结果是什么都不打印,最终i的值为10
```
do-while
```
是先执行再判断
例:
```
int i =10;
do{
printf(i);
i++;
}while(i<10);
```
打印的是10,最终i=11
两者的区别在于第一圈循环时,while是先判断循环条件,再循环.所以第一个程序什么都不打印. 而do-while则是先执行后判断.所以,第二个程序先打印10,然后i++然后跳出循环.
####七、【理解】do…while的课堂练习
习题一:小苍明天就要上舞台表演了,老师打算让她先试着表演一次看看,如果满意就让她回家,不满意就让她继续练,直到满意为止。(表演就用打印一句话代替)
习题二:用do...while语句重写一次求1加到100的总和
八、【掌握】for循环简单介绍
#####1、for循环的语法格式
C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。
一般形式:
for(表达式1;表达式2;表达式3) {
循环体;
}
#####2、for循环执行过程
第1步: 先执行表达式1。
第2步:执行表达式2,若其结果值为真(值为非0),则跳转到第3步。若为假(值为0),转到第5步。
第3步: 执行循环体,再跳转到第4步
第4步:执行表达式3。
第5步:跳出循环,循环结束
![求解表达式](http://upload-images.jianshu.io/upload_images/3899701-097a1ed0247a1e5a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####3、for循环的几种形式
1)for语句最简单的形式:
for(循环变量赋初值;
循环条件;
循环变量增值)
例如:
for(int i=1;i<=100;i++) sum=sum+i;
![if语句示意图](http://upload-images.jianshu.io/upload_images/3899701-67e09dcac4aee69a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2)表达式省略(三个表达式都可以省略)
如:for(; ;)
语句相当于while(1) 语句,即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。
3)循环控制无关的任意表达式
表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达
式,中间用逗号间隔。如:
for(sum=0,i=1;i<=100;i++)
sum=sum+i;
或
for(i=0,j=100;i<=j;i++,j--) k=i+j;
表达式1和表达式3都是逗号表达式,各包含两个赋值表达式,即同时设两个初值,使两个变量增值.
在逗号表达式内按自左至右顺序求解,整个逗号表达
式的值为其中最右边的表达式的值。如:
```for(i=1;i<=100;i++,i++) sum=sum+i; ```
相当于
```for(i=1;i<=100;i=i+2) sum=sum+i; ```
####九、【理解】for循环课堂练习
习题一:让用户输入一个数n和一个数m,计算从n到m之间的所有数之和
习题二:求100到999之间的水仙花数
水仙花数:abc = a*a*a + b*b*b + c*c*c
如:153 = 1*1*1 + 5*5*5 +3*3*3
####十、【掌握】for循环的嵌套
#####1、for循环的嵌套
任何循环都如分支语句一样,可以进行多层嵌套,但是在循环结构中,用到最多的就是for循环的嵌套,并且在一般情况下,只有2层嵌套循环(主要用来控制行列),不会超出3层。
![for循环嵌套](http://upload-images.jianshu.io/upload_images/3899701-21abb25f2969a16f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![for循环嵌套](http://upload-images.jianshu.io/upload_images/3899701-9e3510eae28fc732.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#####2、利用for循环嵌套实现打印图形
思考&实现1:
打印各种图形
![图形](http://upload-images.jianshu.io/upload_images/3899701-8208b2e3a38ed664.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
分析:
应该打印5行
最多打印5列 每一行和每一列关系是什么?
列数<=行数
![示意图](http://upload-images.jianshu.io/upload_images/3899701-b5164959c0d57920.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![示意图](http://upload-images.jianshu.io/upload_images/3899701-375bf8bb62e9af1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![示意图](http://upload-images.jianshu.io/upload_images/3899701-04c3290f082b9acb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
思考&实现2:
用户输入一个整数N,输出如下图形,如:N= 5
思路:
1)列数要等于行数
2)每一行的数字都是一样的
![示意图](http://upload-images.jianshu.io/upload_images/3899701-467a5bce467d7184.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#####思考&实现3:
用户输入一个整数N,输出如下图形,如:N= 5
![示意图](http://upload-images.jianshu.io/upload_images/3899701-36946150d2a62b60.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![示意图](http://upload-images.jianshu.io/upload_images/3899701-6948c448084d3270.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####十一【掌握】循环的中断语句
break和continue语句都可以用在循环中,用来跳出循环(结束循环);break语句还可以用在switch语句中,用来跳出switch语句。
##### 1、break语句用法
break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳
出switch而执行switch以后的语句;break在switch 中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。
-
注意:
//
if(表达式)else{ ...... break;......}
1)break语句对if-else的条件语句不起作用;
2)在多层循环中,一个break语句只向外跳一层。
#####思考&实现1:
在圆中,当圆的半径等于多少时,圆的面积才会大于或等于100?(只考虑半径为从1到10的情况)
#####思考:
r从1变到10 判断面积是否不是>100 如果大于>100 循环要终止
面积 = 3.14*r*r;
![如图](http://upload-images.jianshu.io/upload_images/3899701-56773bcc083f86b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#####2、continue 语句(结束本次循环,继续下次循环) 用法
continue语句的作用是跳过循环体中剩余的语句而继续下一次。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。
对比一下break和continue。
```
break的用法:
while(表达式1){
......
if(表达式2) break;
......
}
continue的用法:
while(表达式1){
......
if(表达式2) continue;
......
}
```
#####思考&实现1:
把100~200之间的不能被3整除的数输出
![思考与实现](http://upload-images.jianshu.io/upload_images/3899701-20491c7fb003a9a4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####十二【掌握】for循环嵌套练习
第一题:打印九九乘法表
![乘法表](http://upload-images.jianshu.io/upload_images/3899701-884f9a4e3763a0a3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第二题:让用户输入一个数N,输出类似如下图的等腰三角形(下图N为6)
![等腰三角形](http://upload-images.jianshu.io/upload_images/3899701-49ee0d344e29fd76.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)