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

C语言赋值运算练习题

[复制链接]

37

主题

21

回帖

241

积分

中级会员

积分
241
发表于 2026-4-14 11:56:39 | 显示全部楼层 |阅读模式
一、基础计算题
要求:手动计算结果,再用代码验证
1. 简单赋值运算
int a, b;
a = 10;
b = a;
a = 20;
// 问:a=?  b=?
2. 连续赋值运算
int x, y, z;
x = y = z = 5;
// 问:x=? y=? z=?
3. 复合赋值运算
int m = 10;
m += 3;   // m = m+3
m -= 2;   // m = m-2
m *= 4;   // m = m*4
m /= 3;   // m = m/3
m %= 5;   // m = m%5
// 问:最终m=?
二、易错题
1. 赋值与相等混淆
int a = 5;
if( a = 0 ){
    printf("真");
}else{
    printf("假");
}
// 问:输出什么?a最终等于多少?
2. 复合赋值的优先级
int n = 2;
n *= 3 + 2;
// 问:n=?  等价于 n = n*(3+2) 还是 n=n*3+2?
3. 赋值表达式的值
int a;
printf("%d", a = 100);
// 问:输出结果是多少?
三、进阶计算题
1、
int a = 2;
a += a -= a * a;
// 计算步骤:从右往左
// 问:最终a=?
2
int x = 5;
x += x -= x * x;
// 问:x=?
3
int i=5, j;
j = ++i + i++;
// 问:i=? j=?
四、编程实践题
输入一个整数,将它乘以 2、加 10、除以 3,用复合赋值实现
输入两个数 a 和 b,交换它们的值(不使用临时变量,用赋值运算实现)
计算一个整数的个位、十位、百位,用赋值运算保存结果


37

主题

21

回帖

241

积分

中级会员

积分
241
 楼主| 发表于 2026-4-14 11:57:40 | 显示全部楼层
答案与解析
一、基础题答案
a=20,b=10(b 赋值后不受 a 后续修改影响)
x=5,y=5,z=5(连续赋值从右往左执行)
计算过程:
m=10 →13→11→44→14→4,最终m=4
二、易错题答案
输出假,a=0
解析:a=0是赋值,不是判断相等,表达式值为 0(假)
n=10
解析:复合赋值右边整体计算,等价于n = 2*(3+2)
输出100
解析:赋值表达式的值 = 左值最终的值
三、进阶题答案
a = -4
步骤:a*a=4 → a=2-4=-2 → a=-2 + (-2) =-4
x = -20
i=7,j=13
四、编程题参考代码
题 1:复合赋值计算
#include <stdio.h>
int main() {
    int num;
    scanf("%d", &num);
    num *= 2;  // 乘2
    num += 10; // 加10
    num /= 3;  // 除以3
    printf("%d", num);
    return 0;
}
题 2:交换两个数(无临时变量)
#include <stdio.h>
int main() {
    int a=3, b=5;
    a = a + b;
    b = a - b;
    a = a - b;
    printf("a=%d, b=%d", a, b);
    return 0;
}
总结
赋值运算从右向左结合,连续赋值按这个规则计算
复合赋值 op= 会把右边整体作为一个运算数
赋值表达式的值 = 左边变量最终的值
区分 =(赋值)和 ==(相等判断)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-28 03:37 , Processed in 0.012823 second(s), 19 queries .

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