运算符与表达式、算法

文章目录

  • 一、运算符和表达式
    • 1.运算符
    • 2.表达式
    • 3.注意事项
    • 4.算术运算符
    • 5.算术运算符的优先级与结合性
  • 二、赋值运算符
    • 1.变量=表达式
    • 2.复合赋值运算符
  • 三、逗号运算符与表达式
    • 1.表达式1,表达式2,.....表达式n
    • 2.优先级
  • 四、关系运算符与关系表达式
    • 1."真"或"假"用数值来表现
    • 2.关系运算符
    • 3.说明
  • 五、逻辑运算符及逻辑表达式
    • 1.逻辑运算符
  • 六、程序的最小独立单元---语句(语句类型)
    • 1.表达式语句:表达式;
    • 2.函数调用语句:函数名(参数列表)
    • 3.空语句: ;
    • 4.复合语句(块语句):{}
    • 5.流程控制语句
  • 七、练习


一、运算符和表达式

1.运算符

符号:+,-,*,/,%,++,–

2.表达式

由运算符与操作数组合而成的,如:a+b,c=3

3.注意事项

运算符不能相邻,乘号不可以省略,可以用括号表示运算的次序

4.算术运算符

+(加),-(减),*(乘),/(除),%(取余),++(自加),–(自减)

/:若两侧的操作数是整形,则结果也取整形
%:两侧的操作数必须是整形
++:自增1
++x或x++都是x=x+1的一种写法
区分下面两个表达式
y=x++分解y=x -> x=x+1
y=++x分解x=x+1 -> y=x
自减与自加同理

5.算术运算符的优先级与结合性

(优先级最高)是括号里的先运算
(优先级非常低)赋值 =

二、赋值运算符

1.变量=表达式

先计算右边表达式的值,再将该值赋给左边的变量允许连续赋值

int a,b,c,d;
a=b=c=d=8;

允许赋值运算符出现在表达式中

int x,m,n;
x=(m=8)+(n=9);

2.复合赋值运算符

+=,-=,=,/=,%=
说明:右结合性
例:a
=b+5 相当于a=a*(b+5)
m+=8 相当于 m=m+8

三、逗号运算符与表达式

1.表达式1,表达式2,…表达式n

先求表达式1,再求表达式2,依次求,知道最后一个表达式n,整个表达式的值是最后一个表达式的值

2.优先级

(优先级非常低)赋值运算符
(优先级最低)逗号运算符

int a;
a=3*5,a*4;
结果a=15
int a;
a=(a=3*5,a*4)
结果a=60

四、关系运算符与关系表达式

1."真"或"假"用数值来表现

“真”:非0
“假”:0

2.关系运算符

<,>,<=,>=,==,!=

3.说明

浮点型不推荐使用==和!=因为由误差
关系运算符优先级比算数运算符优先级低

x+5>y+7相当于(x+5)>(y+7)

五、逻辑运算符及逻辑表达式

1.逻辑运算符

!(非),&&(与),||(或)

x>1且x<9
表示 (x>!)&&(x<9)
x<0或x>10
表示 (x<0)||(x>10)

六、程序的最小独立单元—语句(语句类型)

1.表达式语句:表达式;

运算符表达式语句:如 x++;
赋值语句:如 a=5;

2.函数调用语句:函数名(参数列表)

如 printf("%d",a);

3.空语句: ;

如 for(;; )

4.复合语句(块语句):{}

if(a>b)
{
t=a;
a=b;
b=t;
}

5.流程控制语句

结构化语句
顺序结构
分支结构(if,switch)
循环结构(for,while,do…while)
非结构化语句:特殊的跳转(break,continue)

七、练习

1【单选题】若x、i、j、k都是int型变量,则计算下面表达式后,x的值为( )
x=(i=4,j=16,k=32) .

A、4
B、16
C、32
D、52
正确答案: C

2【单选题】int a;double b;float c;char k;则下面表达式a/b+c-k值的类型为( )。
A、int
B、double
C、float
D、char
正确答案: B

3【单选题】若变量已正确定义并赋值,下面符合C语言语法的表达式是()
A、m:=5
B、c=b=a=1
C、float 8%5
D、x+5=y+2
正确答案: B

4【单选题】下列程序运行的结果是( )。

main( )

{ float x;

int i;

x=3.6;

i=(int)x;

printf("x=%f,i=%d ",x,i);}

A、x=3.600000,i=3
B、x=3.6,i=3
C、x=3,i=3
D、x=3.600000,i=3.000000
正确答案: A

5【单选题】以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C语言表达式是( ).

A.x/yz B.x(1/(yz)) C.x/y1/z D.x/y/z

正确答案: A

6【单选题】以下选项中,与k=n++完全等价的表达式是( )
A、k=n,n=n+1
B、n=n+1,k=n
C、k=++n
D、k+=n+1
正确答案: A

7【单选题】若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。
A、2.500000
B、2.750000
C、3.500000
D、0.000000
正确答案: A

8【单选题】
设有定义:int x=2,以下表达式中,值不为6的是 ( )。
A、x*=x+1
B、x*=(x+1)
C、x==6
D、x+=5
正确答案: D

9【单选题】程序的执行结果是( )
main()

{ int sum,pad;

sum=pad=5;

pad=sum++;

pad++;

++pad:

printf(“%d\n”,pad);

}

A、7
B、6
C、5
D、4
正确答案: A

10【单选题】设int a=2,b=2,则++a+b的结果是( )。
A、2
B、3
C、4
D、5
正确答案: D

11【单选题】设int n=3;则printf(“%d”,++n)的输出结果是( )。
A、2
B、3
C、4
D、5
正确答案: C

12【单选题】设n=10,i=4,则运算n%=i+1执行后,n的值是( )
A、0
B、3
C、2
D、1
正确答案: A

13【单选题】以下正确的C语言标识符是( )

A)%X B)a+c C)a123 D)TEST!

A、%X
B、a+c
C、a123
D、TEST!
正确答案: C

14【单选题】以下不正确的C语言标识符是( )
A、ABC
B、abc
C、a_bc
D、ab.c
正确答案: D

15【单选题】已知int k;float m=-3;执行语句k=m%2;后,变量k的值是()
A、-1
B、0
C、1
D、语句有错误
正确答案: D

16【单选题】已知:int x=3,y;执行下述3条命令后,结果为()

x++;

y=x++;

printf(“x=%d,y=%d”,x,y);

A、x=5,y=4
B、x=4,y=4
C、x=5,y=5
D、x=4,y=5
正确答案: A

17【单选题】已知:int x=3,y;执行下述3条命令后,结果为()

++x;

y=++x;

printf(“x=%d,y=%d”,x,y);
A、x=5,y=4
B、x=5,y=5
C、x=3,y=5
D、x=4,y=5
正确答案: B

18【单选题】已知:int x=4,y,执行下述2条命令后,结果为()
y=x++*2/3;
printf(“x=%d,y=%d”,x,y);
A、x=4,y=2
B、x=5,y=3
C、x=5,y=2
D、x=3,y=3
正确答案: C

19【单选题】
读下面的程序段,输出结果是( ).

 int aa=2;

 aa*=2;

 b=aa++;

 printf(“%d”,b);

A、3
B、4
C、5
D、6
正确答案: B

20【单选题】已知ch是字符型变量,下面不正确的赋值语句是( ).
A、ch=‘a+b‘
B、ch=‘\0’
C、ch=‘7’+‘9’
D、ch=5+9
正确答案: A

21【单选题】
以下叙述正确的是()
A、在C程序中,每行中只能写一条语句
B、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C、在C程序中,无论是整数还是实数,都能被准确无误地表示
D、在C程序中,%是只能用于整数运算的运算符
正确答案: D

22【单选题】
设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是____
A、k++
B、k+=1
C、++k
D、k+1
正确答案: D

23【单选题】
若变量已经正确定义并赋值,下面符合C语言语法的表达式是( ).
A、 a:=b+1
B、a=b=c+2
C、int 18.5%3
D、a=a+7=c+b
正确答案: B

你可能感兴趣的:(c语言)