求解一道C语言基础编程题。

2025-04-01 06:21:31
推荐回答(2个)
回答1:

原来3堆火柴的根数分别是:22  14  12 根

#include

int main()

{ int i,j,a[3]= {16,16,16};

  for(i=2; i>-1; i--)

  { a[(i+1)%3]/=2;

    a[i]+=a[(i+1)%3];

  }

  for(j=0; j<3; j++)

    printf("%d ",a[j]);

  printf("\n");

  return 0;

}

回答2:

#include

void GetNums(const int n[3], int res[3]) {
if (NULL == n || NULL == res) {
return;
}

memmove(res, n, sizeof(int) * 3);

#define BACK_MOVE(src, dst) (src) += (dst >>= 1);
BACK_MOVE(res[2], res[0]);
BACK_MOVE(res[1], res[2]);
BACK_MOVE(res[0], res[1]);
#undef BACK_MOVE

}

int main(int argc, const char* const argv[]) {
int n[3] = { 16, 16, 16 };
GetNums(n, n);
for (int i = 0; i < 3; i++) {
printf("%d ", n[i]);
}
printf("\n");

return 0;
}