我正在尝试解决这一挑战:
任务:给定集合S = {1,2,3,... n},找到:
输入格式:
我已经编写了这个C程序来尝试解决它。
#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> void calculate_the_maximum(int n, int k) { int i, j = 1; int maxAND, maxOR, maxXOR = 0; int AND, OR, XOR = 0; for (i = 1; i <= n; i++) { for (j = i + 1; j <= n; j++) { AND = (i & j); OR = (i | j); XOR = (i ^ j); if (AND > maxAND && AND < k) { maxAND = AND; } if (OR > maxOR && OR < k) { maxOR = OR; } if (XOR > maxXOR && XOR < k) { maxXOR = XOR; } } } printf("%d\n%d\n%d", maxAND, maxOR, maxXOR); } int main() { int n, k; scanf("%d %d", &n, &k); calculate_the_maximum(n, k); return 0; }
在我看来,它似乎应该可以工作,不幸的是,它可以打印出来
2243而不是我的预期
233甚至很奇怪,有时程序也会为maxAND打印一个看似随机的数字,并且看起来像
1910024400243这很麻烦:每当包含调试语句时,该程序都会打印出我期望的内容。如果我在第13行添加此
printf(“ I:%d J:%d OR:%d \ n”,i,j,OR);,现在该程序将输出I:1 J:2 OR:3I:1 J:3 OR:3I:1 J:4 OR:5I:1 J:5 OR:5I:2 J:3 OR:3I:2 J:4 OR:6I:2 J:5 OR:7I:3 J:4 OR:7I:3 J:5 OR:7I:4 J:5 OR:5233这正是我所期望的。为什么这个程序只输出我期望的结果,包括额外的printf的任何想法?
我正在尝试解决这个挑战:任务:给定集合S = {1,2,3,... n},找到:a&b的最大值,小于给定的整数k,其中a和b是来自set的两个整数。 ...