您的位置:首页 > 编程语言 > C语言/C++

黑马程序员 c语言-----循环与函数学习

2014-04-02 22:50 309 查看
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a
href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------


一. while基本概念



>.当要做一些重复操作的时候就可以用循环结构

while (条件表达式)

{

语句;

...

}

>.特点:当条件表达式为真就会执行while后面大括号中的内容,执行完毕再次判断条件表达式是否为真,如果为真又执行while后面大括号中的内容,以此类推,直到条件不满足为止

>. break 可以用在switch语句中,也可以用着循环语句中

breakswitch中的时候,是用来结束switch语句

break在循环语句中的时候,是用来结束循环语句


1,累加思想原理:通过循环的形式进行累加操作,定义变量记录每次变化后的结果



实例:

int sum =
0;//定义变量记录每次变化后的结果
int count =1;
while (count <= number) {
printf("%d + %d\n", sum, count);
sum = sum + count;
count++;
}

2计数器思想:通过循环的形式进行计数操作, 通过变量记录每次变化的值



实例:

int number =1;
int count =0;
while (number <=100) {
if (0 == (number %7))
{
printf("7的倍数\n");
count++;//计数器思想
}
printf("count = %d\n", number);
number++;
}
应用场景:当以后要求在什么什么里面有多少个什么的时候,立刻想到计数器思想



注意点:

1.C语言中任何数值都有真假性, 死循环

while (-11)

{

printf("打飞机\n");

}

2.while也可以省略大括号, while省略大括号的时候,条件满足会执行后面的第一条语句,也就是说省略大括号的时候后面的第一条语句和while是一个整体 int a = 0;

while (a < 5)

printf("%d\n", a++);


printf("打飞机\n");

3.if一样,想在while后面定义变量必须加上大括号,否则变量作用域混乱

while (1)

int a = 10;

printf("a = %d\n", a);

if (1)

int a = 10;


printf("a = %d\n", a);

4.分号问题,死循环,因为count的值从来没有改变过

int count = 0;

while (count < 5);

{

printf("打飞机\n");


}

5.最简单的死循环

while(1);


二:[b]do while[/b]

[b]格式:

[/b] do

{

语句;

...

}while (条件表达式);

注意:一定不要忘记写这个分号,分号代表着dowhile循环结束

while/dowhile区别:

while会先判断条件是否满足,如果不满足就不会执行循环体

do while 无论条件是否满足都会执行一次循环体

whiledowhile是可以互换,能用while实现的都能用dowhile实现,

但是在日常开发中一般情况能用while就用while

只有当某些语句无论条件是否满足都需要执行一次的时候才用dowhile

三:for基本概念格式:

for (初始化表达式; 条件表达式; 循环后操作表达式)

{

语句;

...

}

条件表达式:条件表达式和while循环一样,只要条件满足就会执行循环体

初始化表达式: 在整个循环过程中只会执行一次

循环后操作表达式:当执行完循环体之后就会执行循环后操作表达式

1.执行"初始化表达式"

2.判断"条件表达式"

3.执行循环体(条件为真)

4.执行"循环后操作表达式"

5.判断"条件表达式"

6.重复4/5


for循环初始化表达式中定义的变量只能在for循环中使用



实例:

for (int bulletCount =3; bulletCount >0;
bulletCount--)
{

printf("发射子弹 %d\n", bulletCount);
}
什么情况下用for,什么情况下用while

>如果变量只是为了控制循环的次数,循环完毕之后不再使用for循环

>如果变量在循环执行完毕之后还需要使用,就用while


1.for循环也可以省略大括号,省略大括号的时候当条件满足会执行后面的第一条语句



例如:

for (int i= 0; i < 3; i++)

printf("打飞机\n");


printf("xxoo\n");

2.if while一样作用域混乱



[b] 例如:

[/b]

if (1)

int a = 10;

while (1)

int b = 10;

for (int i = 0; i < 3; i++)

int c = 10;


3.分号问题,但是一般情况下不会造成死循环



[b] 例如:

[/b]

for (int i = 0; i < 3; i++);

{

代码块

printf("打飞机\n");

} 4.死循环

注意如果for循环中条件表达式什么都不写,默认就是真

for (;;);

printf("打飞机\n");
5.作用域问题,

[b] 例如:

[/b]

for (int i = 0; i < 3; k++)

{

int k = 10; //只在大括号中有效

printf("k = %d\n", k);

}

int a = 10;

{

int a = 20;

printf("a = %d\n", a);

}

两个i的作用域不一样

for (int i = 0; i < 3; i++)

{

int i = 5;

printf("i = %d\n", i);

}

四:嵌套使用

while (条件表达式)

{

while (条件表达式)

{

}

}

do

{

while (条件表达式)

{

}

}while(条件表达式);

for (;;)

{

while (条件表达式)

{

}

}

for (;;)

{

for (;;)

{ }

}嵌套循环例子:

*

***

*****规律:

尖尖朝上:改变内循环的条件,让条件随着外循环的初始化值变化


尖尖朝下:改变内循环的初始化表达式,让初始化表达式随着外循环的初始化值变化



int count = 3;

外循环控制行数

for (int i = 0; i < 3; i++) {

内循环控制列数,(内循环执行完代表输出了一行)

for (int j = 0; j < count; j++) {

printf("*");

}

count--;//2 1

printf("\n");

}

int count = 0;

外循环控制行数

for (int i = 0; i < 3; i++) {

内循环控制列数,(内循环执行完代表输出了一行)

for (int j = count; j < 3; j++) {

printf("*");

}

count++;//1 2

printf("\n");

}

五:函数基本概念

初学者定义函数,首要要有三个确定

1.确定函数名称, 根据函数的功能确定

规范:26个字母 数字 下划线 组成

不能以数字开头

2.确定形参列表(形参类型 形参名称),根据用户调用函数的时候是否需要传入一些补助的值来确定

3.确定返回值类型,根据函数执行完是否需要返回值给函数调用者

return的作用

1.返回值给调用者

2.结束函数

函数的定义格式:

返回值类型 函数名(形参列表)

{

函数体;

功能代码;

}

C语言对功能的定义是通过函数来体现的

函数:具有特定功能的程序段, C语言程序是由函数组成的

定义函数的目的:将一段特定的功能封装起来方便复用

函数的规则:单一性(在写函数的时候尽量保证函数的单一性, 提高代码的扩展性)

直接写在main函数中的弊端:

1.如果功能发生变化,会影响到其他的地方

2.重复代码过多,又臭又长

>.封装之后的好处:

1.简化了代码,提高了代码的复用性

2.功能发生变化,不会影响到其他的地

调用函数的时候,传入的参数我们称之为实际参数简称实参

注意点:调用函数的时候传入的实参个数必须和形参个数相同

当基本数据类型作为函数参数传递的时候是值传递(拷贝)

return 0 代表程序正常结束, 如果不是0就代表异常结束

.h 文件 我们称之为头文件

头文件是专门用来保存函数的声明

.h文件生下来就是用来被拷贝, .h文件不参与编译

递归:

递归自己搞自己

1.重复执行的操作

2.约束条件

能用循环实现的功能,用递归都可以实现

递归就是自己搞自己,性能差

注意:递归一定要有一个明确的结束条件,否则会造成死循环

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流!
----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: