我正在用C做作业,但遇到了一些麻烦。 在计算了两个值之后,我必须能够使用逻辑运算符,关系运算符或选择结构打印两个值中的最高值 。我已经使用过计算来确定两个值中的较大者,但是我不知道这是否非常有用。
我还要澄清一下,我不是在打印最大值,而是应该在打印最大值选项。例如,如果选项1 = 2000,选项2 = 3000,我希望能够打印出“选项2是较大的选项”。
我还应该说,在完成其余任务之后,通常仅通过数学运算+*-%/
和pow()
来完成此选择
答案 0 :(得分:1)
我将使用函数fmax。它以双精度作为参数,因此您可能必须将数字转换为双精度。
答案 1 :(得分:1)
最高的两个值的
仅与数学运算完成
( - %/和POW + *)
当的值均为> 0,发现对2级的商A / B,B / A。商之一为0(假设类型为某种整数),其他商为1或更大。 (或两者商数是1时的值是相同的)。
执行
pow(one_or_more, 0); // 1 (v2 > v1)
pow(0, one_or_more); // 0 (v1 > v2)
pow(1,1); // 1 (same)
使用0.1至索引答案。
样品
int a[2] = { value1, value2 };
int index = pow(a[1]/a[0], a[0]/a[1]);
printf("%d\n", a[index]);
// or "to print the maximum option"
printf("%d\n", index);
允许使用pow()
暗示了这种方法。
侧益处:无溢出时值> 0 -,+,*
趋向于开门溢出的可能性并避免
向下侧:与故障值<= 0
答案 2 :(得分:0)
两种const fs = require('fs');
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const html = fs.readFileSync('./example.html', 'utf8');
await page.setJavaScriptEnabled(false)
await page.goto(process.argv[2]);
await page.evaluate(
content => {
const pageEl = document.querySelector('div.page');
let node = document.createElement('div');
node.innerHTML = content;
pageEl.appendChild(node);
}, html
);
await page.setJavaScriptEnabled(true)
await browser.close();
})();
类型int
中的较大者,而x
是
y
如果x - ((x - y) & ((x - y) >> (sizeof(int) * CHAR_BIT - 1)))
是x
,则 z
是x ^ z
,对于0
也是类似。
答案 3 :(得分:0)
这个想法是使用符号位作为数组的索引。
signed char index1 = (option1value - option2value) >> 7;
signed char index2 = (option2value - option1value) >> 7;
如果option1value > option2value
,则index1
中的前导位将为0,移位后将为0。
如果option1value < option2value
,则index1
中的前导位为1,移位后为1。
您使用索引将“语言文本”放入数组中。然后始终从0索引开始打印。
您需要为值选择正确的数据类型并调整移位位。
答案 4 :(得分:0)
这更像是一个数学问题:
#include<math.h>
#include<stdlib.h>
#include<stdio.h>
int main(){
int o1 = 4;
int o2 = 2;
//res > 0 if, and only if, o2 > o1
int res = o2 - o1;
// module of res
double module = pow(pow(res, 2), 0.5);
//res2 = 1 if res > 0
//res2 = -1 if res < 0
int res2 = res/(int)module;
printf("option%d is greater.\n", (3+res2)/2);
return 0;
}
警告1:当o1 == o2时不起作用
警告2:此答案将此问题视为数学问题。 C语言中的系统不保证将double的值保留为确切的数字,但是将其保留为近似值。 因此,正如chux指出的那样,对于大数它可能无法给出正确的答案。
您可能有double a = x/|x|
在C中为a
赋予了0.9999
的值,从而使int b = (int)a
的值为0
答案 5 :(得分:-1)
如我所知,没有数组是不允许的。只有数学
void printlarger(int a, int b)
{
printf("%d\n", a * (int)pow(a/b, b/a) + b * (int)pow(b/a, a/b));
}
int main()
{
printlarger(3,2);
return 0;
}