我是学生,是C的新手。我的作业的一个问题如下:
max是一个接受两个int参数并返回的函数 更大的价值。四个int变量,population1, 人口2,人口3和人口4已经存在 声明并初始化。写一个表达式(不是声明!) 其价值是人口1中最大的,人口2, 通过调用max来实现population3和population4。 (提示:你需要 要调用最多三次,您需要传递返回值 其中两个调用作为max的参数。记住:写一个 表达,而不是陈述。)
我理解它的逻辑:
使用前两个变量调用函数max,函数将返回两者中的较大者,然后获取该值(以某种方式传递它而不分配给第五个声明的变量)并将其与第三个变量的值进行比较。取第二个配对中较大的一个(再次传递它而没有新变量的好处 - 记住它是一个表达式,而不是一个声明)并将其与第四个值进行比较。但是我无法编写正确的语法。
另外,要了解这是一个100级的课程。因此,对于这个特定问题,不会接受任何更高级别的内容。没有库#include(d)。
答案 0 :(得分:1)
嗯,你似乎明白该怎么做,是的,问题似乎是要求你不要将返回的值分配给新的varibles。您基本上可以将max()作为参数放入另一个max(),并且内部max()的返回将是外部max()参数的int。 由于c是严格的,除非函数的返回类型与参数相同(在这种情况下,两者都是int,所以没关系),它将无法编译。
max(2, max(3, 4)); // inner returns 4, which puts 4 into the outer max, and compares 2 to 4
答案 1 :(得分:0)
一个函数返回一些不同的东西(void
)可以在表达式中自由使用。表达式是递归定义的,因为它是由子表达式构成的,直到到达终端符号(作为常量或函数调用)。
因此理解语法没什么奇怪的,对max
的调用在语义上等同于数字常量。
int x = 5;
int y = max(5,10);
int z = 5 + 10;
int k = max(5,10) + 3;
int j = max(3 + 2, 8);
这些都是合法的。当然,赋值只是为了清晰,因为赋值是一个陈述,而不仅仅是表达式。
答案 2 :(得分:0)
可以嵌套函数调用。这是一个提示:
max(population1, max(...))
您能为...
找到正确的代码吗?