【持续更新】C语言 第四天学习笔记(完整版)

一、【掌握】复习昨天知识

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(表达式);
表示判断完了什么都不做

  1. 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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,295评论 18 399
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,527评论 0 11
  • 今天真正的思考了自己的时间颗粒度……应该是以一天为单位的。这应该就是老感觉自己忙忙碌碌但又效率不高的原因吧。...
    柴慕怡阅读 152评论 0 1
  • 交到一个闺蜜,往往都是从某一方的主 动打招呼开始,然后认识,然后熟悉,然后 自然而然地成为朋友,然后发现:哎...
    薏茑阅读 382评论 0 0
  • 一直比较喜欢利用RSS进行资讯聚合阅读,下面就来总结下我一些我用过的在线RSS阅读工具。 在线RSS阅读工具汇总 ...
    来自西界阅读 29,127评论 17 64