ctrl+A 全选 肯臭
Alt+f8 规范对齐代码 熬特
if 常见问题解析
1 空语句的问题
if (3 > 2);
等价于
if (3 > 2)
; //这是一个空语句
2
if (表达式1)
A;
else
B;
是正确的
if (表达式1);
A;
else
B;
是错误的
3 if (表达式1)
A;
else if (表达式2)
B;
else if (表达式3)
C;
else
D
即便表达式1和2都成立,也只会执行A语句
4 if (表达式1)
A;
else if (表达式2)
B;
else (表达式3)
C;
这样写语法不会出错,但逻辑上有漏洞
5 if (表达式1)
A;
else if (表达式2)
B;
else if (表达式3)
C;
else (表达式4) // 7行
D;
这样写是不对的,正确的写法是:
要么去掉7星的(表达式4)
要么在7行的else 后面加if
如果else加了表示式了前面就要加if判断,因为去掉if就能判断表达式那就可以不用写else if了
else ()
如果else 有加(表达式)就要加if 要不会出错
6 if (表达式1)
A;
else if (表达式2)
B;
else if (表达式3)
C;
else (表达式4); //
D;
这样写语法不会出错,但逻辑上是错误的
else (表达式4);
D;
等价于
else
(表达式4);
D;
循环
定义:
某些代码被重复执行
分类
for
1格式
for(1; 2; 3)
语句A;
2 执行的流程[ 重点]
3 for的范围问题
4 举例:
1+2+3+.....+100
???????????????????????????????????????????????????????????????????第八课
1+1/2+1/3+.....1/100
int main(void)
{
int i;
float sum = 0;
for (i=1; i<=100; ++i)
{
sum = sum + 1.0/i; //这样是OK的 推荐使用
//sum = sum + (float)(1/i) 这样写是不对可以自己算下
//也可以这样写: sum = sum + 1/(float)(i); 不推荐
}
printf("sum = %f\n", sum);
return 0;
}
试数 按上面的代码
1 不要问为什么
把自己当计算机一步一步的执行,计算机不知道你代码有什么功能他只会执行代码
2 不要把某一部分给省略了
3 写整齐
4 一般写4行,也可以在纸上试
1 i=1 1<100 成立
sum=0+1/1.00=1 ++i i=2
2 i=2 2<100 成立
sum=1+1/2.00=1 ++i i=3
3 i=3 3<100 成立
sum=1+1/2.00+1/3.00=1 ++i i=4
...................................省略
----------------------------------------------------------------------------
break和continue 不瑞课 肯天妞
强制类型转化
格式:
(数据类型)(表达式) 注意表达式可不括起来但是最好括起来因为在其他语言通用还好看
功能:
把表达式的值强制转化为前面所执行的数据类型
例子:
(int)(4.5+2.2) 最终值是6
(float)(5) 最终值是5.000000 6个0
试数
1 不要问为什么
把自己当计算机一步一步的执行,计算机不知道你代码有什么功能他只会执行代码
2 不要把某一部分给省略了
3 写整齐
浮点数的存错所带来的问题
float和double都不能保证可以精确的存储一个小数
如用2.0 用他的编码存入计算机可能是一个2.199999相近的值,也可能有些数能准确的存
举例:
有一个浮点型变量x,如何判断x的值是否是零
if (|x-0.000001| <= 0.000001)
是零
else
不是零
为什么循环中的更新变量不能定义成浮点型
因为浮点型是非准确存储 如2.0 用他的编码存入计算机可能是一个2.199999相近的值
如 for (i=1.0; i<=100;++i) 在++i的时候如加到100时,存在内存中可能是100.000001这个值
就少了一次循环所以不能更新变量不能用浮点型
8 练习题
求1到100之间的奇数之和 和用变量sum
for (i=1; i<101; ++i)
if (i%2 == 1) //1%2=余数1 2%2=0 判断是否是偶数,偶数能整除余数为0
{
printf("%d\n", i);
sum +=i; //sum = sum + i;
}
printf("sum = %d\n", sum);
求1到100之间的奇数个数 个数用cnt 是count 卡特的缩写
int i;
int cnt = 0;
for (i=1; i<101; ++1)
if (i%2 == 1)
{
++cnt;
}
printf("%d\n", cnt);
求1到100之间的奇数平均数 平均数 avg 是average 的缩写 鸭瑞句
int i;
int sum = 0;
int cnt = 0;
float avg=0; //是average的缩写
for (i=1; i<101; ++i)
{
if (i%2 == 1)
{
sum +=i;
++cnt;
}
}
avg = 1.0*sum / cnt; //如果有警告 1.0默认是double类型 ,将double赋值给float类型会丢失数据
printf("%d\n", sum);
printf("%d\n", cnt);
printf("%f\n", avg);
求1到100之间的奇数之和,在求1到100之间的偶数之和
Alt+f8 规范对齐代码 熬特
if 常见问题解析
1 空语句的问题
if (3 > 2);
等价于
if (3 > 2)
; //这是一个空语句
2
if (表达式1)
A;
else
B;
是正确的
if (表达式1);
A;
else
B;
是错误的
3 if (表达式1)
A;
else if (表达式2)
B;
else if (表达式3)
C;
else
D
即便表达式1和2都成立,也只会执行A语句
4 if (表达式1)
A;
else if (表达式2)
B;
else (表达式3)
C;
这样写语法不会出错,但逻辑上有漏洞
5 if (表达式1)
A;
else if (表达式2)
B;
else if (表达式3)
C;
else (表达式4) // 7行
D;
这样写是不对的,正确的写法是:
要么去掉7星的(表达式4)
要么在7行的else 后面加if
如果else加了表示式了前面就要加if判断,因为去掉if就能判断表达式那就可以不用写else if了
else ()
如果else 有加(表达式)就要加if 要不会出错
6 if (表达式1)
A;
else if (表达式2)
B;
else if (表达式3)
C;
else (表达式4); //
D;
这样写语法不会出错,但逻辑上是错误的
else (表达式4);
D;
等价于
else
(表达式4);
D;
循环
定义:
某些代码被重复执行
分类
for
1格式
for(1; 2; 3)
语句A;
2 执行的流程[ 重点]
3 for的范围问题
4 举例:
1+2+3+.....+100
???????????????????????????????????????????????????????????????????第八课
1+1/2+1/3+.....1/100
int main(void)
{
int i;
float sum = 0;
for (i=1; i<=100; ++i)
{
sum = sum + 1.0/i; //这样是OK的 推荐使用
//sum = sum + (float)(1/i) 这样写是不对可以自己算下
//也可以这样写: sum = sum + 1/(float)(i); 不推荐
}
printf("sum = %f\n", sum);
return 0;
}
试数 按上面的代码
1 不要问为什么
把自己当计算机一步一步的执行,计算机不知道你代码有什么功能他只会执行代码
2 不要把某一部分给省略了
3 写整齐
4 一般写4行,也可以在纸上试
1 i=1 1<100 成立
sum=0+1/1.00=1 ++i i=2
2 i=2 2<100 成立
sum=1+1/2.00=1 ++i i=3
3 i=3 3<100 成立
sum=1+1/2.00+1/3.00=1 ++i i=4
...................................省略
----------------------------------------------------------------------------
break和continue 不瑞课 肯天妞
强制类型转化
格式:
(数据类型)(表达式) 注意表达式可不括起来但是最好括起来因为在其他语言通用还好看
功能:
把表达式的值强制转化为前面所执行的数据类型
例子:
(int)(4.5+2.2) 最终值是6
(float)(5) 最终值是5.000000 6个0
试数
1 不要问为什么
把自己当计算机一步一步的执行,计算机不知道你代码有什么功能他只会执行代码
2 不要把某一部分给省略了
3 写整齐
浮点数的存错所带来的问题
float和double都不能保证可以精确的存储一个小数
如用2.0 用他的编码存入计算机可能是一个2.199999相近的值,也可能有些数能准确的存
举例:
有一个浮点型变量x,如何判断x的值是否是零
if (|x-0.000001| <= 0.000001)
是零
else
不是零
为什么循环中的更新变量不能定义成浮点型
因为浮点型是非准确存储 如2.0 用他的编码存入计算机可能是一个2.199999相近的值
如 for (i=1.0; i<=100;++i) 在++i的时候如加到100时,存在内存中可能是100.000001这个值
就少了一次循环所以不能更新变量不能用浮点型
8 练习题
求1到100之间的奇数之和 和用变量sum
for (i=1; i<101; ++i)
if (i%2 == 1) //1%2=余数1 2%2=0 判断是否是偶数,偶数能整除余数为0
{
printf("%d\n", i);
sum +=i; //sum = sum + i;
}
printf("sum = %d\n", sum);
求1到100之间的奇数个数 个数用cnt 是count 卡特的缩写
int i;
int cnt = 0;
for (i=1; i<101; ++1)
if (i%2 == 1)
{
++cnt;
}
printf("%d\n", cnt);
求1到100之间的奇数平均数 平均数 avg 是average 的缩写 鸭瑞句
int i;
int sum = 0;
int cnt = 0;
float avg=0; //是average的缩写
for (i=1; i<101; ++i)
{
if (i%2 == 1)
{
sum +=i;
++cnt;
}
}
avg = 1.0*sum / cnt; //如果有警告 1.0默认是double类型 ,将double赋值给float类型会丢失数据
printf("%d\n", sum);
printf("%d\n", cnt);
printf("%f\n", avg);
求1到100之间的奇数之和,在求1到100之间的偶数之和