C语言零散知识笔记
-
流程
先执行哪一行,然后执行哪一行
-
每个语句的功能
-
试数(最重要)
对不明白的地方进行测试,了解其含义
-
看懂程序了,不代表能编写正确,还需要进行敲代码,进行实际验证,在错误中成长
如何学习一些需要算法的程序【如何掌握一个程序】
-
尝试自己去编程解决它
但是要意识到大部分人都是自己无法解决的,这时不要气馁,也不要自卑
如果十五分钟还想不出来,此时建议直接看答案
-
如果解决不了,就看答案
关键是把答案看懂,这个要花很大的精力,也是我们学习的重点
看懂一个程序要分三步:流程、每个语句的功能、试数
-
看懂之后尝试自己去修改程序,并且知道修改之后程序的不同输出结果的含义
不建议看懂程序之后就立即自己敲代码
-
照着答案去敲
-
调试结果
-
不看答案,自己独立把答案敲出来
-
如果程序实在无法彻底理解,就把它背会
试数详细步骤举例
原则:
-
编译器如何执行,自己就怎么写到纸上,不要问为什么(不需要知道语句什么功能,把自己当做计算机)
-
不要遗漏步骤
-
格式详细
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
-
break如果用于循环是用来终止循环
-
break如果用于switch,则是用来终止switch
-
break不能直接用于if,除非if属于循环内部的一个子句
for(i=0; i<3; ++i)
{
if(3>2)
break;//break虽然是if内部的语句,但break终止的却是外部for的循环
printf("嘿嘿\n"); //永远不会输出
} -
在多层循环中,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 */
-
在多层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;
}