浪子荡秋千

C语言零散知识笔记

如何看懂一个程序

  1. 流程

    先执行哪一行,然后执行哪一行

  2. 每个语句的功能

  3. 试数(最重要)

    对不明白的地方进行测试,了解其含义

 

 

  • 看懂程序了,不代表能编写正确,还需要进行敲代码,进行实际验证,在错误中成长

     

如何学习一些需要算法的程序【如何掌握一个程序】

  1. 尝试自己去编程解决它

    但是要意识到大部分人都是自己无法解决的,这时不要气馁,也不要自卑

    如果十五分钟还想不出来,此时建议直接看答案

  2. 如果解决不了,就看答案

    关键是把答案看懂,这个要花很大的精力,也是我们学习的重点

    看懂一个程序要分三步:流程、每个语句的功能、试数

  3. 看懂之后尝试自己去修改程序,并且知道修改之后程序的不同输出结果的含义

    不建议看懂程序之后就立即自己敲代码

  4. 照着答案去敲

  5. 调试结果

  6. 不看答案,自己独立把答案敲出来

  7. 如果程序实在无法彻底理解,就把它背会

试数详细步骤举例

原则:

  1. 编译器如何执行,自己就怎么写到纸上,不要问为什么(不需要知道语句什么功能,把自己当做计算机)

  2. 不要遗漏步骤

  3. 格式详细

     1 # include <stdio.h>
     2  3  int main()
     4  {
     5      int i;
     6      float sum = 0;
     7      
     8      for(i=1;i<101;i++)
     9          sum = sum + 1/(float)(i);
    10          //sum = sum + (float)(1/i);这样写是不对,因为 (1/i)值是整数,强制转换为浮点数还是相当于整数 
    11          //更简单的写法是sum = sum + 1.0/i; 
    12          
    13      printf("sum=%f",sum);
    14      
    15      return 0;
    16  }
    17  /*
    18  1-> i=1 1<=100成立
    19      sum=0+1/1.0=1   ++i i=2
    20  2-> i=2 2<=100成立
    21      sum=1+1/2.0 ++i i=3
    22  3-> i=3 3<=100成立
    23      sum=1+1/2.0+1/3.0   ++i i=4
    24      .......
    25  */ 

break 与 continue

break

  1. break如果用于循环是用来终止循环

  2. break如果用于switch,则是用来终止switch

  3. break不能直接用于if,除非if属于循环内部的一个子句

     for(i=0; i<3; ++i)
      {
      if(3>2)
      break;//break虽然是if内部的语句,但break终止的却是外部for的循环
      printf("嘿嘿\n"); //永远不会输出
     
      }
  4. 在多层循环中,break只能终止距离它最近的循环

     1 # include <stdio.h>
     2  3  int main()
     4  {
     5      int i, j;
     6   
     7      for(i=0; i<3; ++i)
     8      {
     9          for(j=2; j<4; ++j)
    10              break;//break只能终止距离它最近的循环 
    11          printf("嘿嘿\n"); 
    12                  
    13      }
    14      return 0; 
    15  }
    16  /*在Dev-C++ 5.11中的输出结果是:
    17  ============
    18  嘿嘿
    19  嘿嘿
    20  嘿嘿
    21  ============
    22  */
  5. 在多层switch嵌套中,break只能终止距离它最近的switch

 1 # include <stdio.h>
 2  3  int main()
 4  {
 5      int x=1, y=0, a=0, b=0;
 6      switch(x)
 7      {
 8          case 1:
 9              switch(y)
10              {
11                  case 0:
12                      a++;
13                      break;
14                  case 1:
15                      b++;
16                      break;
17              }
18              b = 3;
19              break; 
20          case 2:
21              a++;
22              b++;
23              break;
24      }
25      printf("%d %d",a, b);
26      return 0;
27  }
28  /*
29  在Dev-C++ 5.11中的输出结果是:
30  ===========
31  1 3
32  =========== 
33  */

continue

用于跳过本次循环,余下的语句转去判断是否需要执行下次循环

 for(1; 2; 3)
 {
     A;
     B;
     continue;//如果执行该语句,则执行完该语句后,会执行语句3,C和D都会被跳过去,C和D不会被执行
     C;
     D;
 }
 while(表达式)
 {
    A;
     B;
     continue;//如果执行该语句,则执行完该语句后,会执行表达式,C和D都会被跳过去,C和D不会被执行
     C;
     D;
 }

 

 

posted on 2021-04-12 11:35  浪子荡秋千  阅读(51)  评论(0编辑  收藏  举报

导航