4.3.1 if语句的应用 知识点题库

有如下VB程序段:

Dim flag As Boolean

s= Tex1.Text:j=0:cnt=1

For i=1 To Len(s)

  c= Mid(s, i, 1)

  If c>="0" And e<= "9" Then

    j=j+1

    flag= True

  Else

    If j>lenmax And cnt Mod 2= 1 Then lenmax=j

    j=0

    If flag Then cnt= cnt + 1:flag= False

  End If

Next i

Text2. Text = Str(lenmax)

在文本框Text1输入“one302type27645time9986”,程序运行后文本框Text2中显示为(    )

A . 12 B . 5 C . 3 D . 4
给出只包含加、减、乘、除中一个运算符的算术等式,求该算术等式中的最小进制。如等式6*9=42,该等式中的数字均属于13进制。推算的算法是:

1)找出等式中单个数字的最大值;

2)从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数;

3)如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。

小明为此编写了一个VB程序,程序运行时,在文本框Text1中输入一个等式,单击“计算”按钮Command1,在文本框Text2中显示该等式中数字所属的数制。程序运行界面如下图所示。

  1. (1) 根据上述算法,则等式“5+7=13”成立,则该等式中的数属于进制数。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim s1 As String, ysf As String, t1 As String, t2 As String, t3 As String

    Dim ch As String, t As String, max As Integer, jz As Integer, i As Integer

    s1=Text1.Text

    t1=0: max=0

    For i=1 To Len(s1)

    ch=Mid(s1, i, 1)

    If ch=“+” Or ch=“-” Or ch=“*” Or ch=“\\” Then

        ysf=ch: t1=t: t=“ ”

    ElseIf ch=“=” Then

        t2=t: t=“ ”

    ElseIf ch >= “A” And ch <= “F” Then

        t=t+ch

        temp=

        If max < temp Then max=temp

    Else

        t=t+ch

        If max < Val(ch) Then max=Val(ch)

    End If

    Next i

    t3=t: jz=0

    Do While i <= 16

    If ysf=“+” Then

        If XtoD(i, t1)+XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

    ElseIf ysf=“-” Then

        If XtoD(i, t1) - XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

    ElseIf ysf=“*” Then

        If XtoD(i, t1) * XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

    Else

        If XtoD(i, t1) / XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

    End If

    i=i+1

    Loop

    If jz <> 0 Then

    Text2.Text=“该数属于” +Str(jz)+ “进制”

    Else

    Text2.Text=“没有找到合适的进制”

    End If

    End Sub

    Function XtoD(x As Integer, s As String) As Integer

    Dim j As Integer

    j=0

    For i=Len(s) To 1 Step -1

    XtoD=XtoD+Val(Mid(s, i, 1)) * x ^ j

     

    Next i

    End Function

以下是牛顿迭代程序,认真阅读,填写横线内容。

import math

a=float(input("请输入方程系数a:"))

b=float(input("请输入方程系数b:"))

c=float(input("请输入方程系数c:"))

d=b*b-4*a*c

if :

    x1=(-b+math.sqrt(d))/(2*a)

    x2=(-b-math.sqrt(d))/(2*a)

    print("方程有两个不同的解",x1,x2)

elif :

    x1=-b/(2*a)

    print("方程有两个相同的解",x1)

else:

print("方程无解")

程序运行后,从键盘输入781,结果是

x=int(input("请输入一个正整数:"))

if x%2==0:

    print(x,"是偶数.")

else:

    print(x,"是奇数.")

有如下VB程序段:

For i=1 to 3

    For j=1 to 5-i

        If a(j)>a(j+1) Then

            t=a(j) : a(j)=a(j+1) : a(j+1)=t

        End If

    Next j

    Text1.Text = Str(a(i))+Text1.Text

Next i

数组元素a(1)到a(5)的值依次为“2,9,7,8,5”。若该程序段执行后,文本框Text1显示的内容是(    )

A . 2 5 7 B . 9 8 7 C . 2 7 7 D . 7 7 2
下面的Python程序段运行后的输出结果是(     )

x=3

if x%2==0:

    print(x,“是偶数。”)

else:

    print(x,“是奇数。”)

A . 3是奇数 B . x, "是偶数" C . x, "是奇数" D . 3是偶数
x的范围为(0 255),下列选项中,与语句"n=x\128"功能相同的是(    )
A . n=0 If x> 128 Then n= 1 B . n=0 If x<128 Then n=1 C . n= 1 If x<128 Then n=0 D . n=1 If x>128 Then n=0
从键盘上输入一个字符,当输入的是英文字母时,输出“输入的是英文字母”;当输入的是数字时,输出“输入的数字”;当输入的是其他字符时,输出“输入的是其他字符”。
大数据是当今最热门的领域之一,小王同学利用VB设计了一个模拟大数据应用的程序。有10种商品,数组a存储用户是否购买了各种商品;某个用户购买时,商品两两之间是否一起购买用另一个数组dsj来记录;各数组元素的解释如下表所示。

数组元素

数组元素的含义

a(i)

a(1)到a( 10)依次存储1号顾客购买商品1~商品10的记录:

a(11)至a(20)依次存储2号顾客购买商品1~商品10的记录;依次类推。

数组a的某个元素的值为1,则表示某位顾客购买了某种商品,若为0则表示没有购买

该种商品。如a(6)=1表示1号顾客购买了商品6,a(6)=0表示未购买。

dsj(i)

dsj(1)~dsj(9)依次存储商品1与商品2~商品10的关联次数;

dsj(10)~dsj(17)依次存储商品2与商品3~商品10的关联次数;依次类推。

如dsj(5)=2表示商品1与商品6被同时购买过2次;

如dsj(45)=4表示商品9与商品10被同时购买过4次。.

数组dsj中,若dsj(45)的值最大,则表示商品9和商品10 的关联次数最多。

小王按照上述算法设计了VB程序,统计了20个用户购买10种商品之间的关联性,VB程序如下,部分界面如题图所示。

Private Sub Cmd1_Click( )

    Dim a(1 To 200) As Integer     '各个用户原始的购买记录

    Dim dsj(1 To 45) As Integer     '统计商品之间的关联次数

    Dim i As Integer, t As Integer, ne As Integer, j As Integer, max As Integer

    '数组a读入数据并在列表框分行输出,代码略

    For i= 1 To 20 '20个用户

        t= 1

        For j= 1 To 9      '10个商品,共45种组合

            For k=j+ 1 To 10

                m=(i- 1)* 10

                If  Then dsj(t) = dsj(t)+ 1

                     ①   

            Next k

        Next j

    Next i

    max=0

    For i=1 To 45

        If     ②     Then

            max=dsj(i)

            maxi=i

        End If

    Next i

    t=9:nc= 1

    Do While maxi>t

            ③   

        t=t-1

       nc=nc+1

    Loop

    Text1.Text="关联最多的是商品"+Str(nc)+Str(maxi+nc)+":"+Str(max)+"次"

End Sub

  1. (1) 将按钮.上的文字“统计”修改为“计算”,可在Form_Load过程中使用        (单选,填字母)语句实现;
    A . Cmd1.Caption= "计算” B . Cmd1_Click="计算" C . Command1.Text="计算"
  2. (2) 加框处代码有错,请改正;
  3. (3) 在程序划线处填入合适代码,使程序完整。

     ② ③ 

有如下Visual Basic程序段,该程序段运行后,变量a输出的值是(    )

a=2

If a*a>3 Then

  a=a-2

End If

Print a

A . 0 B . 1 C . 2 D . 4
下面代码执行时,当输入8.9,输出结果是

v=float(input("请输入速度(千米/秒):"))

if v>=7.91:

  print("飞船成功飞行! ")

else:

  print("飞船不能升空! ")

有如下VB程序段:

i = 1 : n = 5

Do While i <= n

    x = Int(Rnd * 9) + 1

    If x Mod 2 = 1 Then

        a(i) = x

    Else

        a(n) = x : n = n - 1

    End If

    i = i + 1

Loop

已知数组a中各元素初始值均为0,执行该程序段后,数组a(1)至a(5)各元素值不可能的是(   )

A . 3,1,5,7,0 B . 3,1,5,7,8 C . 3,1,0,6,8 D . 0,1,0,4,4
某Python程序段如下:

info= ["男",79,"女",97,"女",94, "男",91, "女",85, "女", 100, "男", 82]

tot=0

c =0

for i in range(0, len(info), 2):

    if info[i] == "男":

        continue

    tot += info[i + 1]

    c +=1

print (round(tot / c,1))

运行该程序段,输出结果是

小明是班级里的生活委员,运动会期间他将班级支出明细记录在记事本文件中,现在想将各项支出的结果做一个统计。他编写了一个实现该功能的Python程序。程序运行时,输出记事本文件中的原文内容,并提取其中的数值进行计算。程序运行结果如下图所示:

请在划线处填入合适的代码

f=open("支出.txt","r")

mx=f.read()

print(mx)

t="";s=0

for i in mx:

    if :

        t=t+i

        flag=True

    elif flag:

        s=s+int(t)

        t=""

        flag=False

if flag:

print("一共支出:",str(s),"元")

下列Python程序段运行的结果是

s = 0

i = 1

while i <= 100:

    if i % 10 != 0 :

        s+= i

        i+ =1

print(s) (       )

A . 4500 B . 4578 C . 5050 D . 6657
有如下VB程序段:

For i=1 To 6

    If i Mod 2<>0 Then

        If a(i) Mod 10>5 Then

            a(i)=a(i) \ 10

        Else

            a(i)=a(i) Mod 10 

        End If

    Else

        a(i)=a(i- 1)+1

    End If

Next i

程序运行后a(1)到a(6)的值分别是2,3,4,5,0,1,则a(1)到a(6)各元素的初始值可能是(     )

A . 26,1,4,2,8,3 B . 12,1,14,2,11,3 C . 15,1,2,3,4,5 D . 29,1,40,2,3,30
在一篇英语短文中统计某字母开头的单词个数的程序,短文以“.”结束,单词之间用空格分隔,单词首写没有大写字母,没有缩写或其他特殊形式。部分程序代码如下所示:

s= Text1. Text    '输人的英语短文

t= Text2. Text    '要统计的开头字母

b=Len(s): f = True

For i=1 To b

  c = Mid(s, i, 1)

  If   ①   Then

    n= n+1

      ②   

  ElseIf c = "" Or c= "." Then

      ③  

  Else

    f = False

  End If

Next i

Label1.Caption= "以" + t + "为开头的单词个数:" + Str(n)

为实现上述程序,划线处应填入的代码是(    )

A . ①f and c=t②f= False ③f= True B . ①f=False and c=t②f= False ③f= True C . ①c=t②f= True③f= False D . ①f= True and c=t②f= True③f= False
下列关于Python分支结构的描述错误的是(      )。
A . 双分支结构用if……else……来实现 B . 双分支结构也可用“(表达式1) if <条件> else <表达式2>”的紧凑形式来表示 C . 多分支结构用if……elif……else……来实现 D . 多分支结构中的else部分必须有
用Python编辑器打开“Y:\114”下的文件“干支纪年. py”,进行以下操作并保存结果。

①干支纪年是一种纪年历法,中国历史上很多重大事件都是以此命名的,例如:“1894年甲午战争,1911年辛亥革命等。把十天干(甲、乙、丙、丁、戊、己、庚、 辛、壬、癸)与十二地支(子、丑、寅、卯、辰、已、午、未、申、酉、戌、亥)顺序相配来记录年份,如:甲子、乙丑、丙寅……,一个周期为60年。对于公元后年份的干支纪年计算方法为:公元年数先减3得到基数,基数除以10,余数是天干,基数除以12余数则是地支。例如:1894-3=1891,1891除以10余1,天干是“甲”,1891除以12余7,地支是“午”,即1894年为甲午年。如果余数为0,则为天干或地支列表中的最后一位,辛亥年的地支就是这样求得。

②请填空完善该程序,运行后按程序提示输入:

请输入年份:1894       屏幕将输出结果为:1894年是:甲午年

③编写完成后原名保存并关闭应用软件。注:程序修改时,请把下划线及序号删除;不能删除注释语句。

a = ['甲', '乙', '丙', '丁', '戊', '已', '庚', '辛', '壬', '癸']

b = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']

year1=int(input('请输入年份:'))

year2=

x=year2%

if x==0:

    x=10

y=

if y==0:

    y=

print(year1,'年是:',a[x-1]+b[]+'年')

有如下程序段,测试结果为图所示

n = int(input("请输入行数:"))

if n % 2 == 0:       #保证n的值为奇数

    n=n-1 a=[]

for i in range(n):

    if i<=n//2:

        b=2*i+1           #当在上半部分的时候

    else:

                          #当在下半部分的时候

                 

    a.append(" "*w+"&"*b)
for s in a:

请输入行数:9

请输入行数:6

    print(s)

上述程序中划线处可选语句为(     )

①b=n-2*i+1   ②b=(n-i)*2-1

③w=(n-b)%2   ④w=(n-b)//2

A . ①③ B . ①④ C . ②③ D . ②④
最近更新