当前位置:编程学习 > C/C++ >>

关于C语言的几个问题

1.一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为?答案是DEBFCA。请问后序遍历结果是怎么得出来的,以后遇到相同问题怎么解决?

2.若有定义语句:char s[3][10],( *k)[3], *p;则下列赋值语句正确的是:A.p=s B.p=k;C.p=s[0];D.k=s    

答案是C,请问为什么?

3.有以下程序

#include<stdio.h>

main()

{int s;

 scanf("%d",&s);

 while(s>0)

{switch(s)

 {case 1:printf("%d",s+5);

   case 2:printf("%d",s+4);break;

   case 3:printf("%d",s+3);

   default:printf("%d",s+1);

   break;

  }

  scanf("%d",&s);

 }

}

运行时,若输入1 2 3 4 5 0<回车>,则输出结果是?A.6566456;B.66656;C66666;D6666656

答案是A,请问为什么?

4.有以下程序

 

#include<stdio.h>

main()

{ int c[3]={0},k,i;

  while((k=getchar())!='\n')

      c[k-'A']++;

  for(i=0;i<3;i++)

    printf("%d",c[i]);

  printf("\n");

}

若程序运行时从键盘输入ABCACC<回车>,则输出结果为?答案是213,为什么我做出来是123?怎么来的呢?

追问:嗯,这个懂了,谢谢,下面的题慢慢打,我等着,嘿嘿
答案:你好,
第一题考的是数据结构的表达方法。
根据二叉树遍历的算法规则:
前序:打印、左子树、右子树
中序:左子树、打印、右子树
后序:左子树、右子树、打印
由此可以得出,只要知道中序遍历和前序或者后序中的任何一个,通过两者就能推断整个树的结构。
对于前序、中序已知:
可以通过前序第一个字符(即根结点)去中序中查找,就可以分出左子树右子树,从前序中将此结点的左子树和右子树的打印序列分别提出,重复推断即可推断出整个树。
后续、中序则从最后一个字符推断回去。
得到整个树后再按照要求的序列去写出即可。
刚开始不熟练可以多多使用草稿纸和笔。
此题中:
前:ABDECF
中:DBEAFC
可知A为根结点
中序中DBE为左子树(对应前序BDE)
FC为右子树(对应前序CF)
对于左子树:B为根,D为左,E为右
对于右子树:C为根,F为左
由此写出后续遍历结果:DEBFCA


我一题一题来哦。先打一题,你先看。

上一个:C语言有多少种版本
下一个:哪里有万年历C语言源代码

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,