注册 登录
编程论坛 C语言论坛

帮我看看我哪错了,不应该输出2的乘方吗

小白程序 发布于 2023-03-17 21:33, 986 次点击
#include<stdio.h>
int main()
{
    int a, b = 0;
    printf("请输入一个整数:");
    scanf_s("%d", &a);
    while (b < a){
        b++;
        if ((2^b)<=a)
            printf("%d\n", 2^b);
    }printf("\n");
    return 0;
}
只有本站会员才能查看附件,请 登录
4 回复
#2
sdta2023-03-17 21:39
这是VFP论坛,发错地方了吧?
#3
hytizj0232023-03-17 21:44
去C语言的地方发
#4
s962812023-03-17 22:45
"^"在C語言中是位元運算子中的XOR
要進行冪運算的話需要引入math.h頭文件
程序代码:

#include<stdio.h>
#include<math.h>

int main()
{
    int a, b = 0;
    printf("请输入一个整数:");
    scanf("%d", &a);
    while (b < a){
        b++;
        if (pow(2,b)<=a)
            printf("%f\n", pow(2,b));
    }printf("\n");
    return 0;
}

或是自己寫一個函式
程序代码:

#include<stdio.h>

int my_pow(int a, int b) {
    int ans = 1;
    for (int i = 0; i < a; i++) {
        ans *= b;
    }
    return ans;
}

int main()
{
    int a, b = 0;
    printf("请输入一个整数:");
    scanf("%d", &a);
    while (b < a){
        b++;
        if (my_pow(2,b)<=a)
            printf("%d\n", my_pow(2,b));
    }printf("\n");
    return 0;
#5
rjsp2023-03-17 23:28
手机打字,因为麻烦,所以好多地方不想改了

程序代码:
#include <stdio.h>

int main( void )
{
    int n;
    printf("请输入一个整数:");
    scanf("%d", &n);
    for( int i=1; (1<<i)<=n; ++i )
        printf( "%d\n", 1<<i );
}


输出: 2 4 8 16
1