运算符与表达式、算法


一、运算符和表达式

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过使用Java的GUI组件来实现将二元运算符算法表达式输入一个文本框,另一个文本框显示值的功能。以下是实现的步骤: 1. 导入相关的类:需要先导入JFrame、JPanel、JLabel、JTextField、JButton等相关的类。 2. 创建GUI界面:使用JFrame类创建一个GUI窗口,并在窗口上添加一个JPanel面板组件和两个JLabel、两个JTextField、一个JButton等组件。 3. 绑定事件监听器:使用ActionListener类绑定JButton按钮的事件监听器,当点击按钮时,从输入文本框中获取算法表达式,计算表达式的值并在输出文本框中显示结果。 4. 实现计算功能:使用Stack类实现二元运算符算法表达式的计算功能。 下面是一个简单的Java代码示例,实现了将二元运算符算法表达式输入一个文本框,另一个文本框显示值的功能: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator extends JFrame implements ActionListener { private JPanel panel; private JLabel inputLabel, outputLabel; private JTextField inputField, outputField; private JButton calculateButton; public Calculator() { // 初始化GUI界面 panel = new JPanel(new GridLayout(3, 2)); inputLabel = new JLabel("输入算法表达式:"); inputField = new JTextField(""); outputLabel = new JLabel("结果:"); outputField = new JTextField(""); outputField.setEditable(false); calculateButton = new JButton("计算"); calculateButton.addActionListener(this); panel.add(inputLabel); panel.add(inputField); panel.add(outputLabel); panel.add(outputField); panel.add(calculateButton); add(panel); // 设置窗口属性 setTitle("二元运算符算法表达式计算器"); setSize(400, 150); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } // 计算按钮的事件监听器 public void actionPerformed(ActionEvent e) { String input = inputField.getText(); if (input.isEmpty()) { outputField.setText(""); return; } Stack<Integer> operands = new Stack<>(); Stack<Character> operators = new Stack<>(); for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (c >= '0' && c <= '9') { int num = 0; while (i < input.length() && input.charAt(i) >= '0' && input.charAt(i) <= '9') { num = num * 10 + (input.charAt(i) - '0'); i++; } i--; operands.push(num); } else if (c == '+' || c == '-' || c == '*' || c == '/') { while (!operators.empty() && hasPrecedence(operators.peek(), c)) { operands.push(applyOperation(operators.pop(), operands.pop(), operands.pop())); } operators.push(c); } } while (!operators.empty()) { operands.push(applyOperation(operators.pop(), operands.pop(), operands.pop())); } outputField.setText(String.valueOf(operands.pop())); } // 判断运算符优先级 private boolean hasPrecedence(char op1, char op2) { if ((op1 == '*' || op1 == '/') && (op2 == '+' || op2 == '-')) return false; else return true; } // 进行运算 private int applyOperation(char op, int b, int a) { switch (op) { case '+': return a + b; case '-': return a - b; case '*': return a * b; case '/': if (b == 0) throw new UnsupportedOperationException("Cannot divide by zero"); return a / b; } return 0; } public static void main(String[] args) { new Calculator(); } } ``` 此代码示例使用了Stack类来实现二元运算符算法表达式的计算功能。在实际开发中,可能需要根据具体的需求进行更改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值