2、null应该写NULL(大写才行)
3、struct node *lchild,*rchild后边全用的是rchild,你定义的是rchlid
#include<stdlib.h>
typedef struct node
{
int data
struct node *lchild,*rchild
}bintnode
typedef bintnode *bintree
bintree createbintree(bintree t)
void preorder(bintree t)
void inorder(bintree t)
void postorder(bintree t)
void main()
{ bintree t
char ch1,ch2
printf("\n xunzheba:\n")
ch1='y'
while(ch1=='y'||ch1=='Y')
{
printf("\nA")
printf("\nB")
printf("\nC")
printf("\nD")
printf("\nE")
scanf("\n%c",&ch2)
switch(ch2)
{
case 'a':
case 'A':
printf("xianxujianli:")
t=createbintree(t)
break
case 'b':
case 'B':
printf("xianxubianli:")
preorder(t)
break
case 'c':
case 'C':
printf("zhongxubianli:")
inorder(t)
break
case 'd':
case 'D':
printf("houxubianli:")
postorder(t)
break
case 'e':
case 'E':
ch1='n'
break
default:
printf("cuo wu shu ru:")}}}
bintree createbintree(bintree t)
{ int i
scanf("\n%d",&i)
if(i==0)
t=NULL
else
{
t=(bintree)malloc(sizeof(bintnode))
t->data=i
t->lchild=createbintree(t->lchild)
t->rchild=createbintree(t->rchild)}
return t
}
void inorder(bintree t)
{if (t)
{ inorder(t->lchild)
printf("%3d",t->data)
inorder(t->rchild)
}}
void preorder(bintree t)
{ if(t)
{ printf("%3d",t->data)
preorder(t->lchild)
preorder(t->rchild)
}}
void postorder(bintree t)
{ if (t)
{postorder(t->lchild)
postorder(t->rchild)
printf("%3d",t->data)}
}
输出结果是:
xunzheba:
A
B
C
D
E
手工算循环
除以16
取余数
即可。
例如,10进制
3246
转16进制:
3246/16
商
202
余
14
(十六进制
e)
202/16
商
12
余
10(十六进制
a)
12/16
商
0
余
12(十六进制
c)
写成
十六进制
cae
计算机
c
语言,用
%x
格式输出
整型变量的值
即可:
例如:
printf("%x",
3246)
输出:cae
程序例子:
#include
<stdio.h>
int
main(
)
{
int
a=3246
//假定要转换的10进制数是
3246,赋给变量
a,
//或通过输入语句
scanf("%d",&a)
输入给
a
printf("Decimal:
%d
Hex:
%#x
",a,
a)
//
输出
a
的10进制值
和
16进制值
return
0
}
输出:
Decimal:
3246
Hex:
0xcae
用
%#x
格式输出
,数值前面自动添加前缀
0x,表示是
16进制。
若用
%x
格式输出,
则不加前缀,得:
cae
这是一个switch分支语句,与之对应的就是if(){...}else{...}语句,你说的case2:case3:连在一起写的意思是,当传入switch的条件变量为2或者3时,做同样的处理。只要case后面没有break程序就会一直执行下去。case 1: n+=kbreak//当case分支遇到break就跳出switch结构
case 2://2和3做同样的处理
case 3: n+=kbreak