反复除以2 for循环

给定一个整数N。如果N是奇数保持不变;如果是偶数你要将它反复除以2,直到变成奇数。

请你输出最后的奇数是多少?

参考如下;

#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);

    while (n % 2 == 0) 
    {
        n /= 2;
    }

    printf("奇数=%d", n);

    return 0;
}

参考GPT和自己的思路:好的,这个问题可以通过循环实现。具体步骤如下:

  1. 判断给定的整数N是否为奇数,如果是则直接返回该数。

  2. 如果N为偶数,反复除以2,直到变成奇数为止。每次除以2可以通过整数右移一位(即将最高位舍弃)来实现。具体代码如下:

    int oddNum = 0;
    while(N % 2 == 0){
        N >>= 1;
    }
    oddNum = N;
    return oddNum;
    
  3. 最后返回得到的奇数即可。

希望我的回答能够解决您的问题。

#include <iostream>
using namespace std;

int main() {
    int N;
    cout << "请输入一个整数N:" << endl;
    cin >> N;

    while (N % 2 == 0) {
        N /= 2;
    }

    cout << "变换后的N为:" << N << endl;

    return 0;
}