●试题四 请补充函数fun(),该函数的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符
●试题四
请补充函数fun(),该函数的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入"Are you come from Sichuan?",则输入"are you come from sichuan?"。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
char *fun(char tt[])
{
int i;
for(i=0;tt[i];i++)
{
if((tt[i]>=′A′)&&( (1) ))
(2) ;
}
return ( (3) ) ;
}
main()
{
char tt[81];
printf("\nPlease enter a string:");
gets(tt);
printf("\nThe result string is: \n%s",
fun(tt));
}
●试题四
【答案】(1)p && p->data !=e 或 p && (*p).data !=e(2)p->Lchild 或 (*p).Lchild
(3)s->Rchild 或 (*s).Rchild(4)p->Lchild 或 (*p).Lchild
(5)p==pp->Lchild 或 p (*pp).Lchild
【解析】(1)程序的第一条语句是变量的声明及赋初值,p指向二叉查找树的根。接下来从while循环的注释部分可以看出,该循环的功能是查找键值为e的结点。当循环的判断条件e<p->data时,进入左子树查找,否则到右子树查找。程序中没有关于找到结点的处理代码,即循环内部只处理了没找到结点的情况,所以循环条件应该是当找到键值为e的结点时退出循环。另外,应注意一个隐含的限制条件"p=NULL"时,表示已经查找完毕,无需进入循环。通过分析,(1)应填p && p->data!=e。(2)if程序段是处理第三种情况的,由循环中的语句"s=s->Rchild;"可看出,s用于要删结点的左子树中查找键值最大的结点,所以s的初值应是要删除结点的左子结点。可见,(2)应填写p->Lchild。(3)根据前面所述的二叉树规则可知,要找的结点s应是左子树中查找键值最大的结点,所以s的初值应是要删除结点的左子结点。可见,(3)应填p->Rchild。本题把①、②结合在一起进行处理,所以引入了一个中间变量c,用c来存储用于替换p的结点。现在的关键问题是什么条件可以使这两种情况和在一起,因为若删除的结点为叶子结点时,p->Rchild与p->Lchild都为NULL;若删除的结点有一个子结点时,如果有左子结点,则p->Rchild为p->Rchild;如果有右子结点,则p->Lchild为NULL。当p->Lchild不为NULL时,说明是第二种情况,p结点含左子结点,所以c=p->Lchild;当p->Lchild为NULL时,说明有两种可能:
第一:p->Rchild也为NULL,则p是叶子结点。
第二:p->Rchild不为NULL,则p是有右子结点的结点。
这两种情况都可以用c=p->Rchild,因为当p是叶子结点的时候用NULL代替p的位置即可,所以第(4)应填p->Lchild。在程序中很多地方都出现了变量pp,其实只要仔细看一下前面的程序就知道,pp一直指向的是p结点的前一个结点,即p的父结点,所以(5)的作用是判断p是其父结点的左子结点还是右子结点,(5)应填pp->Lchild=p。
1.十位数字与个位数字的和等于14的两为数有()个.A5B3C7D12E13 数学 2020-03-30 …
列一元一次方程解应用题,一个两位数,个位上的数字是十位上的数字的两倍,先将这两个数字对调,得到第二 数学 2020-05-13 …
标的物为数物,其中一物不符合约定的,买受人可以就( )解除合同。 A.不符合约定的物B.数物 财会类考试 2020-05-19 …
最大的两为数与最小的两位数相差() 数学 2020-05-22 …
设有m个的用户集合US={u1,…,um},现对他们的行为数据进行处理,使得每个用户ui对应一个n维 计算机类考试 2020-05-23 …
将计算机的输出通过数字信道传输的称为数字通信。() 计算机类考试 2020-05-26 …
多通道协议是指某个应用在进行通讯或提供服务时需要建立两个或两个以上的会话(通道),其中有一个是控制通 计算机类考试 2020-05-31 …
十个连续的三为数中,最大的一个不超过130这十个数的和是105的倍数求这十个数的和十个连续的三? 数学 2020-06-11 …
数量k和m的作为数量单位的缩写,就像111k这样是多少人? 其他 2020-06-12 …
刑法第二百六十四条:个人盗窃公私财物价值人民币三万元至十万元以上的,为“数额特别巨大”。盗窃数额达 其他 2020-06-13 …