您的位置:首页 > 编程语言 > C语言/C++

面试题集锦C++解答2

2014-04-23 13:35 330 查看
编程语言中比较常见的是C循环,例如C语言 (C++,java也类似): for (unsigned i = A; i != B; i += C) ; 表示i从A开始,只要不等于B,每次加C。 我们的目标是计算这个循环执行的次数。 假设我们的整数都是无符号的,计算机支持的int是k位的。(即所有整数都是非负并且小于2^k的,并且所有运算都对2^k取余数)。
输入格式 多组数据,每组数据占一行,包含4个整数A,B,C,k。(1<=k<=32, 0<=A,B,C<2^k)。 输出格式 对每组数据,输出一行,包含其循环次数,如果是死循环,输出-1。

注意:环境是32位系统的,所以注意K的取值判断

bool check(int num,int k){//检查数据的有效性
if(0>=k||0>num){
return false;
}
if(k>32){
return false;
}
int temp = pow((float)2,k);
if(num<=temp){
return true;
}
else{
return false;
}

}

int loopnum(int A,int B,int C,int K)///注意实际存在的整数表示范围2的K次方

{
int num = 0;
if(check(A,K)&&check(B,K)&&check(C,K)){
if(B<A){
return -1;
}
else{
if(C==0){
return -1;
}

}
num = (B-A)/C+1;
}
return num;

}

int _tmain(int argc, _TCHAR* argv[])

{
int num = loopnum(1,100,0,30);
cout<<"循环次数为:"<<num<<endl;
system("pause");
return 0;

}

本人暂时想到的就这些了,希望搞测试的朋友能够发现程序的不足之处,积极指正!不胜感激!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 面试题 编程语言