| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 477 人关注过本帖
标题:各位大大们请问下问题我是新手!谢谢
只看楼主 加入收藏
cyz2008poi
Rank: 1
来 自:江西南昌
等 级:新手上路
帖 子:28
专家分:5
注 册:2009-1-29
结帖率:60%
收藏
 问题点数:0 回复次数:7 
各位大大们请问下问题我是新手!谢谢
#include <stdio.h>
#include <math.h>
#include "stack.h"
#include "calculate.h"
#include "common.h"
#include "math function.h"
#define OVER false


为什么写C的时候有的是只有一个头文件!而有的是两3个。。  在什么样的情况下只有一个头文件比如#include <stdio.h>   在什么样的情况下有多个头文件? 编写什么样的代码只有一个头文件就行了?然后又编写什么样的代码要多个头文件?他们代表的又什么意思?

不好意思呀我是刚学都不了解!说的很吃力希望大家帮我解思下谢谢!!
搜索更多相关主题的帖子: include false 
2009-10-31 18:52
cyz2008poi
Rank: 1
来 自:江西南昌
等 级:新手上路
帖 子:28
专家分:5
注 册:2009-1-29
收藏
得分:0 
以下是插入和删除
#include <stdio.h>
#include "malloc.h"
#include "windows.h"
#define maxsize 20                           //规定树中结点的最大数目
typedef struct node{                         //定义数据结构
int ltag,rtag;                           //表示child域指示该结点是否孩子   
char data;                               //记录结点的数据
struct node *lchild,*rchild;             //记录左右孩子的指针
}Bithptr;

Bithptr *Q[maxsize];                         //建队,保存已输入的结点的地址
Bithptr *CreatTree(){                        //建树函数,返回根指针
char ch;
int front,rear;
Bithptr *T,*s;
T=NULL;
front=1;rear=0;                          //置空二叉树
printf("建立一棵二叉树,请输入结点信息:\n");
  printf("请输入新的结点信息,@为空结点,#为结束标志:");
ch=getchar();                            //输入第一个字符
while(ch!='#')                           //判断是否为结束字符
{
  s=NULL;
  if(ch!='@')                          //判断是否为虚结点
  {
   s=(Bithptr *)malloc(sizeof(Bithptr));
   s->data=ch;
   s->lchild=NULL;
   s->rchild=NULL;
   s->rtag=0;
   s->ltag=0;
  }
  rear++;              
  Q[rear]=s;                            //将结点地址加入队列中
  if(rear==1)T=s;                       //输入为第一个结点为根结点
  else  
  {
   if(s!=NULL&&Q[front]!=NULL)       //孩子和双亲结点均不是虚结点
    if(rear%2==0)
      Q[front]->lchild=s;
       else Q[front]->rchild=s;
   if(rear%2==1)front++;
  }getchar();
  printf("请输入新的结点信息,@为空结点,#为结束标志:");
  ch=getchar();
}
return T;
}
void Inorder(Bithptr *T)                      //中序遍历
{
if(T)
{
  if(T->ltag!=1)Inorder(T->lchild);
  printf("→%c",T->data);
  if(T->rtag!=1)Inorder(T->rchild);
}
}


Bithptr *pre=NULL;
void  PreThread(Bithptr *root)                 //中序线索化算法,函数实现
{
Bithptr *p;
p=root;
    if(p){
     PreThread(p->lchild);//线索化左子树               
  if(pre&&pre->rtag==1)pre->rchild=p;    //前驱结点后继线索化
        if(p->lchild==NULL)                     
  {
   p->ltag=1;
   p->lchild=pre;
  }
  if(p->rchild==NULL)                   //后继结点前驱线索化
   p->rtag=1;
  pre=p;
  PreThread(p->rchild);
}
}
void PrintIndex(Bithptr *t)                       //输出线索
{
Bithptr *f;
f=t;
if(f)
{
  if(f->ltag==1&&f->lchild==NULL&&f->rtag==1)   printf("【%c】",f->data);                         //如果是第一个结点
  if(f->ltag==1&&f->lchild!=NULL)               printf("%c→【%c】",f->lchild->data,f->data);     //如果此结点有前驱就输出前驱和此结点
    if(f->ltag==1&&f->rtag==1&&f->rchild!=NULL)   printf("→%c",f->rchild->data);            //如果此结点有前驱也有后继,就输出后继
  else if(f->rtag==1&&f->rchild!=NULL)          printf("【%c】→%c",f->data,f->rchild->data);//如果没有前驱,就输出此结点和后继
  printf("\n");
  if(f->ltag!=1)PrintIndex(f->lchild);
  if(f->rtag!=1)PrintIndex(f->rchild);
}
}      
Bithptr *SearchChild(Bithptr *point,char findnode)            //查找孩子结点函数
{
       Bithptr *point1,*point2;
       if(point!=NULL)
       {
          if(point->data==findnode)   return point;
          else  
     if(point->ltag!=1)  { point1=SearchChild(point->lchild,findnode); if(point1!=NULL)return point1;}         
              if(point->rtag!=1)  { point2=SearchChild(point->rchild,findnode); if(point2!=NULL)return point2;}                  
              return NULL;         
       }
       else  
           return NULL;
}  
Bithptr *SearchPre(Bithptr *point,Bithptr *child)            //查找父亲结点函数
{
       Bithptr *point1,*point2;
       if(point!=NULL)
       {
          if((point->ltag!=1&&point->lchild==child)||(point->rtag!=1&&point->rchild==child))   return point;//找到则返回
          else  
     if(point->ltag!=1)  
     {
      point1=SearchPre(point->lchild,child);
      if(point1!=NULL)
       return point1;
     }         
              if(point->rtag!=1)  
     {
      point2=SearchPre(point->rchild,child);
      if(point2!=NULL)
       return point2;
     }                  
              return NULL;         
       }
       else  
           return NULL;
}
void Insert(Bithptr *root)
{
char ch;
char c;
Bithptr *p1,*child,*p2;
printf("请输入要插入的结点的信息:");
    scanf("%c",&c);
scanf("%c",&c);
    p1=(Bithptr *)malloc(sizeof(Bithptr));        //插入的结点信息
p1->data=c;
p1->lchild=NULL;
p1->rchild=NULL;
p1->rtag=0;
p1->ltag=0;
printf("输入查找的结点信息:");
    scanf("%c",&ch);
scanf("%c",&ch);
child=SearchChild(root,ch);                      //查孩子结点的地址
if(child==NULL){
  printf("没有找到结点\n");
  system("pause");
  return ;
}
else printf("发现结点%c\n",child->data);
if(child->ltag==0)                     //当孩子结点有左孩子的时候
{
  p2=child;
  child=child->lchild;
  while(child->rchild&&child->rtag==0)              //找到左子树下,最右结点
   child=child->rchild;
  printf("发现结点%c\n",child->data);
  p1->rchild=child->rchild;         //后继化  
  p1->rtag=1;
  child->rtag=0;
  child->rchild=p1;                 //连接                     
  p1->lchild=child;                 //前驱化
  p1->ltag=1;
}  
else                              //当孩子结点没有左孩子的时候
{
  p1->lchild=child->lchild;    //前驱化
  child->ltag=0;
  p1->ltag=1;
  child->lchild=p1;
  p1->rchild=child;
  p1->rtag=1;
}
printf("\t插入结点操作已经完成,并同时完成了线索化的恢复\n");
}


为什么这个用了4个头文件了????
2009-10-31 19:00
dreamsea
Rank: 2
等 级:论坛游民
帖 子:25
专家分:24
注 册:2009-10-25
收藏
得分:0 
   用那么多头文件是因为你下面的函数是要从这些头文件中调用的C语言的编写就是各种函数的组合
每个函数都在自己的函数库中,你要用这些函数就要用头文件去调用它们
有时你一个程序所用的函数都在一个函数库中所以就只要1个头文件.否则就要多个了
如最常用的#include<stdio.h>是标准输入输出函数库的头文件

以上是作为一个初学者对C语言的理解不对之处望指正 谢谢
收到的鲜花
  • cyz2008poi2009-11-02 00:12 送鲜花  3朵  
2009-10-31 20:14
sh9264
Rank: 1
来 自:沧州
等 级:新手上路
帖 子:51
专家分:9
注 册:2009-10-24
收藏
得分:0 
有头文件是方便下面函数的调用!头文件的多少取决于函数的大小

这是我的浅见,不对请与更正!
2009-10-31 20:23
cyz2008poi
Rank: 1
来 自:江西南昌
等 级:新手上路
帖 子:28
专家分:5
注 册:2009-1-29
收藏
得分:0 
谢谢上面的解答!
2009-10-31 20:34
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
#include<stdio.h>
其中#include是包含的意思,方便记忆,你可以查一下词典,当然这个格式是c规定的
必须是#include
而<stdio.h>或"stdio.h"表示包含标准输入输出函数的头文件
c语言中不提供输入输出的语句,通过调用库函数来完成
其他的同理,都是包含代码中要用到的库函数的头文件
即你要用到这个库函数,就必须先用#include<*.h>的格式把该库函数的头文件包含进去,才能使用
例如:你如果要用到数学函数sina()就必须在文件头把math.h(数学函数头文件)包含进去,即#include<math.h>
另外,你想看下头文件中都包括了哪些东西的话,你可以在安装文件夹中的include文件中找到
收到的鲜花
  • cyz2008poi2009-11-02 00:11 送鲜花  3朵  

想象力征服世界
2009-10-31 20:43
cyz2008poi
Rank: 1
来 自:江西南昌
等 级:新手上路
帖 子:28
专家分:5
注 册:2009-1-29
收藏
得分:0 
非常感谢大家!
2009-10-31 22:44
另存为
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-10-31
收藏
得分:0 
路过。。。学习学习。。。
2009-10-31 23:06
快速回复:各位大大们请问下问题我是新手!谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044786 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved