仔细阅读以下代码,当输入变量为enable = 1,data_in =3’b011时,该电路的输出信号为data_out=8'b______ module DCE (data_out,data_in,enable) ; input [2:0] data_in; input enable; output [7:0] data_out; reg [7:0] data_out; always @(data_in or enable) begin if (enable==1) case (data_in ) 3'b000: data_out=8'b11111110; 3'b001: data_out=8'b11111101; 3'b010: data_out=8'b11111011; 3'b011: data_out=8'b11110111; 3'b100: data_out=8'b11101111; 3'b101: data_out=8'b11011111; 3'b110: data_out=8'b10111111; 3'b111: data_out=8'b01111111; default: data_out=8'bxxxxxxxx; endcase else data_out=8'b11111111; end endmodule
A、11011111
B、11110111
C、10111111
D、11111101
第1题
[说明]
在一些财务软件中,经常需要将阿拉伯数字的账目转化为汉语习惯中的金额计数方法,例如:
“3.45”转化为“叁元四角五分”;
“3.4”转化为“叁元四角”;
“3.40”转化为“叁元四角零分”;
“3.456”转化为“叁元四角五分”;
“345.00”转化为“叁百四十五元零角零分”;
“345”转化为“叁百四十五元”;
以下Visual Basic代码实现了小写金额转换为大写金额。界面如图10-9所示。结合实际例子说明,仔细阅读下面代码,将(n)代码补充完整。
[代码7-1]
Begin VB.FormForm1
Caption = "小写金额转换为大写金额"
//...窗体描述(略)
Begin VB.CommandButton Command1
Caption = "退出"
//...窗体描述(略)
End
Begin VB.TextBox Text2
//...窗体描述(略)
End
Begin VB.TextBox Text1
Enabled = 0 'False
//…窗体描述(略)
End
Begin VB.Labe1 Labe12
Caption = "转换为大写金额"
//...窗体描述(略)
End
Begin VB.Labe1 Labe11
Caphon = "请输入数字"
//...窗体描述(略)
End
End
[代码7-2]
Private Function setdata (num As Integer) As String '数字转换
Select CaSe num
Case 0
setdata="零"
Case 1
Setdata="壹"
Case 2
Setdata="贰"
Case 3
Setdata="叁"
Case4
Setdata="肆"
Case 5
Setdata="伍"
Case 6
Setdata="陆"
Case 7
Setdata="柒"
Case 8
Setdata="捌"
Case 9
Setdata="玖"
End Select
End Function
Private Function chang (aaa As Integer) As String '位数转换
Select CaSe aaa
Case 1
chang=""
Case 2
chang="十"
Case 3
chang="百"
Case 4
chang="千"
Case 5
chang="万"
Case 6
chang="十"
Case 7
chang="百"
Case 8
chang="千"
Case 9
chang="亿"
Case 10
chang="十"
End Select
End Function
[代码7-3]
Private Sub Text2_Change ( ) '小写转大写
Dim i As Integer
Dim j As Integer
Dim myint As Integer
Dim myint1 As Integer
Dim mydoub As Double
Dim mystr As String
Dim mystr1 As String
Dim mystr2 As String
Dim mystr3 As String
Dim mystr4 As String
Dim money As Long
Dim money1 As Integer
Dim money2 As Long
mystr=Text2.Text
myint=InStr (mystr, ".")
If myint=0 Then
mystr=Text2.Text
Else
mystr3=Right(Text2.Text, Len (Text2.Text ) - myint)
If mystr3<>""Then '转换小数位
mystr4=Left(mystr3, 1)
mystr3=Right(mystr3, Len(mystr3 )
第2题
[说明]
以下JAVA程序设计了类CSet,使用同一个名称(set)的method来传入数据。仔细阅读[代码6-1)、[代码6-2]和[代码6-3]和相关注释,将程序补充完整。
[代码6-1]
import java.io.*;
class CSet
{
private int width;
private int height;
(1)
public void set(String color)
{
col=color; //(a)可输入长方形的颜色
}
public void set (iht w, int h)
{
width=w; //(b)可输入长方形的宽和高
height=h;
}
public void set (String color, int w, int h)
{
col=color; //(c)可输入长方形的颜色、宽和高
width=w;
height=h;
}
public void show ( )
{
System.out.println ("n\长方形的颜色为: "+col);
System.out.println ("n\长方形宽为: "+width+" 长方形高为: "+height");
}
}
[代码6-2]
public class hw8_3
{
public static void main (String args[]) throws IOException
{
intw, h; //声明宽、长变量,并给予赋值
String color, k;
CSet rect1;
rect1=new CSet ( );
System.out.print ("\n请输入颜色:: ");
color=input ( );
System.out.print ("请输入宽度:: ");
k=input ( );
w=Integer.parseInt (k);
System.out.print ("请输入高度:: ");
k=input( );
h=Integer.parseInt (k);
(2)//设置长方形的颜色
(3)//设置长方形的宽、高
rectl.show ( );
(4)//设置长方形的颜色和宽、高
rectl.show ( );
}
[代码6-3]
public static String input( ) throws IOException//输入函数
{
String str;
BufferedReader buf;
(5)
str=buf.readLine ( )
return str;
}
}
第3题
【说明】
以下代码由C语言书写,在输入3个整数后,能够输出最大数和最小数。
int main(void)
{
int a, b, c, max, min;
printf("input three numbers: ");
scanf("%d%d%d", &a, &b, &c);
if(a>b) /*判断1*/
{
max=a;
min=b;
}
else
{
max=b;
min=a;
}
if(max<c) /*判断2*/
max=c;
else if(min>c) /*判断3*/
min=c;
printf("max=%d\nmin=%d", max, min);
return 0;
}
请画出该程序段的控制流图,并分析该控制流图中有多少条线性独立路径(V(G)的值)。
为了用分支(判定)覆盖方法测试该程序,需要设计测试用例,使其能对该程序中的每个判断语句的各种分支情况全部进行过测试。
对两组输入数据(1)a=3,b=5,c=7;(2)a=4,b=6,c=5,请分别写出程序中各个判断语句的执行结果(以T表示真,以F表示假),填入答题纸的相应栏中。
上述两组测试数据是否能实现该程序的分支(判定)覆盖?如果能,请说明理由。如果不能,请再增设一组输入数据,使其能实现分支(判定)覆盖。
请帮忙给出每个问题的正确答案和分析,谢谢!
第4题
【说明】
在Visual Basic程序中,设计一个“个人所得税计算器”,其应用程序的运行窗口如图6-16所示。
窗口中的3个文本框和两个按钮的名称分别为Txt_salary、Txt_base、TxL_tax、Cmd_compute和 Cmd_quit。“个人所得税计算器”程序运行时,文本框Txt_base中存放的是免税金额基数(应扣除的基本费用)。当用户在文本框Txt_salary中输入月收入(工资或薪金)并单击【计算】按钮(Cmd_compute后,Txt_tax框中就显示计算所得的应纳税额。文本框Txt_base和Txt_tax在运行时不接受用户输入,Txt_base的内容以灰色显示。
个人工资(或薪金)所得税是按照超额累进的税率来征收的,其计算方法如下:以每月收入总额减去免税金额基数后的余额作为该月的月应纳税所得额,再将应纳税所得额按相应级数采用相应的税率进行累进计算。目前的免税金额基数为1 600元,税率如表6-15所示。
(注:本表所称全月应纳税所得额是指依照本法第六条的规定,以每月收入额减除费用1600元后的余额或者减除附加减除费用后的余额)
设某个人的全月应纳税所得额为M(元),用下面的公式计算其应缴纳的个人所得税额S(元):
若0<M≤500,则S=M×5%;
若500<M≤2000,则S=500×5%+(M-500)×10%;
若2000<M≤5000,则S=500×5%+1500×10%+(M-2000)×15%;
若5000<M≤20000,则S=500×5%+1500×10%+3000×15%+(M-5000)×20%;
假设某程序员2008年5月份工资总额为4700元,减去1600元后,应纳税所得额为3100元,其应缴纳的个人所得税额为500×5%+1500×10%+1100×15%=340元。
在开发过程中,需要编写的程序代码如下。
【Visual Bask程序】
Option Base 0
Private Sub Cmd compute-Click()
Dim paylevel,taxPrate
paylevel=Array(0,500,2000,5000,20000,40000,60000,80000,100000,1000001
taxPrate=Array(5,10,15,20,25,30,35,40,45)
M=(1)
S = 0
If (M>0) Then
For j =1 To 9
If (2) Then
s=s+(paylevel(j)-paylevel(j-1))*taxPrate(j-1)/100
Else
(3)
Exit For
End if
Next j
End if
(4)=Str$(S)
End Sub
Private Sub Cmd_quit_Click()
End
End Sub
Private Sub Form_Load()
Txt_tax.Text = " "
Txt_salary.Text = " "
Txt_base.Text = 1600
Txt_tax.Locked = True
Txt_base.Enabled =(5)
End Sub
请根据【说明】信息和如图6-16的显示效果,将【Visual Basic程序】中(1)~(5)空缺处的程序语句填写完整。
第5题
[说明]
以下是一账号和密码输入的检验程序。对输入的账号和密码规定如下所述。
(1)账号为不超过6位的数字,密码为4位字符,在本题中,密码假定为“Pass”。
(2)密码输入时在屏幕上不显示输入的字符,而以“*”代替。
(3)当输入不正确,如账号为非数字字符或密码不正确时,显示有关信息。
(4)当输入正确时,关闭密码窗口,显示记事本窗口。
按要求完成有关控件的其他属性的设置,编写确定按钮的单击事件过程。相关界面如下:
(可能要用到的单词:MultiLlne,ScrollBars,PasswordChar,MaxLength)密码窗口frmPass控件设置如下表所示。
记事本窗口frmNotepad 控件设置如下表所示。
在密码窗口的属性窗口,对密码文本框设置属性MuniLine 为False。
[Visual Basic 代码]
Private Sub cmd OK_ Click ( )
If txtPas. Text= "Pass" Then
Load frmNotePad
frmNotePad. Show
frmPass.Hide
Else
MsgBox "密码错误! ", vbExclamation + vbRetryCancel, "重输入密码"
txtPas. Text= " "
txtPas. SetFocus
(1)
End Sub
Private Sub Form_ Load ( )
txtPas.PasswordChar = "*"
xtNo.MaxLength = 6
End Sub
Private Sub txtNo LostFocus (
Dim i As Integer, s As String * 1
Fori= 1 To (2)
s = Mid ( txtNo.Text, i, 1 )
If (3) Or (4) Then
MsgBox "账号有非数字符号! ", vbExclamation + vbRetryCancel, "1 输入账号"
(5)
txtNo. SetFocus
Exit Sub
End If
Next i
End Sub
第6题
[说明]
本程序接收输入的学生信息,包括学号、姓名、成绩,原样输出信息并计算学生的平均成绩。其中学生类Stud除了包括no(学号)、name(姓名)和grade(成绩)数据成员外,还有两个静态变量 sum和num,分别存放总分和人数,另有一个构造函数、一个普通成员函数disp()和一个静态成员函数avg()用于计算平均分。
[Java代码]
public class Stud {
public int no;
public String name;
public double grade;
public (1) double sum=0;
public static int num=0;
public Stud(int no,String name,double grade) {
this.no = no;
this.name = name;
this.grade = grade;
this.sum=(2);
(3);
}
public static double avg(){
return (4);
}
public void disp(){
System.out.println(this.no+"\t"+this.name+"\t"+this.grade);
}
public static void main(String[] args) {
Stud []students = {new Stud (1,"Li", 81), new Stud(2,"Zhao",84.5), new Stud(3,"Zhang", 87)};
System.out.pfintln("no\tname\tgrade");
students[0].disp();
students[1].disp();
students[2].disp();
System.out.println("avg="+(5));
}
}
第7题
【说明】
下面的程序是从命令行输入3个数传递到public static void main(String args[])方法中 (如java IsTriangle 3 4 5),并判断这3个数能否构成三角形的3条边,并显示相应的结果。请在程序的每条横线处填入适当的语句,使程序的功能完整。
注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。
public class IsTriangle{
public static void main( String args[ ]){
int a[] =new (1) [args.(2)];
for(int i=0;i<3;(3))
{
a[i]=(4)
}
if((5))
System. out. println(a[0] +","+a[1] +","+a[2]"能构成三角形的3条边");
else
System. out. println(a[0] +","+a[1] +","+a[2]"不能构成三角形的3条边);
}
}
第8题
阅读下列说明和C代码,回答问题 1 至问题3,将解答写在答题纸的对应栏内。
【说明】
某应用中需要对100000 个整数元素进行排序,每个元素的取值在 0~5 之间。排序算法的基本思想是:对每一个元素 x,确定小于等于 x的元素个数(记为m),将 x放在输出元素序列的第m 个位置。对于元素值重复的情况,依次放入第 m-l、m-2、…个位置。例如,如果元素值小于等于4 的元素个数有 10 个,其中元素值等于 4 的元素个数有3个,则 4 应该在输出元素序列的第10 个位置、第 9 个位置和第8 个位置上。
算法具体的步骤为:
步骤1:统计每个元素值的个数。
步骤2:统计小于等于每个元素值的个数。
步骤3:将输入元素序列中的每个元素放入有序的输出元素序列。
【C代码】
下面是该排序算法的C语言实现。
(1)常量和变量说明
R:常量,定义元素取值范围中的取值个数,如上述应用中 R值应取6i:循环变量
n:待排序元素个数
a:输入数组,长度为n
b:输出数组,长度为n
c:辅助数组,长度为R,其中每个元素表示小于等于下标所对应的元素值的个数。
(2)函数sort
1 void sort(int n,int a[ ],intb[ ]){
2 int c[R],i;
3 for (i=0;i< (1) ;i++){
4 c[i]=0;
5 }
6 for(i=0;i<n;i++){
7 c[a[i]] = (2) ;
8 }
9 for(i=1;i<R;i++){
10 c[i]= (3) ;
11 }
12 for(i=0;i<n;i++){
13 b[c[a[i]]-1]= (4) ;
14 c[a[i]]=c[a[i] ]-1;
15 }
16 }
【问题1】(8 分)
根据说明和C代码,填充 C代码中的空缺(1)~(4)。
【问题2】(4 分)
根据C代码,函数的时间复杂度和空间复杂度分别为 (5) 和 (6) (用 O符号
表示)。
【问题3】(3 分)
根据以上C代码,分析该排序算法是否稳定。若稳定,请简要说明(不超过 100 字);
若不稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。
从下列的2 道试题(试题五和试题六)中任选 1 道解答。
如果解答的试题数超过 道,则题号小的 道解答有效。
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!