You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一函数中通过指针实现求和与绝对值差计算?

问题分析与解决方案

你的代码中,计算*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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:40:25