我想检查数组中的数是否是2的幂。检查数是否是2的幂,如果输入是数字
我写了下面的代码,但它不起作用,它跳过检查数字是2的幂的部分并打印最后一句。
此外,如果有人可以帮助我如何检查输入是否是一个数字,而不是任何其他字符。 谢谢! 更新两件事电源工作,但我还没有弄清楚如何检查,如果输入的是数字,而不是任何其他characher
#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;
}
欢迎来到Stack Overflow!请[编辑]你的代码,以减少它到你的问题[mcve]。您当前的代码包含很多与您的问题相关的代码 - 通常,最小样本看起来与单元测试相似:只执行一项任务,输入值指定为可重现性。没有必要为输入数组分配存储空间来展示你的问题(但是如果你这样做了,你真的应该在'malloc()'的参数中使用它之前检查'x'是否是正数,或者(更好)声明它作为一个无符号类型 –