嘿伙计们我试图编写一个c ++代码来检查一组数字中的设置位数。
例如首先我问我想要多少个数字然后我将这些数字存储在一个数组中然后我遍历数组中的每个数字并将它们转换为二进制数。 如果为数字设置了所有位,我需要打印YES,否则打印NO。 例如7是111因此所有位都被设置,所以我将打印YES。
但是我收到了一个编译错误:' x'未在此范围内宣布和预期,或;之前{两个错误都在第9行,这是' int checkbit(x){
'这是我的代码
#include <iostream>
#include <conio.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
int b[20],c[50];
int checkbit(x){
int z, i=0;
while(x>1){
if(x==1)
c[i]==x;
z=x%2;
x=x/2;
c[i]=z;
++i;
}
while(i>=0){
z= c[i];
if(z==0)
return -1;
--i;
}
return 0;
}
int main(void){
int a;
cout<<"Enter the quantity of numbers you want";
cin>>a;
cout<<"Now Enter all the numbers you want";
for(int i=0;i<a;i++)
cin>>b[i];
cout<<"Checking for set bits please wait";
for(int i=0;i<a;i++){
if(checkbit(b[i])==-1)
cout<<"NO";
cout<<"YES";
}
return 0;
}
请告诉我发生了什么,我的代码是否正确
答案 0 :(得分:2)
函数签名中的参数也应该在它们前面有类型。
所以,这个:
int checkbit(x)
实际应该是:
int checkbit(int x)
除非您这样做,否则编译器无法在x
的范围内找到checkbit
的声明,从而导致错误。
答案 1 :(得分:0)
您缺少函数参数的类型声明。您在返回时有一个类型声明,但在参数上没有。
第9行应为:
int checkbit(int x){
这将解决您的编译错误。