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

本文介绍了ASP.Net和Unity开发的基本概念,包括while循环、do-while循环、for循环以及函数的基本概念和使用方法。同时,文章还讨论了递归、函数规则和注意事项,并提供了相关代码实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- <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);
    

二:do while

  

 格式:
 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一样作用域混乱

  例如:

    if (1)
        int a = 10;
    while (1)
       int b = 10;
    for (int i = 0; i < 3; i++)
        int c = 10;
    

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

  例如:

    for (int i = 0; i < 3; i++);
    {
          代码块
        printf("打飞机\n");
    }
    
   4.死循环
   注意如果for循环中条件表达式什么都不写,默认就是真
  
    for (;;);
    printf("打飞机\n");
    

   5.作用域问题,

    例如:

    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>、期待与您交流! ---------------------- 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值