找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 68|回复: 1

C语言表达式与运算符练习题

[复制链接]

37

主题

21

回帖

241

积分

中级会员

积分
241
发表于 2026-4-11 12:05:18 | 显示全部楼层 |阅读模式
一、基础概念题(单选)
下列不属于 C 语言算术运算符的是()A. + B. * C. % D. &
表达式 5 / 2 的运算结果是()A. 2.5 B. 2 C. 3 D. 2.0
表达式 7 % 3 的运算结果是()A. 2 B. 1 C. 0 D. 3
关于自增运算符 ++,下列说法正确的是()A. i++ 是先使用 i 的值,再将 i 加 1B. ++i 是先使用 i 的值,再将 i 加 1C. i++ 和 ++i 执行结果完全相同D. ++ 只能作用于常量
二、表达式计算题(直接写结果)
规则:整数 / 整数 = 整数(截断小数),% 是取余(求余数)
10 + 3 * 2 = ______
(10 + 3) * 2 = ______
20 / 3 = ______
20 % 3 = ______
10.0 / 3 = ______
-5 % 2 = ______
三、自增 / 自减专项题(重点难点)
已知:int a = 2, b = 3, c;计算下列表达式执行后变量的值和表达式的值
c = a++;
a=, c=
c = ++a;
a=, c=
c = a++ + ++b;
a=, b=, c=____
四、运算符优先级与结合性题
计算下列表达式最终结果:
5 + 2 * 3 % 2 = ______
10 - 4 / 2 + 1 = ______
(5 + 2) * (3 - 1) = ______
五、易错题(避坑专用)
3 / 5 * 10 = ______
10 * 3 / 5 = ______
5.0 / 2 = ______
已知 int x=5;,x /= 2; 执行后 x=______
六、编程实践题(动手写代码)
输入两个整数,计算它们的和、差、积、商、余数并输出。
输入一个三位数,分别输出它的个位、十位、百位。
示例:输入 123 → 输出 个位:3,十位:2,百位:1
编写程序验证自增运算符 ++ 前置和后置的区别。


37

主题

21

回帖

241

积分

中级会员

积分
241
 楼主| 发表于 2026-4-11 12:05:55 | 显示全部楼层
答案与详细解析

一、基础概念题

D (& 是按位与运算符,不属于算术运算符)

B (整数除法截断小数,只保留整数部分)

B (7÷3=2 余 1,取余结果为 1)

A (后置 ++ 先取值再运算,前置 ++ 先运算再取值)

二、表达式计算题

16 (先乘后加:3*2=6,10+6=16)

26 (括号优先:13*2=26)

6

2

3.333333 (浮点数除法,保留小数)

-1 (取余结果符号与被除数一致)

三、自增 / 自减专项题

a=3,c=2 (后置 ++:先把 a=2 赋值给 c,a 再 + 1)

a=3,c=3 (前置 ++:a 先 + 1 变成 3,再赋值给 c)

a=3,b=4,c=6 (++b 先变成 4,a++ 取 2,2+4=6,最后 a+1)

四、运算符优先级题

5 (和 % 优先级相同,从左到右:23=6→6%2=0→5+0=5)

9 (先除法:4/2=2→10-2+1=9)

14

五、易错题

0 (3/5=0,0*10=0,整数除法陷阱)

6 (从左到右计算:10*3=30→30/5=6)

2.5 (浮点数参与运算,结果为小数)

2 (/= 是复合赋值运算符,等价 x=x/2)

六、编程实践题参考代码

1. 四则运算 + 取余

c

运行

#include <stdio.h>

int main() {

    int a, b;

    printf("请输入两个整数:");

    scanf("%d%d", &a, &b);

   

    printf("和:%d\n", a + b);

    printf("差:%d\n", a - b);

    printf("积:%d\n", a * b);

    printf("商:%d\n", a / b);

    printf("余数:%d\n", a % b);

    return 0;

}

2. 拆分三位数

c

运行

#include <stdio.h>

int main() {

    int num, ge, shi, bai;

    printf("请输入一个三位数:");

    scanf("%d", &num);

   

    ge = num % 10;         // 取个位:对10取余

    shi = num / 10 % 10;   // 取十位:先除以10,再对10取余

    bai = num / 100;       // 取百位:直接除以100

   

    printf("个位:%d,十位:%d,百位:%d\n", ge, shi, bai);

    return 0;

}

3. 自增运算符验证

c

运行

#include <stdio.h>

int main() {

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

    c = a++;  // 后置++

    d = ++b;  // 前置++

   

    printf("a=%d, c=%d\n", a, c);

    printf("b=%d, d=%d\n", b, d);

    return 0;

}

总结

整数除法会截断小数,浮点数除法会保留小数;

取余%只能用于整数,结果符号和被除数一致;

前置++先运算后取值,后置++先取值后运算;

算术运算符优先级:() > * / % > + -。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|郎哥嵌入式编程社区 ( 鲁ICP备15001146号-5 )

GMT+8, 2026-4-28 03:32 , Processed in 0.014212 second(s), 18 queries .

快速回复 返回顶部 返回列表