C语言 如何在同一函数中得到和和绝对差?

  • 本文关键字:函数 语言 c function pointers
  • 更新时间 :
  • 英文 :


函数接收两个整数指针,int* aint* b*a的值为它们的和,*b的值为它们的绝对差。

没有返回值,也不需要返回语句。

我得到了*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("%dn%d", a, b);
return 0;
}
void update(int *a,int *b) 
{
*a+=*b;
*b=*a-*b;
}

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

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

稍微清理一下。只有函数需要指针。

#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 = %dn", a );
printf( "absolute difference = %dn", b );
return 0;
}

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

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

它还通过减去"extra"来修复你的代码*b你刚刚添加到*a

相关内容

  • 没有找到相关文章

最新更新