- 论坛徽章:
- 0
|
1、 写出以下程序的输出结果:
main()
{
char str[]="7654321";
char *pstr;
pstr=str;
printf("%c",*pstr++);
printf("%c",*pstr);
printf("%c",*++pstr);
printf("%c",++*pstr);
}
2、阅读下列程序说明和C代码,将应填入__(n)__处的字句写出。
[程序说明]
设 M 叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分 (设为一个字符) 和用"( )",括起来的各子树的列表 (如有子树的话) ,各子列表间用",",分隔。例如下面的三叉树可用列表 a( b( c,d ),e,f( g,h,i ))表示。
本程序输入列表,生成一棵 M 叉树,并由 M 叉树将子节点方向输出列表。假定输入无错误。
[程序]
#include〈stdio.h〉
#include〈stdlib.h〉
#define M 3
typedef struct node{
char val;
struct node *subTree[M];
} NODE;
char buf[255] ,*str = buf;
NODE *d = NULL;
NODE *makeTree( ) /*由列表生成M叉树*/
{
int k; NODE *s ;
s = __(1)__;
s -> val = *str++ ;
for ( k = 0 ; k < M ; k++ ) s-> subTree[k] = NULL ;
if(*str=='('){
k = 0;
do
{
str++;
s -> subTree[k] = __(2)__ ;
if ( *str == ')' ) { str++; break ; }
k = k+1 ;
} while ( __(3)__ );
}
return s ;
}
void walkTree( NODE *t ) /*由 M 叉树反向输出列表*/
{
int i ;
if ( t != NULL)
{
__(4)__;
if ( t -> subTree[0] == NULL ) return ;
putchar ( '( ' ) ;
for ( i = M-1 ; i >=0 ; i--)
{
if (t->subTree != NULL )
{
__(5)__;
if ( i != 0 )
__(6)__ ;
}
}
putchar ( ') ' ) ;
}
}
void main( )
{
printf( "Enter exp:" ) ;
scanf( "%s" , str ) ;
d = makeTree() ;
walkTree( d ) ; putchar( '\n') ; |
|