C语言 如何求同一函数的和与绝对差?

ibrsph3r  于 2023-01-25  发布在  其他
关注(0)|答案(3)|浏览(122)

一个函数接收两个整数指针,int* a和int* B。2将 *a的值设置为它们的和,将 *b的值设置为它们的绝对差。3没有返回值,也不需要return语句。
我得到了 *a的值,但无法得到 *b的代码。

#include <stdio.h>
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+=*b;
    *b=*a-*b;
}
knsnq2tg

knsnq2tg1#

您可以使用一个临时变量来存储 *a的值,然后使用它:

int tmp = *a;
*a += *b;
*b = abs(tmp - *b);
oknrviil

oknrviil2#

稍微清理一下。只有函数需要指针。你的main不需要。

#include <stdio.h>
#include <stdlib.h>  // abs()

void sum_and_diff( int * a, int * b )
{
  int sum = *a + *b;
  int diff = abs( *a - *b );
  *a = sum;
  *b = diff;
}

int main(void)
{
  int a, b;

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

  sum_and_diff( &a, &b );

  printf( "sum = %d\n", a );
  printf( "absolute difference = %d\n", b );

  return 0;
}
bvjveswy

bvjveswy3#

一个不需要临时变量或abs()之类的外部函数的简单答案(最简单?)是:

void update(int *a, int *b) 
{
    *a += *b;
    *b =  *a-*b-*b;
}

它还通过减去刚刚添加到*a中的“额外”*b来修复代码

相关问题