高手坐镇(15)
数字职场
编程开发领域很广,开发途中遇到的问题千奇百怪,碰到问题找不到解决方法怎么办?需要高人指点!为此,我们特意开设此栏目,邀请四方开发高手来帮助大家。如果你在开发途中遇到问题,如果你有能力解决这些问题,欢迎与我们联系,来信请发到pcw-chendx@vip.sina.com。
二叉树概念
●高手:李洪刚
●题目难度:★
开发QQ群:请问满二叉树和完全二叉树有什么区别,我很菜,请讲得通俗易懂点。
软件开发者 李洪刚:深度为k、有n个结点的二叉树,当且仅当每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。完全二叉树的特点是叶子结点只可能在层次最大的两层上出现;对任一结点若其右分支下子孙的最大层次为l,则其左分支下子孙的最大层次必为l 或l+1。
一棵深度为k,且有2的(k)次方减1个结点的二叉树,称为满二叉树。满二叉树的特点是每一层上的结点数都是最大结点数。满二叉树肯定是完全二叉树,完全二叉树不一定是满二叉树(见图)。

基础语法出错
●高手:顾客
●题目难度:★★★
开发QQ群:我在自学C语言编程,遇到一个疑问,题目是输入一行字符分别统计出其中英文字母、空格、数字和其他字符的个数,我编写代码后,编译时出现错误信息“expression syntax in function main”,这是怎么回事?
高级工程师 顾客:编译时出现“Expression syntax in function main”,这意味着表达式有语法错误,应重点检查基础语法,例如是否少写了双引号、4*a是否按数学习惯写成4a了。我给出一些你可能写错的代码,你参照对比一下。
char str[100];//1.声明字符串
printf("请输入要统计的字符串\n");
gets(str);//通过字符串输入函数给字符串str赋值
int numcount=0,alpcount=0,spacecount=0,othercount=0;//声明整形变量用来存储数字、字母、空格以及其他字符的个数
int length=strlen(str);
for(int i=0;i { if(str[i]!='\0')//如果字符串没有结束 { //开始判断并统计 if(str[i]>='a' && str[i]<='z' || str[i]>='A' && str[i]<='Z')//判断是不是英文字母 { alpcount++; continue; } else if(str[i]>='0' && str[i]<='9')//判断是不是数字 { numcount++; continue; } else if(str[i]==' ')//判断是不是空格 { spacecount++; continue; ●高手:曾虹云 ●题目难度:★★★★ 读者来信:我要在VB窗体中动态加载多个Text控件(每列显示一个),但是这样Text控件就多了,不能全部显示出来,我想用滚动条的方式来解决这个问题,请问如何设计? 高级工程师 曾虹云:VB的窗体没有滚动条的ScroolBar属性,不能直接在窗体上设定。我介绍一个简单的方法给你,先在窗体上添加一个Frame控件,然后在Frame控件上添加一个Text控件,并把Text的Index属性改为1,在窗体上添加一个Vscroll控件,再在窗体初始化的时候把Frame控件的高度设置为超级大,在程序中使用VScroll1_Change事件和VScroll1_Scroll事件来改变Frame在窗体中的位置就可以显示所有的Text控件。代码如下所示: //启动VB,在窗体中添加Frame控件,为了使滚动条没有闪烁效果,修改其TabStop属性为false VScroll1.Max = 200 VScroll1.Height = Me.Heigh Frame1.Height = 16500 For i = 2 To 30//从2开始,因为Text(1)已经在窗体上了,不需要重复加载 Load Text(i) Text(i).Visible = True Text(i).Top = Text(i - 1).Top + Text(i).Height + 200 Text(i).Left = Text(i - 1).Left Text(i).Height = Text(i - 1).Height Text(i).Width = Text(i - 1).Width Text(i).Text = i Next I //在VScroll1的事件中实现拖动滚动条时改变Frame1在窗体中的位置 Private Sub VScroll1_Change() Frame1.Top = -(VScroll1.Value) * 30 End Sub Private Sub VScroll1_Scroll() Frame1.Top = -(VScroll1.Value) * 30 End SubVB中添加滚动条