数据结构第6天

1、有一个变量unsigned char data;

请写出将data第6位置1的表达式

data = data | 1 << 5

请写出将data第6位清0的表达式

data = data & ~(1 << 5)

请写出将data第6位取反的表达式:

data = data ^ 1 << 5

说明:最右边位为第0位,用十六进制表示

2、(1)执行语句"k=11>>1"后,变量k的当前值是

11的二进制是1011 右移一位 -> 101 =5

右移一位除以2

(2)请写出程序执行后a,b,c的值分别为多少

d的值为多少并写出原因

a:8 指针为8位

b:10 数组的整个空间大小

c:5 不包括 \0

d:随机值,errInfo3中没有 '/0',计算长度时没有暂停条件

3、系统中有如下三个全局变量,且已经为这些变量分配内存,类型声明为:

extern WinInfo tmpInfo1;

extern BoxInfo tmplnfo2

extern BoxInfo*tmplnof3:

请根据要求写出赋值语句

(1)为tmpInfo1的域height 赋值为1:

tmpInfo1.height = 1

(2)为tmpInfo1的域with 赋值为2:

tmpInfo1.baseInfo.with = 2

(3)为tmpnfo2的域height赋值为1

tmpInfo2.height = 1

(4)为tmpInfo2的域with 赋值为2

tmpInfo2.baseInfo -> with = 2

(5)为tmpInfo3的域height 赋值为1

tmpInfo3 -> height = 1

(6)为tmpInfo3的域with 赋值为2

tmpInfo3 -> baseInfo -> with = 2

4、有如下程序段:

执行函数 UserInit 后b中的值是

将 3 的地址传进fun里
将 3 作为首地址往后访问6个,访问到9

5、(1) A、B两个程序通过首地址为0x80000000的共享内存传递int型数据,A往该地址写值,B从该地址读值。该共享内存空间足够大

请写出A程序将int tmp变量写入地址为0x80000000内存的语句:

*(0x80000000) = temp

请写出B从地址为0x80000000内存读取数据并赋值给int tmp的语句:

temp=*(0x80000000)

(2)有如下语句:

char *buf = (char*)malloc(100);

该缓存用于封装通信数据包,请写出在 buf[4] 开始的四个字节内写入int型变量tmp的语句:

*(buf+4) = temp

(3)有如下程序段:

由于在定义数组时长度不能用变量,因此上述代码无法编译通过。在不改变程序段功能的情况下,请修改上述代码,改正其错误:

char *buf[100] 暂定一个比较大的数

6、假设循环队列用数组实现,其定义如下

队列示例:

循环队列中保存了1、2、3三个数据的状态

(1)假如队列未满,现有变量data需要入队,请写出表达式

seqn[tail]=data; tail=(tail+1+32)%32;

(2)假如队列未空,现在需要从队列取一个元素并赋值给变量data,请写出表达式

data=seqn[head]; head=(head-1+32)%32

(3)请写出队列为空的判断条件

head==tail

(4)请写出队列满的判断条件

head==(tail+1+32)%32

(5)请写出清空队列的表达式

memset(seqn,0,sizeof(seqn));

(6)请写出计算队列中元素个数的表达式

(tail - head +32)%32

(7)队列最多可以存放几个元素:

22,有一个元素是留出来判断是否为满的

7、在某操作系统中用数组unsigned char Rdy[8] 的64个位码来表示64个任务的状态,该数组称为就绪表。就绪表中的每一位表示某一个任务的状态,任务就绪则对应位置为1,任务非就绪则对应位清0。

若任务0就绪,则Rdy[0]中的位0置为1,

若任务1就绪,则Rdy[0]中的位1置为1,

依次类推若任务63就绪,则Rdy[7]中的位7置为1

(1)若任务i就绪,请写出设置就绪表Rdy[ ]的表达式:

任务0-8:Rdy[0]

任务9-16:Rdy[1]

任务17-24:Rdy[2]

Rdy[ i / 8 ] = Rdy[ i / 8 ] | 1 << ( i % 8 )

(2)若任务j从就绪态转为非就绪态,请写出设置就绪表Rdy[ ]的表达式

Ray[ j / 8 ] = Ray[ j / 8 ] & ~(1 << ( i % 8 ))

(3)在某一调度时刻就绪表中有多个任务为就绪态,假设任务0的优先级最高,任务63的优先级最低,请设计一个算法,找出最高优先级任务

cs 复制代码
int fun(unsigned char* rdy)
{
    for(int i=0;i<8;i++){    //控制元素
        for(int j=0;j<8;j++){    //控制位数
            if(rey[i] & 1<<j){    //第i个元素的第j位为1时 return
                return i*8+j;
            }
        }
    }
    return -1;
}

8、有如下程序段:

请分析上述代码存在何种隐患,应如何修改?

只改变了value的值,没有改变外部数据

改为:用 int** value接 ,data[i]=**value

9、有如下程序:

请分析上述代码存在的问题,可能会引发何种后果

char 只能定义字符型变量,程序报错

10、有如下程序:

(1)请分析上述代码存在的bug?

只对p进行了指针指向赋值,没有对str做改变

(2)请修正代码(写上行号与修改后的代码)

//line4 GetMemory(&str) 传址

//line1 void GetMemory(char **p) 用二级指针去接

//line2 *p=(char*)malloc(10); *p访问str的空间 *p=str

相关推荐
.别止步春天.4 分钟前
Python中lambda表达式的使用——完整通透版
数据结构·python·算法
曳渔27 分钟前
Java-数据结构-二叉树-习题(三)  ̄へ ̄
java·开发语言·数据结构·算法·链表
shark-chili38 分钟前
数据结构与算法-Trie树添加与搜索
java·数据结构·算法·leetcode
Crossoads2 小时前
【数据结构】排序算法---快速排序
c语言·开发语言·数据结构·算法·排序算法
眰恦3742 小时前
数据结构--第五章树与二叉树
数据结构·算法
未 顾2 小时前
JavaSE--集合总览02:单列集合Collection的体系之一:List
数据结构·list
wx200411023 小时前
Codeforces Round 973 (Div. 2) - D题
数据结构·c++·算法
Crossoads3 小时前
【数据结构】排序算法---基数排序
c语言·开发语言·数据结构·算法·排序算法
爱敲代码的憨仔3 小时前
第二讲 数据结构
数据结构·算法
问道飞鱼3 小时前
每日学习一个数据结构-布隆过滤器Bloom Filter
数据结构·学习·哈希算法