while (__(3)__) i++; /*忽略连续的标志字符*/
/*寻找从str[i]开始直到标志字符出现的一个子字符串*/
j=i+1;
while(str[j]!
=del&&str[j]!
='\0')j++;
__(4)__="\0"; /*给找到的字符序列置字符串结束标志*/
printf("%s\t",&str[i]):
’
__(5)__;
}
}
试题三
以下是与VisualBasic开发应用有关的5个问题.对每一个问题,请将解答填入答题纸的对应栏内。
(1)在VisualBasic中,工程文件、窗体文件和标准模块文件的扩展名是什么?
请从下列选项中选择:
prg、prj、exe、vbp、rom、frm、win、fra,std、bas、vbs、Vbm
(2)设某窗体上有一个命令按钮,其名称为CmdSave,运行时该按钮上显示有“保存(S)”字样的信息。
为使热键ALT+S与该命令按钮相关联,应该对按钮CmdSave的Caption属性设置什么样的属性值?
(3)设某窗口内有一个图像框Image1,以及两个命令按钮“放大”和“缩小”。
单击“放大”按钮就会使该图像框的长和宽都放大10%;单击“缩小”按钮就会使该图像框的长和宽都缩小10%(该图像框的左上角不动)。
请分别写出这两个命令按钮的单击事件过程中的程序代码。
(4)为使某个单选按钮初始时默认被选中,在开发时应怎样做?
(5)若有语句Tmpval=MsgBox(非法操作!
,ybOKCancel+vbCritical,"提示"),请简要描述程序运行时弹出的消息框的主要特征。
从下列的2道试题(试题四至试题五)中任选1道解答,如果解答的试题数超过1道,则题号小的1道解咎有效。
试题四
阅读以下说明和C代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
[说明]
函数MultibaseOutput(longn,intB)的功能是:
将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。
该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。
有关栈操作的诸函数功能见相应函数中的注释。
C代码中的符号常量及栈的类型定义如下:
#defineKAXSIZE32
typedefstruct{
int*elem; /*栈的存储区*/
intmax; /*栈的容量,即找中最多能存放的元素个数*/
inttop; /*栈顶指针*/
}Stack;
[C代码]
intlnitStack(Stack*S,intn) /*创建容量为n的空栈*/
{S->elem=(int*)matloc(n*sizeof(int));
if(S->elem==NULL)return-1;
S->max=n;__
(1)__=0;return0;
}
intPush(Stack*S,intitem) /*将整数item压入栈顶*/
{if(S->top==S->max){printf("Stackisfull!
\n");return-1;}
__
(2)__;item;return0;
}
intStackEmpty(StackS){return(!
S.top)?
1;0;) /*判断栈是否为空*/
intPop(Stack*S) /*栈顶元素出栈*/
{if(!
S->top){printf("Popanemptystack!
\n");return-1;)
return__(3)__;
}
voidMultibaseOutput(longn,intB)
{intm;StackS;
if(initStack(&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,输出数字*/
elseprintf("%c,m+55); /*大于或等于10,输出相应的字符*/
}
printf("\n");
}
试题五
阅读以下应用说明及VisualBasic程序代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
[应用说明5.1]
本应用程序的窗体中有一个下拉式列表框(名称为Combol)和两个文本框(名称分别为Txtl和Txt2)。
运行时,用户从Combol的列表中进行选择,程序就会将选中条目的内容以及编号(从0开始)分别在文本框Txt1和Txt2中显示出来。
[程序代码5.1]
PrivateSubCombol_C1ick()
Txtl.Text=Combol.__
(1)__
Txt2.Text=Combol.__
(2)__
EndSub
(注:
可供
(2)处选择的选项:
List,Index,Listlndex,ListCount,Number)
[应用说明5.2]
本应用程序的运行窗口如下图所示:
当用户在输入框(名为Txtln)中输入数值数据,并从下拉式列表框(名为CmbOp)中选择所需的运算后,输出框(名为TxtOut)中就会显示运算的结果。
用户单击“清除”按钮(名为CmdClear)后,输入框和输出框都清空。
开发该应用的部分程序代码如下:
[程序代码5.2]
PrivateSubCmbOp_Click()
DimDataInAsDouble,DataOutasDouble
DataIn=__(3)__
SelectCase__(4)__
Case"取整数部分"
DataOut=Int(Dataln)
Case"求平方根"
IfDataln MsgBox$("负数不能开平方!
")
Else
DataOut=Sqr(Dataln)
EndIf
Case"取绝对值"
DataOut=Abs(Dataln)
(TxtOut.Text=str$(DataOut)
__5)__
EndSub
从下列的2道试题(试题六至试题七)中任选1道解答。
如果解答的试题数超过1道,则题号小的1道解答有效。
试题六
阅读下列函数说明和C函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
[函数6说明]
函数DelAInsB(LinkedListLa,LinkedListlb,intkey1,intkey2,intlen)的功能是,将线性表A中关键码为keyl的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。
线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。
单链表结点的类型定义为:
typedefstructnode{
intkey;
structnode*next;
}*Linkedhist;
[函数6]
intDelllnsB(LinkedLiStLa,LinkedListLb,intkeyl,intkey2,intlen)
{LinkedListp,q,S,prep,pres;
intk;
if(!
La->next||!
Lb->next||len<=0) return-1;
p=La->next;prep=La;
while(p&&p->key!
=keyl){ /*查找表A中键值为key1的结点*/
prep=p;p=p->next;
}
if(!
p)return-1; /*表A中不存在键值为key1的结点*/
q=p;k=1;
while(q&&__
(1)__){ /*在表A中找出待删除的len个结点*/
__
(2)__:
k++;
}
if(!
q)return-1; /*表A中不存在要被删除的len个结点*/·
S=Lb->next;__(3)__;
while(s&&s->key!
=key2){ /*查找表B中键值为key2的结点*/
pres=s;s=s->next;
}
if(!
s)return-1; /*表B中不存在键值为key2的结点*/
__(4)__q->next; /*将表A中的len个结点删除*/
q->next:
__(5)__
pres->next=p; /*将len个结点移至表B*/
return0;
}
试题七
阅读以下应用说明、属性设置及VisualBasic程序代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
[应用说明7]
本应用程序的运行窗口如下图所示:
只要用户单击“闪烁”按钮,文字“欢迎光临”就会以0.3秒消失、0.3秒显示反复进行闪烁;单击“停止”按钮时,闪烁停止,恢复图示的初态。
在开发过程中,需要设置的属性如下:
[属性设置7]
对象
对象名
属性名
属性值
窗体
Frm1
Caption
闪烁显示演示
标签
Labe1
Caption
欢迎光临
命令按钮
CmdF
Caption
闪烁
命令按钮
CmdT
Caption
停止
定时器
Timer1
Enabled
__
(1)__
Interval
__
(2)__
在开发过程中,需要编写的程序代码如下;
[程序代码7]
PrivateSubCmdFClick()
Timerl.__(3)__=True
Label.Visible=False
EndSub
PrivateSubTimerl_Timer()
__(4)__=notLabel.Visible
EndSub
PrivateSubCmdTClick()
Timerl.Enabled=__(5)__
Label.Visible=true
EndSub
从下列的2道试题(试题八至试题九)中任选1道解答,如果解答的试题数超过1道,则题号小的1道解答有效。
试题八
阅读下列程序说明和C程序,将应填入__(n)__处的字句写在答题纸的对应栏内。
[程序8说明]
程序8用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额。
职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。
由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于0结束。
假设个人所得税法规定;个人收入所得,按月计税,以每月收入总额减除免税金额800元后的余额作为该月的月应纳税所得额,适用税率如下表所示。
级数
月应纳税所得额
适用税率(%)
1
2
3
4
5
6
7
8
9
不超过500元的部分
501元~2000元的部分
2001元~5000元的部分
5001元~20000元的部分
20001元~40000元的部分
40001元~60000元的部分
60001元~80000元的部分
80001元~100000元的部分
超过100000元的部分
5
10
15
20
25
30
35
40
45
上表表明,个人收入所得税是按照超额累进的税率来征收的。
设一个人的月应纳税所得额为K(元),用下面的公式计算其应缴纳的个人所得税额S(元):
若0 若500 若2000 若5000 例如,某人某月工资总额为4100元,减去800元后,应纳税所得额为3300元,其应缴纳的个人所得税额为500*5%+1500*10%+1300*15%=370元。
[程序8]
#include
#defineMaxNum50
#defineBASE800 /*免税金额基数*/
intpaylevel[]={0,500,2000,5000,20000,40000,60000,80000,100000,100000¨:
inttaxPrate[]={5,10,15,20,25,30,35,40,45):
/*税率表*/
typedefstruct{
intld; /*职工的工号*/.
longSalary; /*职工的工资*/
}Info;
/*查找工号为Id的职工在数组employee中的下标,返回值为0表示没有*/
intfind(intld,Infoemployee[],intm){
intj;
employee[0].Id=Id;
for(j=m;__
(1)__;j--);
returnj;
}
voidmain(void)
{InfoemployeeCHaxNum+1];
longWage;
doublesums0,K,S:
inti,j,N=0,Code;
scanf("M%ld",&Code,&Wage); /*读入职工号、工资或薪金*/
while(Code>0) {
i=find(Code,employee,N);
if(i>0)employee[i].Salary+=Wage:
else{ __
(2)__;
employee[N].Id=Code;employee[N].Salary=Wage;
}
scanf("%d%ld",&Code,&Wage):
}
for (i=1;i<=N;i++){
K=__(3)__; /*计算月应纳税所得额*/
S=0; /*月应纳税额赋初值*/
if(K>0){
for(j=1;j<=9;j++)
if(__(4)__) /*月应纳税所得额超过第j级*/
S=S+(paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100;
else{ S=S+(__(5)__)*taxPrate[j-1]/100;break;}
}
printf("职工%d应缴纳的个人所得税额:
%10.21f\n",employee[i].Id,S);
sum+=S;
}
printf("全体职工个人所得税总额:
%10,21f\n",sum);
}
试题九
阅读以下应用说明及VisualBasic程序代码,将应填入__(n)__处的字句写在答题纸的对应栏内.
[应用说明9]
本应用程序的运行窗口如下图所示:
窗口中的三个文本框和两个按钮名称分别为Txt_salary、Txt_base、ht_tax、Cmdcompute和Cmd_quit.运行时,文本框Txt_base中存放的是免税金额基数(应扣除的基本费用)。
当用户在文本框ht_salary中输入月收入(工资或薪金)并单击“计算”按钮Crud_compute后,Txt_tax框中就显示计算所得的应纳税额。
文本框Txt_base和Txt_tax在运行时不接受用户输入,Txt_base的内容以灰色显示。
个人工资(或薪金)所得税是按照超额累进的税率来征收的,方法是:
以每月收入总额减去免税金额基数后的余额作为该月的月应纳税所得额,再将应纳税所得额按相应级数采用相应的税率进行累进计算.目前的免税金额基数为800元,税率如下表所示:
个人工资(或薪金)所得税是按照超额累进的税率来征收的,方法是:
以每月收入总额减去免税金额基数后的余额作为该月的月应纳税所得额,再将应纳税所得额按相应级数采用相应的税率进行累进计算.目前的免税金额基数为800元,税率如下表所示:
级数
月应纳税所得额
适用税率(%)
1
2
3
4
5
6
7
8
9
不超过500元的部分
501元~2000元的部分
2001元~5000元的部分
5001元~20000元的部分
20001元~40000元的部分
40001元~60000元的部分
60001元~80000元的部分
80001元~100000元的部分
超过100000元的部分
5
10
15
20
25
30
35
40
45
设一个人的月应纳税所得额为K(元),用下面的公式计算其应缴纳的个人所得税额S(元):
若0 若500 若2000 若5000 例如,某人某月工资总额为4100元,减去800元后,应纳税所得额为3300元,其应缴纳的个人所得税额为500*5%+1500*10%+1300*15%=370元。
在开发过程中,需要编写的程序代码如下:
[程序代码]
OptionBase0
PrivateSubCmdcompute-C1ick()
Dimpaylevel,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
Forj=1To9
If __
(2)__ Then
S=S+(paylevel(j)-paylevel(j-1))*taxPrate(j-1)/100
Else
S=S+(__(3)__)*taxPrate(j-1)/100
ExitFor
Endlf
Nextj
Endlf
__(4)__=Str$(S)
EndSub
PrivateSubCmd_quit_C1ick()
End
EndSub
PrivateSubForm_Load()
Txt_tax.Text=""
Txt_salary.Text=""