问题 问答题

形成酸雨的原理之一可表示如下:

试回答下列问题:

(1)图中三个反应不属于氧化还原反应的是______(填标号).

(2)从保护环境的角度出发,工业上正努力从酸雨产生的根源出发进行治理,以减小酸雨的污染.方法一是将SO2中+4价硫元素变成0价硫元素,利用这一原理,可在工厂的烟道气中通入合适的______(填“氧化剂”或“还原剂”)除去SO2;方法二是一些工厂用过量的氨水(NH3•H2O)吸收SO2,此化学反应的产物是______.

(3)火力发电厂燃烧煤的废气中往往含有SO2、O2、N2、CO等,为了除去有害气体SO2并变废为宝,常常用粉末状的碳酸钙或熟石灰的悬浊液洗涤废气,反应产物为硫酸钙等.写出用CaCO3悬浊液洗涤上述废气的化学方程式:______.

答案

(1)含硫物质燃烧生成二氧化硫是氧化还原反应,二氧化硫被氧化为三氧化硫是氧化还原反应,三氧化硫溶于水生成硫酸是化合反应,反应过程中无元素化合价变化,是非氧化还原反应;

故答案为:③;

(2)减小酸雨的污染.方法一是将SO2中+4价硫元素变成0价硫元素,利用这一原理是利用二氧化硫的氧化性,可以通入还原剂还原二氧化硫除去二氧化硫;用过量的氨水(NH3•H2O)吸收SO2,二氧化硫是酸性氧化物和碱反应生成盐和水,氨水过量反应生成亚硫酸铵和水;

故答案为:还原剂,亚硫酸铵、水;

(3)废气中往往含有SO2、O2、N2、CO等,为了除去有害气体SO2并变废为宝,常常用粉末状的碳酸钙或熟石灰的悬浊液洗涤废气,反应产物为硫酸钙等,利用氧气氧化二氧化硫生成三氧化硫,和碳酸钙反应生成硫酸钙和二氧化碳写出,发生的反应为:2SO2+O2+2CaCO3═2CaSO4+2CO2

故答案为:2SO2+O2+2CaCO3═2CaSO4+2CO2

单项选择题
填空题

阅读以下说明和C代码,将应填入 (n) 处的字句写在对应栏内。

[说明]

下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ryt、try、tyr、ytr、yrt),但考虑到破译速度,采用如下方法。

注意到单词列表中不存在组成字符完全相同的单词(如Hack12与Hack21包含完全相同的字符),因此将单词中的字符进行重组再进行比较,例如,try单词重组为rty(按ASCⅡ码顺序),这样不管打乱的单词是什么顺序,只要是由r、t、y三个字母组成的均破译为try,大大提高破译速度。程序中借助二叉排序树以进一步提高查找效率,二叉排序树左子树(如果有)上的节点对应的值均小于根节点的值,右子树(如果有)上的节点对应的值均大于根节点的值。

函数中使用的符号定义如下:

#define NumberofWords 1275//单词总数

#define MaxLength 10//最长单词所含字符数

char WordList[NumberofWords][MaxLength];//存储单词列表

int cmp(Node *q,Node *p);//q与p比较。p小,返回负值;P大返回正值:相等,返回0

typedef struct Node(//二叉树节点

char *eleLetters;//重组后的字符串

int index;//对应单词表中的下标

struct Node *lChiId,*rChiid;//左右子节点

}Node;

[C代码]

void reCompose(Node *p,char *temp)

//重纰,亦即将temp字符串中的字符升序排序,存储于p节点中

//采用直接插入排序法

{

char c;

strcpy(p->eleLetters,temp);//

int len=strlen(temp);

int i,j,k;

for(i=0;i<len-1;i++){

k=i;

for(j=i+1;j<lan;j++){

if(p->eleLetters[j]<P->eleLetters[k])k=J;

}

if( (1) ){

C=P->eleLetters[i];

P->eleLetters[i]=P->eleLetters[k];

P->eleLetters[k]=c;

}//if

}//for

};

int find(Node &root,char *temp)

//在二叉排序树root中查找与temp匹配的单词。

//若匹配返回相应单词在WordList中下标;若查找失败,返回-1

{

Node *P,*q;

int flag;

P= (2) ;//临时存储

reCompose(p,temp);//将temp重组

q=&root;

while((flag= (3) )&&q !=NULL){

if(flag<0){//搜索左子树

q=q->lChiid;

}else(//搜索右子树

q=q->rChild;

}

}//while

if(flag==0){//找到匹配的,保存下标

return (4)

}

}

if( (5) ){//查找失败

printf("cant unscramble the following word:%s",temp);;

return -1;

}

};

(5)处填()。