<分区>
我想检查数组中的数字是否是 2 的幂。
我写了下面的代码,但它不起作用,它跳过了检查数字是否为 2 的幂并打印最后一句话的部分。
此外,如果有人可以帮助我检查输入是否是数字而不是任何其他字符。 谢谢你! 更新两件事的力量是有效的,但我仍然没有弄清楚如何检查输入是否是数字而不是任何其他字符
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x;
int i;
int k;
int count=0;
int a;
int sum=0;
printf("Enter size of input:\n");
scanf("%d",&x);
int *numbers=malloc(sizeof(int)*x);
if (x<0){
printf("Invalid size\n");
}
else {
printf("Enter numbers:\n");
for(i=0;i<x;++i){
scanf("%d",&numbers[i]);
}
}
for(k=0;k<x;++k)
{
count=0;
a=numbers[k];
while (((numbers[k] % 2) == 0) && numbers[k] > 1){ /* While x is even and > 1 */
numbers[k]/= 2;
++count;
}
if (numbers[k]==1&&a!=1){
printf("The number %d is a power of 2:%d=2^%d\n",a,a,count);
sum+=count;
}
}
printf("Total exponent num is %d\n",sum);
return 0;
}