问题:https://www.hackerrank.com/challenges/bitwise-operators-in-c/problem
我使用C尝试了此问题,但输出结果为
1
5
1
代替
2
3
3
我在此代码中找不到错误:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
//Complete the following function.
void calculate_the_maximum(int n, int k)
{
int answer1=0;
int answer2=0;
int answer3=0;
for(int i=1;i<n;i++)
{
for(int j=i+1; j<=n;j++)
{
if((i&j >=answer1) && (i&j < k))
{
answer1 = (i&j);
}
if((i|j >=answer2) && (i|j < k))
{
answer2 = (i|j);
}
if((i^j >=answer3) && (i^j < k))
{
answer3 = (i^j);
}
}
}
printf("%d\n%d\n%d",answer1,answer2,answer3);
}
int main()
{
int n, k;
scanf("%d %d", &n, &k);
calculate_the_maximum(n, k);
return 0;
}
答案 0 :(得分:0)
我不喜欢给出完整的答案,但是自从我解决了问题后,我希望它能为您提供帮助。
我把它分解了,这样会更容易理解
观看简短的if陈述2
transactionType = TransactionType.All