问题 实验题

富马酸亚铁(分子式为C4H2O4Fe,结构简式为)是一种限量使用的铁强化剂。

(1)下图为实验室模拟工业制取富马酸亚铁的流程图:

①根据题意,请你写出富马酸的结构简式:________________________。

②绿矾(FeSO4·7H2O)在保存过程中形成的杂质主要有________(填化学式)。

③操作Y包括________、冷却结晶、过滤、洗涤、干燥等。

④判断操作Y中“洗涤”富马酸亚铁产品表明已洗净的实验方法是___________。

(2)设计一个实验方案,证明所得富马酸亚铁产品属于亚铁盐(可供选用的试剂有KSCN溶液、H2O2溶液、稀硫酸。)。填写下表相应空格:

步骤实验操作与现象
取富马酸亚铁产品1.5  g,加入稀硫酸25  mL,用水稀释至50  mL,加热使其完全溶解并反应,冷却后过滤(除去生成的富马酸及可能过量的反应物),保存滤液
 
 
 

答案

(1)①HOOCHC===CHCOOH

②Fe2(SO4)3和Fe(OH)3 

③蒸发浓缩

④取洗涤液,向其中加入少量盐酸酸化后再加入氯化钡溶液,无白色沉淀生成

(2)②取少量滤液,滴加KSCN溶液,不显血红色

③再向上述溶液中滴加H2O2溶液,溶液显血红色

题目分析:(1)①由富马酸亚铁的结构简式可推断富马酸的结构简式为HOOCHC===CHCOOH,②由于亚铁离子不稳定,容易被氧化成三价铁离子,铁离子在溶液中会发生水解,生成氢氧化铁,所以绿矾(FeSO4•7H20)在保存过程中形成的杂质主要有硫酸铁、氢氧化铁等杂质③得到的含有富马酸亚铁的溶液需要经过蒸发浓缩、冷却结晶、过滤、洗涤、干燥等操作,最后得到富马酸亚铁产品;④富马酸亚铁表面的可溶性杂质离子有Na+、SO42-等,可以从检验洗涤液中是否含Na+或SO42-来设计实验.所以检验方法是:取最后一次洗涤液,先加入稀盐酸,再加入氯化钡溶液,无白色沉淀生成,说明已洗涤干净. 

(2)检验亚铁离子的方法:滴加硫氰化钾溶液,溶液没有变成红色,证明溶液中没有三价铁离子;然后加入氧化剂将亚铁离子氧化成三价铁离子,溶液变成红色,证明原溶液中存在亚铁离子,结合题给试剂故答案为:

步骤实验操作与现象
取富马酸亚铁产品1.5  g,加入稀硫酸25  mL,用水稀释至50  mL,加热使其完全溶解并反应,冷却后过滤(除去生成的富马酸及可能过量的反应物),保存滤液
取少量滤液,滴加KSCN溶液,不显血红色
再向上述溶液中滴加H2O2溶液,溶液显血红色
考点:3+的水解性、Fe2+的还原性及检验知识.

填空题

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

[说明]

某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图5-1所示。

现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图5-2所示的类图。其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图5-1中的甜点菜单。类MenuItem表示菜单中的菜式。

[C++代码]

#include<iostream>

#include<list>

#include<string>

using namespace std;

clas s MenuComponent

protected: string name;

public:

MenuComponent(string name) this->name=name;

String getName()return name;

(1) : //添加新菜单

virtual void print()=0; //打印菜单信息

;

clasS MenuItem: public MenuComponent

private: double price;

public:

Menultem(string name, double price): MenuComponent(name)this->price=price;

double getPrice()return price;

void add(MenuComponent* menuComponent) return; //添加新菜单

void print() cout<<" "<<getName()<<", "<<getPrice()<<end1;

;

clasS Menu: public MenuComponent

private: list< (2) > menuComponents;

pubiic:

Menu(string name): MenuC0mponent(name)

void add(MenuComponent* menuComponent) //添加新菜单

(3) ;

void print()

cout<<"\n"<<getName()<<"\n-------------------------"<<end1;

std::list<MenuC0mponent*>::iterator iter;

for(iter=menuComponents.begin(); iter!=menuComponents. end(); iter++)

(4) ->print();

;

void main()

MenuComponent* allMenus=new Menu("ALL MENUS");

MenuComponent* dinerMenu=new Menu("DINER MENU");

…//创建更多的Menu对象,此处代码省略

allMenus->add(dinerMenu); //将dinerMenu添加到餐厅菜单中

…//为餐厅增加更多的菜单,此处代码省略

(5) ->print(); //打印饭店所有菜单的信息

文中(2)处应为()。

单项选择题