用如图装置制取、提纯并收集表中的四种气体(a、b、c表示相应仪器中加入的试剂),其中可行的是
答案:C
题目分析:A不正确,因为NO2能被氢氧化钠溶液吸水;B不正确,因为该反应需要加热;D不正确,因为氨气的密度小于空气的,应该用向下排空气法收集,所以正确的答案选C。
点评:常见气体的收集方法是:1.排水法,适用于不易溶于水的气体。例如氢气,氧气;2.向上排空气法,适用于比空气密度大,溶于水的气体,例如二氧化碳,氯气;3,向下排空气法,适用于比空气密度小,溶于水的气体,例如氨气。
用如图装置制取、提纯并收集表中的四种气体(a、b、c表示相应仪器中加入的试剂),其中可行的是
答案:C
题目分析:A不正确,因为NO2能被氢氧化钠溶液吸水;B不正确,因为该反应需要加热;D不正确,因为氨气的密度小于空气的,应该用向下排空气法收集,所以正确的答案选C。
点评:常见气体的收集方法是:1.排水法,适用于不易溶于水的气体。例如氢气,氧气;2.向上排空气法,适用于比空气密度大,溶于水的气体,例如二氧化碳,氯气;3,向下排空气法,适用于比空气密度小,溶于水的气体,例如氨气。
【应用说明】
本应用运行时,由用户输入一个正整数n后自动产生n个正整数,然后按照用户的指定要求对该组数进行处理。该应用的运行界面如下图所示:
1.窗体中有两个文本框。(txtSrc,txtObj)、两个标签(lblSrc,lblObj)、三个命令按钮(cmdGendat,cmdProc,cmdQuit)和一个弹出式菜单(procMenu,初始时不可见)。
2.文本框txtSrc(由标签lblSrc提示)用于显示产生的数据,文本框txtObj(由标签lblObj提示)用于显示处理结果,要求每行显示一个整数。
3.程序启动时,命令按钮cmdProc(运算要求)不可用。单击命令按钮cmdGendat(产生数据)后,提示用户输入一个n的值并生成n个正整数存入数组元素a(1)~a(n),然后将数据逐行显示在txtSrc中,并设置命令按钮cmdProc可用。
4.单击命令按钮cmdProc(运算要求)后弹出菜单。选择菜单项并单击后,进行相应处理并将结果显示在txtObj中,同时将lblObj的标题改为该菜单项表示的处理命令。
弹出式菜单“运算要求”的结构如下表所示:
标 题 | 名 称 | 层 次 |
运算要求 | procMenu | 1 |
排序 | Sorting | 2 |
递增排序 | Ascend | 3 |
递减排序 | Descend | 3 |
找特殊数 | SpecNum | 2 |
中位数 | MidNum | 3 |
求均数 | AvgNum | 3 |
一个整数序列的中位数是指对该序列进行非递减(增)排列后最中间位置上的元素。若序列长度为偶数,则取中间两个元素的平均值为其中位数。
【属性设置】
为实现单击命令按钮cmdProc后弹出“运算要求”菜单(procMenu),设计时需将 procMenu的 (1) 属性设置成false。
供(1)选择的属性:Default Enabled ScaleMode Style Visible
【Visual Basic程序代码】
Dim a() AS Integer, n As Integer
Private Sub Form_Load()
txtSrc.Text = "": txtObj.Text = "": (2) = False
End Sub
Private Sub cmdGendat_Click () ’生成正整数序列并存入数组a
On Error GoTo Error handler
n = InputBox$ ("请输入数组元素个数:", "输入序列长度")
If (n < 1) Then
MsgBox "输入数据错误!", vbOKOnly, "提示:"
GoTo Error handler:
End If
ReDim a(n) As Integer
s = ""
For i = 1 To n ’将生成的正整数存入a(1)~a(n)中
a(i) = Int(Rnd * 10000) : s = s & Str$(a(i)) & vbCrLf
Next
txtSrc.Text = s
(3) ’设置运算要求命令按钮可用
Error handler:
End Sub
Private Sub cmdProc_Click()
PopupMenu procMenu
End Sub
Private Sub MidNum_Click() ’求中位数
lblObj.Caption = MidNum.Caption & ":"
For i = 1 To round((n + 1)/2> ’用选择排序法对数组a进行部分排序
a(0) = a(i):k = i ’a(0)用作临时变量,暂存第i次选出的最小元素
For j = i + 1 To n
If a(j) < a(0) Then
a(0) = a(j): k = (4)
End If
Next
If k <> i Then
a(k) = a(i): a(i) = a(0)
End If
Next
If n / 2 - n \ 2 > 0 Then ’n为奇数时,取中间一个数
txtObj.Text - Str$(a( (5) )
Else ’n为偶数时,取中间两个数的平均值
txtobj.Text = Str$(Int((a(n \ 2) + a(n \ 2 + 1)) / 2))
End If
End Sub
’其他代码略