1.表达式计算
- ⼀个表达式是⼀系列运算符和算⼦的组合, ⽤来计算⼀个值
- amount = x * (1+0.033) * (1+0.033) * (1+0.033);
- total = 57;
- count = count +1 ;
2.运算符
- 运算符(operator)是指进⾏运算的动 作,⽐如加法运算符“+”,减法运算符 “-”。
- 算⼦(operand)是指参与运算的值,这 个值可能是常数,也可能是变量,还可能 是⼀个⽅法的返回值
2.1
- int sides = 4;
- sides = 7;
- sides = sides +5; 算子
3. 计算
- result = 12 + 6 / 2;
- result = (12 + 6) / 2;
- result = 4 * ((12 – 4) / 2);
4. 计算时间差
输⼊两个时间,每个时间分别输⼊⼩时和 分钟的值,然后输出两个时间之间的差, 也以⼏⼩时⼏分表⽰
#include <stdio.h> int main() { int hour1, minute1; int hour2, minute2; scanf("%d %d",&hour1, &minute1); scanf("%d %d",&hour2, &minute2); int t1 = hour1*60 + minute1; int t2 = hour2*60 + minute2; int t = t2 - t1; printf("时间差是%d小时%d", t/60, t%60); return 0; }
- hour1*60+minute1---》转换为分钟为单位
- t/60----->小时的部分;t%60---->分钟
5. 求平均值
#include <stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); double c=(a + b)/2.0; printf("%d和%d的平均值=%f\n",a,b,c); return 0; }
6.运算符优先级
7. 单目运算符
只有⼀个算⼦的运算符:+、-
8. 赋值运算符
- 赋值也是运算,也有结果
- a=6的结果是a被赋予的值,也就是6
- a=b=6 —> a=(b=6)
9. “嵌⼊式赋值”
int a = 6;
int b;
int c = 1+ (b=a);
- 不利于阅读
- 容易产生错误
10. 结合关系
result = a = b = 3 + c;
result = 2;
result = (result = result * 2) * 6 * (result = 3 + result);
这样的表达式太复杂,不容易阅读和理解,容易造成读程序时的误解。所以,要避免写出这样的复杂表达式来的。这个表达式应该被拆成诺干个表达式,然后以明显的正确的顺序来进行计算。
11. 计算复利
- 在银⾏存定期的时候,可以选择到期后⾃ 动转存,并将到期的利息计⼊本⾦合并转 存。如果1年期的定期利率是3.3%,那么 连续⾃动转存3年后,最初存⼊的x元定期 会得到多少本息余额?
- 本息合计 = x(1+3.3%)^3
#include <stdio.h> int main() { int x; scanf("%d",&x); double amount = x * (1 + 0.033) * (1 + 0.033) * (1 + 0.033); printf("%f", amount); return 0; }
要计算任意年以后的本息金额,就需要做(1+0.033)^n的计算
#include <stdio.h> int main() { int year,i; double money,total=0,rate=0.033; printf("请输入您的本金:\n"); scanf("%lf",&money); printf("请输入您要存的年数:\n"); scanf("%d",&year); for(i=1;i<=year;i++) { total=(1+rate)*money; //该年的本息和 money=total; //下年的本金换算成本年的本息和 } printf("%d年后,你的本息和为%f。\n",year,total); return 0; } /* 这是一个计算复利的程序 变量 本金money 每年利率rate 多少年year 多少年后的本息合计total 初始化rate=0.033 输入本金数 将其存入money 循环 */
12.交换两个变量
如果已经有
int a = 6;
int b = 5;
如何交换a、b两个变量的值?
程序是按步执⾏的
程序表达的是顺序执⾏的动作,⽽不是关系a=b; b=a;,是依次执⾏的,结果使得a和b都得到b原来的值
交换
int t = a;
a = b;
b = t;
13.复合赋值
- 5个算术运算符,+ - * / %,可以和赋值运 算符“=”结合起来,形成复合赋值运算符 :“+=”、“-=”、“*=”、“/=”和“%=”
- total += 5;
- total = total + 5;
- 注意两个运算符中间不要有空格
复合赋值
- total += (sum+100)/2;
- total = total + (sum+100)/2;
- total * = sum+12;
- total = total*(sum+12);
- total /= 12+6;
- total = total / (12+6);
14.递增递减运算符
“++”和“--”是两个很特殊的运算符,它们 是单⺫运算符,这个算⼦还必须是变量。 这两个运算符分别叫做递增和递减运算符, 他们的作⽤就是给这个变量+1或者-1。
count++;
count += 1;
count = count + 1;
前缀后缀
++和--可以放在变量的前⾯,叫做前缀形 式,也可以放在变量的后⾯,叫做后缀形 式。
a++的值是a加1以前的值,⽽++a的值是加 了1以后的值,⽆论哪个,a⾃⼰的值都加 了1了。
++--
- 这两个运算符有其历史来源
- 可以单独使⽤,但是不要组合进表达式
- ++i++ -->?
- i++++ —>?
- a = b+=c++-d+--e/-f