问题 选择题

当你做任何一个动作时,都会包括以下步骤:①相应的骨受到牵引,②骨绕关节移动,③骨骼肌接受神经传来的兴奋,④骨骼肌收缩。这些步骤发生的正确顺序是

A.①②③④

B.②①③④

C.③④①②

D.④①②③

答案

答案:C

题目分析:骨的位置的变化产生运动,但是骨本身是不能运动的,骨的运动要靠骨骼肌的牵拉,骨骼肌中间较粗的部分叫肌腹,两端较细的呈乳白色的部分叫肌腱可绕过关节连在不同的骨上.骨骼肌有受刺激而收缩的特性,当骨骼肌受神经传来的刺激收缩时,就会牵动骨绕着关节活动,于是躯体就会产生运动.因此当你做任何一个动作时,都会包括以下步骤:③骨骼肌接受神经传来的兴奋,④骨骼肌收缩,①相应的骨受到牵引,②骨绕关节转动.

选择题
问答题


阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。
【说明】
在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4个不同设备驱动程序,但没有用到函数指针变量。
【C语言代码】
/*变量与类型说明*/
#include "stdio.h"
#include "stdlib.h"
extern int sys_status;
extern int Dev_drv1(int arg1, int arg2);
extern int Dev_drv2(int arg1, int arg2);
extern int Dev_drv3(int arg1, int arg2);
extern int Dev_drv4(int arg1, iht arg2);
#define NOERROR 0

type struct {
int _fd;
} TYP_DEV_TAB;
TYP DEV_TAB dev_tab[50]= {101,99, 80, 120,};

/*程序代码*/
void manage_device(int devid, int arg1, int arg2)
{ int place ;
int ret;
for(place=0 ; place<50 ; place++)
if dev_tab [place]. fd == devid) break;
if(place>=50)
printf(" NO DEVICE fd = %d\n ",devid);
switch(dev_tab [place]._fd) {
case 80:
ret = Dev_drv3(int arg1,int arg2);
break;
case 99:
ret = Dev_drv2(int arg1,int arg2);
break;
case 101:
ret = Dev_drv1(int arg1,int arg2);
break;
case 120:
ret = Dev_drv4(int arg1,int arg2);
break;
}
if (ret!=NOERROR)
printf(" DEVICE %d error!\n ", devid);
}

int Dev_drv1(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}

int Dev_drv2(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}

int Dev_drv3(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}

int Dev_drv4(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/

【问题4】
在设备驱动程序(函数)Dev_drv1中,对指针ptr的说明如下:
【C语文代码】
int Dev_drv1(int arg1,int arg2 )
{
struct node {
int ID;
char name [20];
int range;
} ;
struct node *ptr;
/*其他局部变量声明,略*/
ptr = (struct node *)malloc(sizeof(struct node)*100);
/*其他程序代码,略*/
}
设int为32位整数,char占8位。当对指针ptr赋完值后的值为0x3751CO,若再执行一条“ptr++;”语句,此时ptr的值为多少 (用十六进制表示)。