1.求平均值
●写一个程序,输入两个整数,输出它们的平均值
int a , b ;
scanf ("% d % d ", & a , & b );
double c = ( a + b )/2.0;
printf ("% d 和% d 的平均值=% f \ n ", a , b , c )
2. 运算符优先级
优先级 | 运算符 | 运算 | 结合关系 | 举例 |
1 | + | 单目不变 | 自右向左 | a*+b |
1 | - | 单目取负 | 自右向左 | a*-b |
2 | * | 乘 | 自左向右 | a*b |
2 | / | 除 | 自左向右 | a/b |
2 | % | 取余 | 自左向右 | a%b |
3 | + | 加 | 自左向右 | a+b |
3 | - | 减 | 自左向右 | a-b |
4 | = | 赋值 | 自右向左 | a=b |
注意:1赋值的运算级比所有的运算级都低 。 eg:a=b+5 表示先计算b+5的值,再将该值赋予给a
2.单目的运算级高于乘除。单目只作用于一个变量。
3.赋值运算符
对C语言来说,赋值为一个运算符,但对于其他语言不一定是。
●赋值也是运算,也有结果
● a =6的结果是 a 被赋予的值,也就是6
● a = b =6一> a =( b =6)
但是我们不应写 “嵌入式赋值”赋值运算符
int a =6
int b ;
int c = 1+(b=a);
●不利于阅读
●容易产生错误
4.结合关系
●一般自左向右
●单目+﹣和赋值=自右向左
result = a = b = 3 + c ;
result =2;
result =( result = result *2)*6*( result = 3 + result );我们不应写出这么复杂的表达式,程序会出现错误,表达式要简单化。
5.交换变量
交换两个变量
●如果已经有:
int a =6;
int b =5;
问:如何交换 a 、 b 两个变量的值?
程序是按步执行的
●程序表达的是顺序执行的动作,而不是关系,解1.是错误的。
解1: a = b ; b = a ;
是依次执行的,结果使得 a 和 b 都得到 b 原来的值。
解2:t=a a=b b=c 是正确的。
#include <stdi.h>
int main()
{
int a=5;
int b=6 ;
int t;
t=a;
a=b;
b=t;
printf("a=%d,b=%d\n", a,b);
return 0;
}
我们可以通过调试运行知道了解该过程
6.复合赋值
●5个算术运算符,+-*/%,可以和赋值运算符“=”结合起来,形成复合赋值运算符:“+=、“=、*=”、“/=”和“%=”
● total +=5;
● total = total +5;
●注意两个运算符中间不要有空格
7.递增递减运算符
●“”++”和“”﹣”是两个很特殊的运算符,它们是单目运算符,这个算子还必须是变量。这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者﹣1。
● count ++;
● count += l ;
● count = count + l ;
8.前缀后缀
●++和﹣﹣可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。
● a ++的值是 a 加1以前的值,而++ a 的值是加了1以后的值,无论哪个, a 自己的值都加了 I 了。
也就是:a++: a++=a , a=a+1
++a: a=a+1 , ++a=a
#include <stdio.h>
int main()
{
int a;
a = 10;
printf("a++=%d\n", a++);
printf("a=%d\n", a);
printf("++a=%d\n", ++a);
printf("a=%d\n", a);
return 0;
}
运行结果是:a++=10 a=11 ++a=12 a=12
前缀后缀运算
表达式 | 运算 | 表达式的值 |
count ++ | 给 count 加1 | count 原来的值 |
++ count | 给 count 加1 | count +1以后的值 |
count-- | 给 count 减1 | count 原来的值 |
--count | 给 count 减1 | count -1以后的值 |
++--
●这两个运算符有其历史来源
●可以单独使用,但是不要组合进表达式
●++i ++-->?
●i++++——>?
● a = b += c ++- d +-- e /- f