列表

详情


阅读以下说明,回答问题1至问题3,将答案填入答题纸对应栏内。
【说明】
在某嵌入式处理器上,编写以下两段程序(编译选项中,存储采用4字节对齐方式)。


汉诺塔问题说明:有n个盘子在A处,盘子从小到大,最上面的盘子最小,程序要把这n个盘子从A处搬到C处,可以在E处暂存,但任何时候都不能出现大的盘子压在小的盘子上面的情况。
下列是一段求解汉诺塔问题的C语言程序。


【问题1】(3分)
C语言函数的一般格式为:


简答下述问题,将答案填写在答题纸中对应栏目。
(1)<函数类型>的含义是什么?
(2)<参数列表>的含义是什么?
(3)C语言函数之间的参数如何传递?
【问题2】(6分)
回答问题,将答案填写在答题纸中对应题目。
(1)sizeof(struct student1)结果是多少?
(2)sizeof(union student2)结果是多少?
(3)变量a2在程序段2中定义,写出执行以下语句后的输出结果。


【问题3】(6分)
仔细阅读求解汉诺塔问题的C语言程序,完成其中(1)~(4)空白填空,将答案填入答题纸的对应栏内。


参考答案:

【问题1】
(1)<函数类型> 的含义是:函数返回值的类型,无返回值时应写为void。
(2)<参数列表> 的含义是:函数的接口参数,可以为空,即表示没有参数,但函 数名后面的0不能省略。
(3)C语言函数之间的参数传递是传值,是通过栈来传递的。
【问题2】
(1)sizeof(struct studentl)结果为:31
(2)sizeof(union student2)结果为:16
(3)执行语句后的结果为:“fhangwei”
【问题3】
(1)Disk 2 A--->B

(2)Disk 3 A--->C
(3)Disk 1 B--->A
(4)Disk 1 A--->C

详细解析:

本题考查C语言应用知识。
【问题1】

C语言函数的一般格式为:
<函数类型> <函数名> (<参数列表>){
<函数体>;
}
<函数类型> :一般函数都会返回一个值(return 后面跟随的值),这个返回值的数据类型,就是函数的返回类型。也有一些函数没有返回值,只是执行一些具体的操作(比如打印输出等),这些没有返回值的函数在定义时其返回类型为void型。
<函数名>:函数头部分中用小括号括起来的,是函数需要接收的变量的声明,即形式参数(简称形参)声明,多个形参用逗号分隔。也有不接收任何形参的函数,此时,在小括号中一般会写入void。
在 C 语言中,函数的参数传递方式有两种:值传递与地址传递。
值传递的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。
地址传递的特点是形参并不存在存储空间,编译系统不为形参数组分配内存。数组名或指针就是一组连续空间的首地址。因此在数组名或指针作函数参数时所进行的传送只是地址传送,形参在取得该首地址之后,与实参共同拥有一段内存空间,形参的变化也就是实参的变化。
【问题2】
sizeof是C语言中保留关键字,也可以认为是一种运算符,单目运算符;sizeof是计算对象所占的字节数,通常用来查看变量、数组或结构体等所占的字节个数。
【问题3】
汉诺塔问题是指在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

上一题