/* Include lib */
#include <stdio.h>
#include <assert.h>

/* Define */
struct num_info {
  int cnt_1;
  int cnt_0;
  unsigned int new_even_num;
};

/* API get all even bits of input 32bits */
void get_no_even_bit(unsigned int num, struct num_info *num_info)
{
  int i;
  int cnt_0 = 0, cnt_1 = 0, new_even_num = 0, b;

  for (i = 0; i < (sizeof(num) * 8); i++) {
    if ((i % 2) == 0) {
      b = (num >> i) & 0x1;
      if (b)
        cnt_1++;
      else
        cnt_0++;
      new_even_num |= b << (cnt_1 + cnt_0 - 1);
    }
  }

  /* Assgin result */
  num_info->cnt_1 = cnt_1;
  num_info->cnt_0 = cnt_0;
  num_info->new_even_num = new_even_num;
}

/* Main interact with user */
int main(void)
{
  struct num_info num_info;

  int sel;
  unsigned int num;

  while(1) {
    printf("\n\nSelection:\n");
    printf("0 : Input num and get even bits info\n");
    printf("1 : Exit\n");
    printf("Select: ");
    scanf("%d", &sel);
    switch (sel) {
    case 0:
      printf("Input value: ");
      scanf("%x", &num);
      get_no_even_bit(num, &num_info);
      printf("No_bit0 %d, No_bit1 %d, New_even_num 0x%x\n", 
             num_info.cnt_0, num_info.cnt_1, num_info.new_even_num);
      break;
    case 1:
      return 0;
      break;
    default:
      printf("WARN: Option not available\n");
      break;
    }
  }

  return -1;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: