C++新手 程序无错误 但只能输入 没有结果

#include<stdio.h>
struct BiTree{
    char data;
    struct BiTree *lchild;
    struct BiTree *rchild;
};                                                                         //二叉树的结构体
struct BiTree* CreatBiTree(){                                   //创建二叉树的函数
    char x;
    struct BiTree* p;
    scanf("%c",&x);  
    if(x!='.'){
      p=(struct BiTree*)malloc(sizeof(struct BiTree));
      p->data=x;
      p->lchild=CreatBiTree();
p->data=x;
      p->lchild=CreatBiTree();
      p->rchild=CreatBiTree();
}
    else
      p=NULL;
      return p;
}
int LeafNum(struct BiTree *T){                                   //计算二叉树中叶子结点的个数
    if(!T)
      return 0;
    else
      if(!T->lchild&&!T->rchild)
        return 1;
      else
        return LeafNum(T->lchild)+LeafNum(T->rchild);
}
int main(){
   int num;
   struct BiTree* T;
   printf("qinganxianxuxulieshuruerchashu\n");
   T=CreatBiTree();                                       //创建二叉树
   while(T==NULL){
     printf("empoty,again:\n");
       T=CreatBiTree();                                  
       }
   num=LeafNum(T);
   printf("\nerchashuyiezigeshuwei:%d\n",num);
   system("pause");
   return 0;
}

除了创建代码里多了两行,应该没问题的。

struct BiTree* CreatBiTree(){                                   //创建二叉树的函数
    char x;
    struct BiTree* p;
    scanf("%c",&x);  
    if(x!='.'){
      p=(struct BiTree*)malloc(sizeof(struct BiTree));
      p->data=x;
      p->lchild=CreatBiTree();        // è¿™è¡Œè¦åŽ»æŽ‰
p->data=x;                            // è¿™è¡Œè¦åŽ»æŽ‰
      p->lchild=CreatBiTree();
      p->rchild=CreatBiTree();
}

创建二叉树是从一个分支创建完毕,再创建另一个的。

所以输入的时候,要输入很多'.'标识分支结束

比如

        a

    /        \

  b           c

这种输入的数据就是 ab..c..

仔细想想二叉树的结构就清楚了。

温馨提示:内容为网友见解,仅供参考
无其他回答

C++新手 程序无错误 但只能输入 没有结果
除了创建代码里多了两行,应该没问题的。struct BiTree* CreatBiTree(){ \/\/创建二叉树的函数 char x; struct BiTree* p; scanf("%c",&x); if(x!='.'){ p=(struct BiTree*)malloc(sizeof(struct BiTree)); p->data=x; p->lchild=CreatBiTree(); \/\/...

C++这样写程序,为什么输入后没有结果
第一个,你的循环条件是cin>>n;注意>>操作符返回的是流对象cin的引用,也就是如果流对象状态不出错,那么你的判定条件就会一直逻辑真,也就是一直循环要求你输入,解决办法有很多种,输入字母使得流状态错误,从而退出循环,然后cin.clear();cin.ignore();重置流,方便后面继续使用流;循环体里面可以...

我随手写的程序 请C++高手帮我看看为什么运行时不产生输出
程序没有错误,可能是你输入的方法有问题:在输入时,程序要求以空字符结束输入,所以,在最后一个字符串输入完成并回车后应该两次按下CTRL+Z输入两个空字符然后再按回车才能结束输入。

c++程序没有错误 但是运行结果窗口没有内容
少了cout<<语句,或者就是没执行你的cout<<语句,再者就是你的cout<<语句输出的是控制符\\t\\n类似的东西,显示不出来。

我用Dev-C++编程,程序代码没有错,为什呢运行后不显示结果?
又一个悲剧的,翻译以下就是:runtime_error(运行时错误)程序一切ok 如果是win7专业版或旗舰版64位系统,找到目录下的exe文件,右键--属性--兼容性--以xp兼容模式运行;

用C语言编程程序没有错误为什么结果不对
1,保存为c或c++文件 2,根据断点调试找到错误处。3,采用F10或F11单步调试找到精确的错误处。其中f10是跳过函数盗用,f11是进入函数体调试。一般是先用f10,确定函数输入输出是否正确(与自己想的一样),如不一样,则用f11进入函数体一步一步调试。4,在调试过程中,肯定得监视程序中的变量。在vc6...

C++程序编译没有问题,点击运行或者CTRL+F5无任何反应
你需要把输出窗口调出来,如图里面的黑色界面。要是你已经调出来输出窗口了,还没反应的话,你那在确定vc是否这在编译,看软件左下方的状态栏,是否正显示“正在编译中……”,你可能会说这么短的程序还需要编译那么久吗!但是这种情况是常见的,也就是你的软件编译文件路径没设置好导致的。

C++没有错误点执行没反应
打开任务管理器-》 结束任务 -》点确定 -》 重来 VC++6.0就是这个毛病。。。换个好一点的,比如 VC++10.0或者VC++11.0

C++运行 怎么输入后没有反应
建议你这样改(这样该对于太大的x也不行的话,再把double改成long double看看。):include <iostream> include<iomanip> include<cmath> using namespace std;double f(double n);\/\/把int改为double,long也改为double int main(){ cout<<"请输入x的值:";int s=1;double x, n=1, t = ...

我的一个C++程序,语法没有错误,但是执行之后只有一个黑框,没有内容,什...
= 0) { return ; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1) { WSACleanup( ); return; } SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); ad...

相似回答