问题 解答题

一位农民有田2亩,根据他的经验:若种水稻,则每亩每期产量为400kg;若种花生,则每亩每期产量为100kg,但水稻成本较高,每亩每期需240元,而花生只需80元,且花生每千克可卖5元,水稻每千克只卖3元.现在他只能凑足400元,问这位农民对两种作物各种多少亩,才能得到最大利润?

答案

解:设这位农民种水稻x亩,种花生y亩, 则由题意可知

目标函数利润z=400x3+100y5=1200x+500y

作出不等式组所表示的可行域如图所示,

作直线l0:12x+5y=0,将直线l0向右上方平移,

由图可知当直线过点时,利润z取得最大值.

即这位农民种水稻亩,种花生亩时可以得到最大利润.

单项选择题
问答题

阅读下列说明和C代码,在(n)处填入适当的子句。

[说明]

栈(Stack)结构是计算机语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶(Stack Top),而另一端称为栈底(Stack Bottom)。栈的基本操作包括:创建栈(NewStack)、判断栈是否为空(IsEmpty)、判断栈是否己满(IsFull)、获取栈顶数据(Top)、压栈/入栈(Push)、弹栈/出栈(Pop)。

当设计栈的存储结构时,可以采取多种方式。其中,采用链式存储结构实现的栈中各数据项不必连续存储,如图8.14所示。

以下C代码采用链式存储结构实现一个整数栈操作。

[C代码]

typedef struct List

int data; //栈数据

struct List* next; //上次入栈的数据地址

List;

typedef struct Stack

List* pTop;//当前栈顶指针

Stack;

Stack* NewStack()return(Stack*) calloc (1, sizeof( Stack));

int IsEmpty (Stack*s)(//判断栈s是否为空栈

If( (1) ) return 1;

return 0;

int Top (Stack*s)//获取栈顶数据。若栈为空,则返回机器可表示的最小整数

if(IsEmpty (S)) return INT_MIN;

return (2)

void Push(Stack* s, int theData)//将数据theData压栈

List* newNode;

newNode= (List*) calloc (1, siz eof (List));

newNode->data=theData;

newNode->next=S->pTop;

S->pTop= (3) ;

void Pop(Stack* s) //弹栈

List* lastTop;

If (IsEmpty (S)) return;

lastTop=S->pTop;

S->pTop= (4) ;

Free (lastTop) ;

#define MD(a) a<<2

int main ()

int i;

Stack* myStack;

myStack=NewStack () ;

Push (myStack,MD (1)) ;

Push (myStack,MD (2));

Pop (myStack) ;

Push (myStack,MD (3)+1) ;

while (! IsEmpty (myStack))

printf (" %d" ,Top (myStack));

Pop (myStack) ;

return 0;

以上程序运行时的输出结果为 : (5)