---------培养清晰的运算思维
准备数据(定义清晰‘类型’的变量)--------处理数据(分别整理所需数据,公式)-----------输出结果
流程图: start(开始-----Data(准备数据)-----Process(处理数据)----Terminator(输出结果)
编译时的问题:错误 --- 语法错误 ; 警告 --- 语法不合适
运行时的问题:逻辑问题 --- 调整思维
首先关于“%c”输出以及char存储变量的问题。 因为字符型数据占一字节,所以输出只能为一字节。 eg:char a=‘abc’ : printf(“%c”,a)--- 为 c ,%d=c(char存储一字节) 若int a=‘abc’---%c依旧输出为c,但是%d=abc(int四字节)
然后,对于转义字符的了解
特别注意:\t---8格(包括所占的字符,且光标跳到8格之后的第一位) ; \b---退格(若前面为\n或是一个字符,就变成取消换行,和退掉字符) ; \r--移到本行开头(替换开头字符) ; \\----“\”(打印路径常用) ; \ddd---八进制代表的字符(“\133”输出为“[“)
字符类型的常量形式----‘a’=‘\141’(八进制)='\x61'(十六进制)
主要用到一个ASCII表的查询和了解(在vim中,指令“man ascii”打开ASCII表)
算术类型:+ - * / %(取余) ++(自增) --(自减)
运算符:由运算符 和 运算数 构成字符序列 组成 (1+2)
注意:浮点型(float/double)不能用于求余的运算 ; 求余运算后位不能为0
从右向左-------必转 ; 从下到上::低精度类型与高精度类型混合运算时,低到高
强制类型转换:(类型)表达式 eg:(float)10--------10.0(转换为浮点型)
浮点型不能做求余运算 ; 求余运算 第二操作数 不能是 0 ; 求余运算的结果的符号取决于左操作数的符号(eg:-4%3=-1 ; 4%-3=1)
用法:1.判断奇数偶数 (a%2,结果只能为1/2) ;
2.抽题的程序 (用到工具,但是a%100就可以生成任意的两位数),代码如下(50~100)
#include
#include
#include
int main(void)
{
int i = 0; //初始化
srand(time(NULL)); //调用时间,重复生成随机数字
for (i = 0; i < 10; ++i) //循环(10次)
{
printf("%d\n",rand()%50+50); //随机数%50---任意的0~49内的随机数+50------50~99的 } 随机两位数
return 0;
}
注意:i++ //先用(表达式的结果) 后加 i ; ++i //先加i,后用 (表达式的结果)
浮点数也能自增自减 ; ++,--运算数 必须是左值 (变量---可以&到的值)
左值 (lvalue -- locationable) //可定位的 ---能不能被定位到 (&)
printf("%d%d\n",i,++i)是错误的 ,会有不确定的运算,要写成:printf("%d\n",i(或者i++))
constant -----常量的意思,也就是右值,同样 匿名变量和表达式也是右值
贪心原则:从左到右逐个字符的扫描表达式,看这些字符能否,尽可能多的结合成c的运算符
不能结合,就还是字符本身。eg:i+++++i --------- i ++ ++ + i ------------ i++ ++ +i --------
(((i++)++) + i) -------- i++ 是一个 表达式(i自增),所以是个右值,无法运算
+= -= *=
a += 1 ------ a = (a + 1)