试题四
阅读以下说明和C代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
[说明]
函数 MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数 n 转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B 进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:
#define KAXSIZE 32
typedef struct{
int *elem; /* 栈的存储区 */
int max; /* 栈的容量,即找中最多能存放的元素个数 */
int top; /* 栈顶指针 */
}Stack;
[C代码]
int lnitStack(Stack *S,int n) /* 创建容量为n的空栈 */
{ S->elem = (int *)matloc(n * sizeof(int));
if (S->elem == NULL) return -1;
S->max = n;__(1)__= 0;return 0;
}
int Push(Stack*S,int item) /* 将整数item压入栈顶 */
{ if(S->top == S->max){ printf("Stack is full!\n");return -1;}
__(2)__;item;return 0;
}
int StackEmpty(Stack S){ return(!S.top) ? 1;0;) /* 判断栈是否为空 */
int Pop(Stack*S) /* 栈顶元素出栈 */
{ if (!S->top){ printf("Pop an empty stack!\n");return -1;)
return __(3)__;
}
void MultibaseOutput(long n,int B)
{ int m;Stack S;
if (init Stack(&S,MAXSIZE)) { printf("Failure!\n");return;}
do {
if (Push(&s,__(4)__)) { printf("Failure!\n");return;}
n = __(5)__:
} while (n != 0);
while (!StackEmpty(S)) { /* 输出B进制的数 */
m = Pop(&S);
if (m < 10) printf("Kd",m); /* 小于10,输出数字 */
else printf("%c,m + 55); /* 大于或等于10,输出相应的字符 */
}
printf("\n");
}
试题五
阅读以下应用说明及Visual Basic程序代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
[应用说明5.1]
本应用程序的窗体中有一个下拉式列表框(名称为Combol)和两个文本框(名称分别为Txtl和Txt2)。运行时,用户从Combol的列表中进行选择,程序就会将选中条目的内容以及编号(从0开始)分别在文本框 Txt1 和 Txt2 中显示出来。
[程序代码5.1]
Private Sub Combol_C1ick()
Txtl.Text = Combol.__(1)__
Txt2.Text = Combol.__(2)__
End Sub
(注:可供(2)处选择的选项:List,Index,Listlndex,ListCount,Number)
[应用说明5.2]
本应用程序的运行窗口如下图所示:
当用户在输入框(名为Txtln)中输入数值数据,并从下拉式列表框(名为CmbOp)中选择所需的运算后,输出框(名为TxtOut)中就会显示运算的结果。用户单击“清除”按钮(名为CmdClear)后,输入框和输出框都清空。
开发该应用的部分程序代码如下:
[程序代码5.2]
Private Sub CmbOp_Click()
Dim DataIn As Double,DataOut as Double
DataIn = __(3)__
Select Case __(4)__
Case "取整数部分"
DataOut = Int(Dataln)
Case "求平方根"
If Dataln < O Then
MsgBox$("负数不能开平方!")
Else
DataOut = Sqr(Dataln)
End If
Case "取绝对值"
DataOut = Abs(Dataln)
(TxtOut.Text = str$(DataOut)
__5)__
End Sub
在开发过程中,需要编写的程序代码如下;
[程序代码7]
Private Sub CmdF Click()
Timerl.__(3)__ = True
Label.Visible = False
End Sub
Private Sub Timerl_ Timer()
__(4)__ = not Label.Visible
End Sub
Private Sub CmdT Click()
Timerl.Enabled = __(5)__
Label.Visible = true
End Sub
设一个人的月应纳税所得额为K(元),用下面的公式计算其应缴纳的个人所得税额S(元):
若0<K≤500,则S=K×5%;
若500<K≤2000,则S=500×5%+(K—500)×10%:
若2000<K≤5000,则S=500×5%+1500×10%+(K-2000)×15%:
若5000<K≤20000,则S=500×5%+1500×10%+3000×15%+(K-5000)×20%:
例如,某人某月工资总额为4100元,减去800元后,应纳税所得额为3300元,其应缴纳的个人所得税额为500*5%+1500*10%+1300*15%=370元。
在开发过程中,需要编写的程序代码如下:
[程序代码]
Option Base 0
Private Sub Cmd compute-C1ick()
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)
K=__(1)__
S = 0
If (K>0) Then
For j=1 To 9
If __(2)__ Then
S=S+(paylevel(j)-paylevel(j-1))*taxPrate(j-1)/100
Else
S=S+(__(3)__)*taxPrate(j-1)/100
Exit For
End lf
Next j
End lf
__(4)__=Str$(S)
End Sub
上午答案
(1) B (16) D (31) D (46) D (61) C
(2) C (17) A (32) D (47) C (62) D
(3) D (18) D (33) A (48) C (63) B
(4) A (19) A (34) B (49) B (64) C
(5) B (20) B (35) B (50) C (65) A
(6) C (21) A (36) A (51) B (66) C
(7) A (22) D (37) B (52) A (67) C
(8) C (23) C (38) A (53) B (68) B
(9) B (24) C (39) C (54) D (69) D
(10) A (25) A (40) D (55) C (70) B
(11) D (26) D (41) B (56) B (71) A
(12) B (27) A (42) D (57) B (72) B
(13) B (28) B (43) B (58) A (73) C
(14) A (29) C (44) D (59) D (74) C
(15) C (30) C (45) C (60) C (75) B