控制程序流:顺序、循环、分支;
注意:
scanf()函数返回值为读入元素的个数,故大于等于0;
计算机内都是用补码,正数的补码是其自身,~(数)实际就是对该数的补码取反,之后再反推回原码。总结下来,就是对原来数的补码(包括符号位)都进行了取反,!!!正整数取反是加一后的负数,负整数取反是加一后的正数!!!!
取反时符号位不变;
再编程前可以通过伪代码来表示程序的思路;
==是关系运算符,关系运算符<、<=、>、>=、==、!=;
关系运算符可以用来比较整数、浮点数、字符,不能用于比较字符串;
可以用声明在<math.h>文件中的fabs()函数来返回一个浮点数的绝对值;
设置死循环while(1) {},注意在C语言中真的概念比假的宽,测试条件一般只要非0都为真(甚至包括负数),0为假;关系表达式为真求值为1,假为0;
为了避免混淆,在使用关系运算符==比较是否相等时,将常量放在左侧;
C语言中,非零一律为真,零为假;
C99新增加了_bool类型,在头文件<stdbool.h>中,bool成为类型_bool的别名,而且把true和false分别定义为了 1和0的符号常量;包含该头文件可以与C++兼容,因为c++把bool true false定义为了关键字;若系统不支持_bool类型,可用int代替;
关系运算符优先级低于(+\-),高于=;
while循环语句:
每次循环都被称为一次迭代;
while循环执行结束在第一个分号或者花括号,故特别注意测试条件后面是空语句,只有一个分号的情况;
for循环语句:
格式for(初始化;测试;更新) {};
在里面使用逗号运算符,可以对多个变量初始化或者 测试 更新;
注意注意,第3个更新是每次执行完下面话括号内的,也就是该次循环结束时才求值;
第1个只执行最初的一次,省略第2个被视为真;
与=优先级相同的其它赋值运算符:+=、-=、*=、/=、%=;
逗号运算符标志从逗号左边往右执行;
do while 循环语句:
格式do{}while();
注意:
入口条件循环指循环体可能一次都不会执行,如while、for,出口条件循环循环体至少被执行一次do while;
一般入口条件循环用的多,不包含初始化和更新语句时,优先用while,否则用while;
函数pow(),只能处理正整数的幂,可以使用浮点指数,位于<math.h>库;
为啥自定义的函数调用前现需要声明函数原型而scanf()、printf()不用,因为他们的函数原型已经包括在<stdio.h>库中了;
scanf()在读到非数字字符,就会返回0;
素数指的就是没有能够整除它的约数的数(从2开始);
制表符\t
是C++的转义符,相当于键盘上按下TAB键之间的距离,将光标移到最接近8的倍数的位置,使得后面的输出从此开始;
if分支语句:
格式if() {},与while很像,区别在于满足条件只会执行一次;
if()
{}
else if()
{}
else
{}
字符输入/输出 预处理宏:
getchar()不带任何参数,从输入队列返回下一个字符;
putchar()打印它的参数。均定义在<stdio.h>库;
<ctype.h>库包含一系列处理字符的函数原型,这些函数接受字符作为参数,如isalpha()函数的参数是一个字母则返回非零值(真),否则返回零(假);
逻辑运算符:
&& || !,在 <iso646.h>库中新增的备用拼写,and or not;
逻辑运算符求值顺序是从左往右,一旦存在假立即停止求值;
条件运算符:
需要3个运算对象;经常有条件表达式来代替if esle语句,使程序更为简洁 ?:
格式为expression1 ? expression2 : expression3
循环辅助语句:countinue和break:
countinue是跳过本次迭代的剩余部分,开始下一次迭代;
break是直接退出该循环,继续向下执行;
注意:
写二选一的程序考虑if语句/条件运算符;多选一用switch语句;
<ctype.h>系列的toupper()函数,用来将字符转换成大写;用于switch时,可以避免重复标签;
要实现只能选择一般用:if、if else、switch、?:
getchar()、putchar(0每次只能处理一个字符;
switch多重选择语句:
格式switch()括号内必须为整数值(包括char),case标签也一样,标签若为表达式,那边大师也只能是整型常量 不能为变量;
程序根据switch()括号内的值跳转至对应case标签处,若没有break则执行完所以剩下语句,若有则重新定向。
如果switch嵌套于循环语句,则可以使用continue语句,因为该语句只能用于循环中。但是,break语句可以在循环与switch中使用。
如果需要根据浮点型的变量或表达式来选择则无法使用switch,用if;
switch只能是整型,浮点型用if,
(大脑不是一味用来记忆的,而是用来产生想法的)