1.1.1 课前练习
都说C 语言很难学,但是只要你稍微有点数学基础和逻辑知识,你会发现C其实也不难
1、 写出下列式子的计算结果
2、 一件商品单价20块钱,那么100块钱可以买几件?130块钱呢?还剩多少钱?
1.1.2 算术表达式
计算机程序语言的设计目的就是为了解决实际问题,下面我们就开始从简单的问题开始解决吧。
我们最熟悉的是数学问题,最简单的数学问题就是整数的四则运算,也就是加、减、乘、除四种运算。下面就我们如何让程序替我们计算一个数学表达式的值。
课堂实验1:编译expression1.c查看其运行结果
下面介绍各数学运算的具体规则
+ - *和普通的加减乘法意义一致,他们都叫二元运算符。这里的二元是指参与运算的操作数有两个。
取反- 是一个一元运算符,用于将表达式编号
课堂实验2:修改expression1.c, 输出下面式子的运算结果,并和手工计算的结果比较一下
-(1+2)*(4-5)
除法/和取模%, 分别求商和余数。比如对10/3=3 ,10%3 =1
但是如果除数是负数,先把除数变号求商,然后再将商变号。10 / (-3) = -3,10% (-3 )= -1。
课堂实验3:修改expression3.c, 输出下面式子的运算结果,并和手工计算的结果比较一下
-(1+2)*(4-5)/(6-3)%(7-9)
1.1.3 变量
我们可以将表达式的结果存到变量中。
变量的声明形式: 变量类型 变量名
实例 1
int x; /*声明一个变量x, 值不定, 注意结尾处的分号!*/
实例 2
int x =1; /*声明一个变量x, 值为1 */
1.1.4 赋值
(1)x = 3; /*用简单的数字表达式赋值/
(2)x = 3+2; /*用算术表达式赋值*/
(3) int x =3;
x = x*2; /*将x自己加倍*/
1.1.5 复合赋值
相当于计算和赋值的“缩写”
x += y; 相当于x = x+y;
x -= y; 相当于x = x-y;
x *= y; 相当于x = x*y;
x += y; 相当于x = x+y;
x /= y; 相当于x = x/y;
(注明:反过来也是一样的,比如y+=x;相当于y=y+x; 举例:若x=1;y=2;y+=++x; 则相当于y=y+(++x);x=2 ;y=4 ; 若y-=++x; 那么x=2;y=0; )
y+= x; 相当于y=y+x;
y-= x; 相当于 y=y-x;
y*= x; 相当于y=y*x;
y/= x; 相当于y=y/x
1.1.6 自增和自减
++x 相当于x +=1;(也相当于x=x+1 老师补充的)
--x 相当于 x -=1;
x++和x--则先返回旧值,再更新x。
课堂练习1:请说出每组语句执行后x和y的值
(1)int x=1 ; int y = ++x; x=2;y=2;
(2)int x=1 ; y = --x; x=0;y=0;
(3)int x=1 ; y = x++; (也相当于y=x, ++x 老师补充的)x=2;y=1;
(4)int x=1 ; y = x--; x=0;y=1;
课堂练习2: 用程序验证上面的4个表达式计算结果
1.1.7 变量的起名规则(不完整,完整的见下一节具体介绍)
(1)以字母或者下划线开头
(2)只能包含字母、数字或者下划线
(3)变量名字的长度受具体编译器的限制
(4)本课程要求变量名全部用英文单词或者字母,
1.1.8 小结
printf函数里的%d是用于输出整数的格式字符,\n是回车和换行。大家要熟悉它们的用法。(printf是哪两个单词的缩写? Print format格式化输出或带格式输出
%d中的d是什么单词的缩写? decimal 十进制)
(1)本课介绍了六种表达式,他们的返回类型都是整型:
(a)算术表达式 (b)逻辑表达式 (c)关系表达式 (d)赋值表达式
(e)自增和自减运算 (f)算术赋值表达式
自己要能举出每种表达式的实际例子
(2)%运算就是将两个数均变为正数,然后求余,再决定余数的符号。关于余数理论的深入讨论,见数论课程。
(3)本节中介绍的取反-、自增++、自减—都是单目运算符,其他的都是双目运算符(二元运算符)
(4)变量和常量的起名一定要直观,便于对代码的阅读维护,这是“与人方便,于己方便”。
(5)本节的表达式语句和声明语句都必须以;结尾。
自己补充:
y=++x;(x自身加1然后再去运算y)
y=x++;(先返回旧值,再执行自身的++x;比如,如果x=1的话,那么y=x++=1,x=++x=2)
商:如果除数是负数,先把除数变号求商,然后再将商变号。
余数的正负号用这个公式 余数=被除数-除数*商 去套就不会错了。
(一种更简单的方法:还是都变正,符号由被除数决定)
公式:a=(a/b)*b+ a%b
a%b = a -(a/b)*b
不管是整型int 还是变量 都要printf后面的值前后一致,否则错误。
赋值公式要记熟!以后复合运算要用到。