C语言学习笔记程序员

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

2016-12-08  本文已影响259人  我是果冻妹纸

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

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:https://img.haomeiwen.com/i3899701/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:https://img.haomeiwen.com/i3899701/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:https://img.haomeiwen.com/i3899701/21abb25f2969a16f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![for循环嵌套](http:https://img.haomeiwen.com/i3899701/9e3510eae28fc732.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#####2、利用for循环嵌套实现打印图形 
思考&实现1: 

打印各种图形

![图形](http:https://img.haomeiwen.com/i3899701/8208b2e3a38ed664.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
分析:
应该打印5行
最多打印5列 每一行和每一列关系是什么? 
列数<=行数 

![示意图](http:https://img.haomeiwen.com/i3899701/b5164959c0d57920.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



![示意图](http:https://img.haomeiwen.com/i3899701/375bf8bb62e9af1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![示意图](http:https://img.haomeiwen.com/i3899701/04c3290f082b9acb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


思考&实现2: 

用户输入一个整数N,输出如下图形,如:N= 5

思路:

1)列数要等于行数 

2)每一行的数字都是一样的 

![示意图](http:https://img.haomeiwen.com/i3899701/467a5bce467d7184.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#####思考&实现3: 

用户输入一个整数N,输出如下图形,如:N= 5

![示意图](http:https://img.haomeiwen.com/i3899701/36946150d2a62b60.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![示意图](http:https://img.haomeiwen.com/i3899701/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:https://img.haomeiwen.com/i3899701/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:https://img.haomeiwen.com/i3899701/20491c7fb003a9a4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

####十二【掌握】for循环嵌套练习


第一题:打印九九乘法表

![乘法表](http:https://img.haomeiwen.com/i3899701/884f9a4e3763a0a3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


第二题:让用户输入一个数N,输出类似如下图的等腰三角形(下图N为6)

![等腰三角形](http:https://img.haomeiwen.com/i3899701/49ee0d344e29fd76.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

上一篇 下一篇

猜你喜欢

热点阅读