![](https://lstatic.shangxueba.com/jiandati/h5/images/m_q_title.png)
【说明】
在某嵌入式处理器上,编写以下两段秸序(编译选项中,存储采用4字节对齐方式)。
程序段1:
struct studentl {
char name [10] ;
long sno;
char sex;
float score [4] ;
*pl, al, bl;
程序段2:
union student2 {
char name [10] ;
long sno;
char sex,
float score [4] ;
*p2, a2, b2;
汉诺塔问题说明:有n个盘子在A处,盘子从小到大,最上面的盘予最小,程序要
把这n个盘子从A处搬到C处,可以在E处暂存,但任何时候都不能出现大的盘子压
在小的盘子上面的情况。
下列是一段求解汉诺塔问题的C语言程序。
include
void move (int n, char a, char c)
{
static int Step=l;
printf ("Step %2d: Disk %d %c..--> %c\n", Step, n, a, c) ;
Step++;
}
void Hanoi (int n, char a, char b, cnar c)
{
if (n>l)
{
Hanoi (n-l, a, c, b) ;
move (n, a. c) ;
Hanoi (n-l, b, a, c) ;
}
else move (n,a,c);
}
void main()
{
Hanoi(3, ’A’, 、B’, 、C ’);
}
【问题1】(3分)
C语言函数的一般格式为:
<函数类型> <函数名> (<参数列表>)
{
<函数体>;
}
简答下述问题,将答案填写在答题纸中对应栏目。
(l)<函数类型>的含义是什么?
(2)<参数列表>的含义是什么?
(3)C语言函数之间的参数如何传递?
【问题2] (6分)
回答问题,将答案填写在答题纸中对应栏目。
(1)sizeof(struct studentl)结果是多少
(2) sizeof(union student2)结果是多少
(3)变量a2在程序段2中定义,写出执亍以下语句后的输出结果。
strcpy (a2. name,¨zhangwei¨);
a2.sex=’f’;
printf ("%s¨, a2 .name);
【问题3](6分)
仔细阅读求解汉诺塔问题的C语言程序,完成其中(1)~(4)空白填空,将答案
填入答题纸的对应栏内。
运行结果为:
Step1:Disk l A---->C
Step 2: (l)
Step 3: Disk I C---->B
Step4: (2)
Step 5: (3)
Step 6: Disk 2 B---->C
Step 7: (4)