问题 问答题

从海水中可以获得淡水、食盐,并可提取镁和溴等物质.

(一)海水淡化的方法主要有______(填一种).

(二)从海水中提取溴和镁的流程如图所示:

(1)提取Br2时,第一次通入Cl2后发生反应的离子方程式是______;②中SO2表现______(填“氧化”或“还原”)性;第二次通入Cl2后,要提取Br2还要进行的操作为______.

(2)为了实现对镁离子的富集,①中加入的足量试剂是______(填化学式);

试从节约能源,提高金属镁的纯度分析,以下最适宜的冶炼的方法是______(填字母).

A.Mg(OH)2

MgO
电解
2800℃
Mg

B.Mg(OH)2

MgO
C、真空
1352℃
Mg

C.Mg(OH)2

①过量盐酸
②△
无水MgCl2
电解
714℃
Mg

D.Mg(OH)2

盐酸
MgCl2溶液
活泼金属
Mg.

答案

(一)淡化海水,应将水与海水中的盐进行分离,常用方法有蒸馏、电渗析以及离子交换法等,最简单的是蒸馏的方法,故答案为:蒸馏;

(二)向苦卤中加入试剂①得到Mg(OH)2,且不能引入新的杂质离子,则①应该是NaOH,Mg(OH)2溶于稀盐酸得到MgCl2溶液,将MgCl2.6H2O在HCl氛围中脱水得到MgCl2,电解熔融MgCl2得到Mg;

向溶液中通入过量Cl2,发生反应2Br-+Cl2=2Cl-+Br2,得到低浓度的Br2,用热空气将Br2吹出,然后用二氧化硫还原溴得到溴离子,反应方程式为SO2+2H2O+Br2=H2SO4+2HBr,向氢溴酸中通入氯气,发生反应2Br-+Cl2=2Cl-+Br2,从而得到高浓度的Br2

(1)通过以上分析知,提取Br2时,第一次通入Cl2后发生反应的离子方程式是2Br-+Cl2=2Cl-+Br2;②中发生的反应为SO2+2H2O+Br2=H2SO4+2HBr,S元素化合价由+4价变为+6价,所以SO2表现还原性;从溴水中获取溴单质采用萃取的方法,所以第二次通入Cl2后,要提取Br2还要进行的操作为萃取,

故答案为:2Br-+Cl2=2Cl-+Br2;还原;萃取;

(2)通过以上分析知,为了实现对镁离子的富集,①中加入的足量试剂是NaOH,

A.氧化镁熔点很高,电解熔融态氧化镁会增加成本,故不适合;

B.真空、高温还原MgO增加成本,且条件难以控制,故不适合;

C.镁是活泼金属,采用电解熔融氯化镁的方法冶炼镁,故适合;

D.镁是活泼金属,不能采用置换法获取,故不适合;

故选C;

故答案为:NaOH;C.

问答题

已知在文件IN4.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT4.DAT中。
注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
【试题程序】
#include <stdio.h>
#include <memory.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#define MAX 100
typedef struct
char dm[5]; /*产品代码*/
char mc[11]; /*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*金额*/
PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
void SortDat()


void main()

memset(sell,O,sizeof(sell));
ReadDat();
SortDat();
WriteDat();

void ReadDat()

FILE *fp;
char str[80],ch[11];
int i;
fp=fopen("IN4.DAT","r");
for(i=O;i<100;i++)

fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;

fclose(fp);

void WriteDat(void)

FILE *fp;
int i;
fp=fopen("OUT4.DAT","w");
for(i=0;i<100;i++)
fprintf(fp,"%s %s %4d %5d %101d\n"sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,
sell[i].je);
fclose(fp);

单项选择题