Else语句的悬空问题,else总和距离最近的if语句匹配
高质量编程
为了避免if 语句有时候写错只有一个=号,可以把变量放在右侧,因为赋值表达式不支持常量在左边,编译器会报错来提醒你
关系符不能连用,如果是关系符连用应该是这样算(18 <= x <=40)
如果x=10,先算18<=x,为假,在置为0,再算0《=40.结果为真,代码可以成功编译逻辑可能是错 的
条件操作符(三目操作符):E1 ?2 E : E3
1为真则将2作为整个表达式结果,为假则3为结果
例题求取最大值,a > b? a’ : b
逗号表达式,从左到右依次计算,最后一个表达式的值是整个表达式的值
感叹号加变量可以起到取反效果,如果a = 0 !a = 1,a = N,!a = 0;
所谓算法其实就是思维
闰年要求:能被4整除不能被100整除的是润年
能被400整除的是闰年
短路求值:只要左边表达式能确定表达式结果,则不计算右边表达式!!!!注意,此处易错。A++&&b++&&c++则当A=0了,发生短路,后面的B,C并不会产生++操作
30000行代码可以找到一份月薪15000的工作,那么一行代码就值五毛钱
Swicth循环基本用法
Switch(E)
{
Case 1 :
Statement1
Break;
…
Default:statement
}
注意case和匹配数之间要用空格隔开,否则会被认为是未被引用的标识符。Swictth的基本原理是通过表达式的结果在case语句中寻找可以匹配的入口,此时需要break来跳出循环,否则会一直按顺序向下运行输出所有结果
注意:swicth后面必须接整形表达式,case 后面必须接常量;不能有float,double,case 后不能有变量,最多是常量表达式。
字符是在内存中存储是整形,则switch语句可以用字符
注意:default和case 之间没有顺序要求
While 循环逆序打印把N作为循环判断条件
和正序打印,1到100间三倍数的和
一个循环的知识主要包括初始化,调整,判断。一般顺序是初始化,判断,执行,调整
在C++的自定义类型上++I比i++效率更高,其他场合大差不差
Do while循环:先执行完之后再判断,而while是判断再执行,所以dowhile至少执行一次
注意调整语句和执行语句的顺序,一旦颠倒,可能影响结果,一般调整语句放置在语句模块末尾
注意语句break和continue。Continue语句可能会造成死循环,因为其会跳过调整语句, ,此时只需把调整语句放置在continue语句前即可,但是要小心可能会造成表达效果缺失,是否有导致死循环就看调整语句在哪
找出素数的算法
Goto语句容易死循环形式
Goto 标志词;
标志词:
跳转到标志词的地方
猜数字游戏
随机生成数字
Rand()范围在0-rand_max32767#include <stdlib.h>
所谓rand函数是伪随机,根据种子这一基准值默认生成一组序列,所以不改变种子的话每次生成的值会相同,这是伪随机。所以想让rand更加随机则需要改变种子
为了改变rand函数的种子或者说基准值,我们需要使用到设置rand函数种子的函数srand
形式为:Srand(种子);种子类型要求为无符号整型
我们想·让种子作为一个随机数,那么我们借用time函数,头文件为<time,h>
当函数参数为空指针时,返回time_t类型数据可能是32未也可能是64位,所以使用时建议使用强制类型转换,函数返回一个时间戳代表从1970到现在的时间间隔单位为妙
最后让我们来讨论设置随机数范围,rand()是生成的随机数那么
Rand%a 0-a-1
Rand%a +1 1-a
100-200
100+rand%101
a-b
a + rand%(b-a+1)
设计思路
菜单 ——》游戏——》限制
总结:
其他:Else语句的悬空问题,else总和距离最近的if语句匹配
2.高质量编程
3.为了避免if 语句有时候写错只有一个=号,可以把变量放在右侧,因为赋值表达式不支持常量在左边,编译器会报错来提醒你
4.关系符不能连用,如果是关系符连用应该是这样算(18 <= x <=40)
5.在C++自定义类型上语句i++和++i效率有区别,但是现如今环境大差不差
操作符:
1.三目操作符:
形式为E1 ? E2 :E3
当1为假取3
当1为真取2
2.逗号表达式,形如E1 ,E2 ,E3, E4 ,E5从左到右会一次计算,但是表达式的值为最后一个表达式的计算结果。
3.闰年算法
条件一 能被4整除但是不能被100整除
条件二 能被400整除
4.switch结构
Switch()
{
Case 1:
Break;
Default:
Break:
}
解析:本质上switch括号里的表达式是选择入口,只能结果只能是整型或者是字符(因为字符在内存中使用整型来存储也算整形一员)case后面只能接整形变量。原理表明,default和case的顺序没有要求,但是如果没有break语句,程序在循环中会一直向下循环
循环:
1.循环条件一般包括初始化,判断,语句,调整
2.关于goto语句
形式为
Goto E;
E:
一般用于跳出多重循环。重复使用容易造成代码混乱;
3.关于continue语句,本意为跳过当前循环,但是使用不当容易造成死循环,应注意把调整语句放在continue语句之前
4.寻找素数算法:双重循环嵌套即可
5.逆序输出,顺序输出算法:
逆序输出需要取模,在除以10
顺序输出需要多定义变量,先找到最高位数,再取模,再除以10
猜数字游戏:
1.rand()函数头文件#include <stdlib.h>
默认默认种子为1,产生一组固定随机数。
2.srand()括号内用于改变种子
3.time()当括号内是空指针时返回一个时间戳,其意义是现在到1970的秒数差值,但还是需要强制类型转换为无符号整数
4.rand()的范围问题:a +r()%(b+1)
范围是a – a+b
比特作业:
1. int i = 0;
for (i = 0; i < 10; i++)
{
if (i = 5)
printf("%d ", i);
}死循环打印5原因
:
原因出在if语句的赋值运算符,它使得if语句恒为真,而且一直把5赋值给i,无法跳出循环
2.比较三个数的最佳算法
3. B.if语句中0表示假,1表示真
36

被折叠的 条评论
为什么被折叠?



