问题 填空题

自来水消毒过程中通常会发生化学反应,其反应的微观过程可用下图表示:

 

(1)请写出该反应的化学方程式                            

(2)A物质属于       。(填物质分类)

(3)D物质中氯元素的化合价为       

(4)分析以上微观过程模拟图,你能总结出的一条结论是                       

答案

(1)H2O+Cl2=HCl+HClO(2分)

(2)化合物或纯净物或氧化物(1分)

(3)+1(2分)

(4)水与氯气反应生成盐酸和次氯酸(或化学反应前后原子种类数目不变,或化学反应前后质量守恒,其他合理答案都正确)(2分)

分析:(1)由反应的模型图及物质的微观构成模型图可知反应物是氯气和水,生成物是盐酸和次氯酸,再由各物质的微粒个数关系可写出反应的方程式;

(2)根据A物质的元素组成判断其种类;

(3)根据物质的化学式和化合价原则判断元素的化合价;

(4)通过比较原子在化学反应前后原子的种类与数量的特点.

解答:解:(1)通过反应的模型图及物质的微观构成模型图可知:反应物是氯气和水,生成物是盐酸和次氯酸,各物质的微粒个数关系是1:1:1:1,反应的方程式为H2O+Cl2═HCl+HClO;

(2)A物质是由氢、氧两种元素组成的纯净物,属于化合物,也是氧化物.

(3)物质D的化学式为HClO,根据化合物中化合价代数和为零原则,氢元素通常显+1价,氧元素通常显-2价,由可求出氯元素的化合价为+l价,

(4)从图中可以看出:反应前有一个氧原子、两个氢原子、两个氯原子,反应后也有一个氧原子、两个氢原子、两个氯原子,反应前后原子的种类和数目没有改变.

故答案为:(1)H2O+Cl2═HCl+HClO  

(2)氧化物(化合物或纯净物)

(3)+1  

(4)化学反应前后原子的种类与数量没有改变.

问答题

[说明]
背包问题就是有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的选择方案,使选中物品的总重量不超过指定的限制重量,而且选中物品的价值之和为最大。
背包问题是一个典型的NP完全难题。对该问题求解方法的研究无论是在理论上,还是在实践中都具有一定的意义。如管理中的资源分配、投资决策、装载问题等均可建模为背包问题。
常用的背包问题求解方法很多,但本题中采用了一种新的算法来求解背包问题。该算法思想为:首先要对物品进行价重比排序,然后按价重比从大到小依次装进包裹。这种方法并不能找到最佳的方案,因为有某些特殊情况存在,但只要把包中重量最大的物品取出,继续装入,直到达到limitweight,这时的物品就是limit weight的最大价值。这种算法不需要逐个进行试探,所以在数据非常大时,执行效率主要由排序的时间复杂度决定。该算法的流程图为下图。
仔细阅读程序说明和C程序流程图及源码,回答问题1和问题2。
[流程图]




[程序说明]
struct Thing:物品结构
typedef struct Bag:背包结构类型
input ( ):将物品按序号依次存入数组函数
inbag ( ):物品按物价比入包函数
init ( ):初始化函数
sort ( ):对物品按价格重量比排序函数
outbag ( ):取出包中weiht最大的物品函数
print ( ):最佳方案输出函数
[C程序]
#define N 255
struct Thing
double weight;
double value;
double dens;
thing[N];
typedef stmct Bag
Thing thing [N];
double weighttmp;
double sumvalue;
bag,best;
inbag ( )

do
bag.thing[i]=thing[i]
(1)
(2)
i++;
while ( (3) )

init ( )

for (inti=0; i<N; i++)

input (thing[i].weight, thing [i].value)
thing [i].dens=thing[i].value/thing [i].weight;
;

main ( )

init ( );
sort ( );
inbag ( );
do
best=bag; //把包中物品放入暂存数组
outbag ( ); //取出包中weight最大的物品
(4)
while ( (5) )
print (best); //输出temp因为是最佳方案

[问题2]
求解“背包问题”常用的方法有哪几种各有什么样的特点

单项选择题