以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。
char *fun(char *str, char c)
{int n=0;char *p=str;
if(p!=NULL)
while(p[n]!=c&&p[n]!=’/0’) n++;
if(p[n]=’/0’) return NULL;
return(());
}
请将以下程序中的函数声明语补充完整。
#include<stdio.h>
int()
main( )
{ int x,y,(*p)( );
sccanf("%d%d",&x,&y);
p=max;
printf(%d/n",(*p)(x,y));
}
int max(int a,int b)
{return(a>ba:b);}
阅读下列函数说明和C函数,将应填入▁处的字句写在答题纸的对应栏内。
[函数5说明]
函数DeleteNode(Bitree *r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:
typedef struct Tnode{
int data; /*结点的键值*/
struct Tnode *Lchild,*Rchild; / * 指向左、右子树的指针 * /
}*Bitree;
在二叉查找树上删除一个结点时,要考虑三种情况:
①若待删除的结点p是叶子结点,则直接删除该结点;
②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;
③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。[函数5]
int DeleteNode(Bitree *r,int e){
Bitree p=* r,pp,s,c;
while( (1) ){/ * 从树根结点出发查找键值为e的结点 * /
pp=p;
if(e<p->data) p=p->Lchild;
else p=p->Rchild
}
if(! p)return-1;/ * 查找失败 * /
if(p->Lchild && p->Rchild){/ * 处理情况③ * /
s= (2) ;pp=p;
while( (3) ){pp=s;s=s->Rchild;}
p->dara=s->data;P=s;
}
/ * 处理情况①、② * /
if( (4) )c=p->Lchild;
else c=p->Rchild
if(p==*r) *r=c;
三部门组成的经济的消费函数C=80+0.8Yd,投资函数I=20-5r,货币需求函数L=0.4Y-10r,政府购买支出G=20,税收T=0.25y,名义货币供应量M=90,充分就业的国民收入为285。其中r是利率Yd是可支配国民收入,Y是国民收入。
(1)若价格水平P=2,则IS-LM决定的均衡国民收入与利率各为多少
(2)若总供给曲线为Y=235+40P,则总需求曲线与总供给曲线决定的均衡国民收入和价格各为多少
(3)若通过变动政府购买而实现充分就业,则政府购买的变动量与价格水平各为多少
(4)若通过变动货币供应量而实现充分就业,则需要如何变动货币供应量
我来回答: