Pointers in C
任务
完成函数void update(int *a,int *b)
,该函数读取两个整数作为参数,并设置它们的总和为a以及它们的绝对差b。
解答
使用条件语句
#include <stdio.h>
void update(int *a,int *b) {
// Complete this function
int temp;
temp = *a;
*a = *a + *b;
if(temp>*b){
*b = temp - *b;
}
else{
*b = *b - temp;
}
}
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;
}
使用三目条件运算符
#include <stdio.h>
void update(int *a,int *b) {
*a = *a + *b;
*b = *a - 2 * (*b)> 0 ? *a - 2 * (*b) : 2 * (*b) - *a;
}
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;
}