定义有10个元素的int数组,输入10个整数得到其中是2的n次方的整数的个数

最好有注释急啊!!!求大神帮帮忙!!!在附上图片:
2024-11-15 01:09:54
推荐回答(2个)
回答1:

int main()
{
int arr1[10] = {0};
int i ;
int j;
int n=0;
int sum=1;
int max;
for(i=0;i<10;i++)
scanf("%d",&arr1[i]);
max = arr1[0]
for(i=0;i<10;i++)
{
if (max max = arr1[i]
}//找出arr1数组的最大值
for(i=0;i<10;i++)

{
for(j=0;sum<=max ;j++)
{
sum = 2*sum; //计算2的n次的值
if (arr[i]==sum)
n++;
break;
}
}
printf("等于2的n次方的个数为%d",n);
}

回答2:

//使用的是C++代码 直接用了vector是因为比较懒不想列数组
//在这里帮你把逻辑都写好了 剩下的只是需要更改输入和输出,应该没有问题吧
#include 
#include 
int main() {
    int n;
    std::vector ans;
    while(std::cin >> n) {
        if(n &(n - 1)) ans.push_back(n);
    }
    return ans.size();
}