如何在同一函数中通过指针实现求和与绝对值差计算?
问题分析与解决方案
你的代码中,计算*b时犯了一个关键错误:修改*a之后,原始的*a值已经丢失,此时*b = *a - *b实际得到的是(原a+原b) - 原b = 原a,完全不符合“两数绝对值差”的要求。
修正方案
需要先保存*a和*b的原始值,再基于原始值完成计算。同时使用abs()函数获取绝对值,记得引入<stdlib.h>头文件(部分编译器中<stdio.h>可能包含该函数,但显式引入更稳妥)。
修正后的完整代码
#include <stdio.h> #include <stdlib.h> // 用于abs()绝对值函数 void update(int *a,int *b); int main() { int a, b; int *pa = &a, *pb = &b; scanf("%d %d", &a, &b); update(pa, pb); printf("%d\n%d", a, b); return 0; } void update(int *a,int *b) { // 先保存原始值,避免修改*a后丢失数据 int original_a = *a; int original_b = *b; *a = original_a + original_b; *b = abs(original_a - original_b); }
关键说明
- 临时变量
original_a和original_b存储了函数传入的初始值,确保后续计算不会被修改后的*a干扰 abs()函数负责将两数的差值转换为绝对值,满足需求中的非负要求
内容的提问来源于stack exchange,提问作者Chandana
相关产品推荐
相关产品推荐

