初级程序员下午试题65真题含答案与解析交互Word下载.docx

上传人:b****4 文档编号:16568305 上传时间:2022-11-24 格式:DOCX 页数:15 大小:23.40KB
下载 相关 举报
初级程序员下午试题65真题含答案与解析交互Word下载.docx_第1页
第1页 / 共15页
初级程序员下午试题65真题含答案与解析交互Word下载.docx_第2页
第2页 / 共15页
初级程序员下午试题65真题含答案与解析交互Word下载.docx_第3页
第3页 / 共15页
初级程序员下午试题65真题含答案与解析交互Word下载.docx_第4页
第4页 / 共15页
初级程序员下午试题65真题含答案与解析交互Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

初级程序员下午试题65真题含答案与解析交互Word下载.docx

《初级程序员下午试题65真题含答案与解析交互Word下载.docx》由会员分享,可在线阅读,更多相关《初级程序员下午试题65真题含答案与解析交互Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

初级程序员下午试题65真题含答案与解析交互Word下载.docx

(5)空应当是求多项式下一项的值,根据多项式连续两项的关系可知,当前一项为t时,后一项的值为(-1)*t*x*x/(s*(s-1))。

但这样的话,每次循环都需要计算一次x*x,计算效率受到影响,联想到变量x2还没用,这时就可以判断x2就是用来存储x*x的值,使得每次循环者少进行一次乘法运算。

因此

(1)空处应填入“x*x”,(5)空处应填入“(-1)*t*x2/(s*(s-1))”。

试题二

阅读下列函数说明和C代码,将应填入 

处的字句写在对应栏内。

【说明2.1】

以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。

【函数2.1】

voidfun1(inta[])

inti,j,k,r,x,m;

for(i=2;

i<=n;

i++)

(1) 

;

k=1;

r=i-1;

while(k<=r)

m=(k+r)/2;

if(x<a[m])r=m-1;

else 

(2) 

for(j=i-1;

j>=k;

j--)

a[j+l]=a[j];

(3) 

【说明2.2】

以下程序可以把从键盘上输入的十进制数(long型)以二~十六进制形式输出。

【程序2.2】

#include<stdio.h>

main()

charb[16]='

0'

'

l'

2'

3,4,'

5'

6'

7'

8'

9'

A'

B'

C'

D'

E'

F'

intc[64],d,i=0,base;

longn;

printf("

enteranumber:

\n"

);

scanf("

%1d"

&

n);

enternewbasc:

%d"

&

base);

do

c[i]= 

(4) 

i++;

n=n/base;

while(n!

=0);

transmitenewbase:

for(--i;

i>=0;

--i)

d=c[i];

printf("

%c"

 

(5) 

x=a[i] 

(2)a[k]=x 

(3)k=m+1 

(4)n%base

(5)b[d]

[解析]函数3.1的思想是依次将数组中的每一个元素插入到有序段中,使有序段的长度不断地扩大。

对于待插入元素,先用二分查找法找出应该插入的位置。

然后将元素插入。

对数组来说,就是将该位置以后的元素依次后移,然后将待插入元素放到移出来的空位中。

程序3.2用的思想是除base(base在二~十六进制之间)取余法求得相应进制数,然后再转换输出。

试题三

阅读下列说明和C代码,将应填入 

本题给出四个函数,它们的功能分别是:

1.intpush(PNODE*top,inte)是进栈函数,形参top是栈顶指针的指针,形参e是入栈元素。

2.intpop(PNODE*top,int*e)是出栈函数,形参top是栈顶指针的指针,形参e作为返回出栈元素使用。

3.intenQueue(PNODE*tail,inte)是入队函数,形参tail是队尾指针的指针,形参e是入队元素。

4.intdeQueue(PNODE*tail,int*e)是出队函数,形参tail是队尾指针的指针,形参e作为返回出队元素使用。

以上四个函数中,返回值为。

表示操作成功,返回值为-1表示操作失败。

栈是用链表实现的;

队是用带有辅助结点(头结点)的单向循环链表实现的。

两种链表的结点类型均为:

typedefstructnode

intvalue;

structnode*next;

NODE,*PNODE;

【函数1】

intpush(PNOOE*top,inte)

PNODEp=(PNODE)malloc(sizeof(NODE));

if(!

p)return-1;

p->value=e;

.

*top=p;

return0;

【函数2】

intpop(PNODE*top,int*e)

PNODEp=*top;

if(p==NULL)return-1;

*e=p->value;

  

free(p);

【函数3】

intenQueue(PNODE*tail,inte)

PNODEp,t;

t=*tail;

p=(PNODE)malloc(sizeof(NODE));

if(!

p)return-1;

p->value=e;

p->next=t->next;

*tail=p;

return0;

【函数4】

intdeQueue(PNODE*tail,int*e)

PNODEp,q;

if((*tail)->next==*tail)return-1;

p=(*tail)->next;

q=p->next;

*e=q->value;

=q->next;

if(,tail==q) 

free(q);

p->next=*top  

(2)*top=p->next或*top=(*top)->next

(3)t->next=p或(*tail)->next=p

(4)p->next或(*tail)->next->next

(5)*tail=p或*tail=(*tail)->next

[解析]

(1)插入结点p后,p应当指向插入前头结点,所以填入p->next=*top。

(2)出栈后,头指针应指向它的下一结点,所以填入*top=p->next或*top=(*top)->next。

(3)入队时,需要将结点插入队尾,所以应当填入(*tail)->next=p或t->next=p(t也指向尾结点)。

(4)出队时,需要删除队头结点,通过(*tail)->next可以得到对队头结点的引用。

(4)处是正常删除队头结点的情况,空格处应填入头结点指向下一结点的指针,即p->next或(*tail)->next->next。

(5)处是需要考虑的特殊情况,即队列中最后一个元素出队后,要更新队尾指针,即填入*tail=p或*tail=(*tail)->next。

试题四

下面程序的功能是:

在含有10个元素的数组中查找最大数,及最大数所在位置(即下标值),最大数可能不止一个。

例如:

若输入

8

则应输出

Themax:

Total:

//最大数出现次数

Thepositions:

9

【函数】

#defineM10

intfun(int*a,int*n,intpos[])

inti,kmax=-32767;

for(i=0;

i<M;

if( 

)max=a[i];

)pos[k++]=i;

*n=k;

returnmax;

inta[M],pos[M],i=0j,n;

Enter10umber:

"

for(i=0,i<M;

i++)scanf("

j=fun( 

Themax:

%d\n"

j);

Total:

%d"

n);

Theposition:

for(i=0;

i<n;

i++)printf("

%4d"

pos[i]);

k=0 

(2)a[i]>max 

(3)a[i]=max

(4)a+i或&

a[i] 

(5)a,&

n,pos

[解析]先分析(4)、(5)空。

(4)空所在语句是从键盘中读入数据并存放在数组a[]之中,循环变量为I。

(4)空处应填写存放地址,循环变量有两种表示方法,一种是“a+i”,另一种是“&

a[i]”。

(5)空处需要填写调用函数fun()的实参,从函数fun()的形参可以看出,第1个参数是要处理的数组a[],第2个参数要返回的最大元素的个数n,第3个参数最大元素的下标数组pos[]。

因此(5)空处应填写“a,&

n,pos”。

再来分析

(1)-(3)空。

(1)、(3)空所在函数是找最大数,并将其下标存放在数组pos[]中,其实现的思路是先遍历一次数组,从数组中找出最大数max,再将遍历一次数组,依次将这些最大数的下标存放在数组pos[]中。

(2)空所在的循环就是找最大数max,因此

(2)空处应填写“a[i]>max”。

(3)空所在的循环是将这些最大数的下标存放在数组pos[]中,因此(3)空处应填写“a[i]=max”。

(1)空应填写什么呢?

从语句“pos[k++)=i”和“*n=k”可知,变量k是用来指出当前要存放在数组pos[]中的位置,但这个变量要进行初始化,因此

(1)空处应填写“k=0”。

试题五

以下是与VisualBasic开发应用有关的5个问题。

对每一个问题,请将解答填入对应栏内。

在VisualBasic中,工程文件、窗体文件和标准模块文件的扩展名是什么?

请从下列选项中选择:

prg、prj、exe、vbp、form、frm、win、fra、std、bas、vbs、vbm

2.设某窗体上有一个命令按钮,其名称为CmdSave,运行时该按钮上显示有“保存(S(下划线))”字样的信息。

为使热键Alt+S与该命令按钮相关联,应该对按钮CmdSave的Caption属性设置什么样的属性值?

3.设某窗口内有一个图像框Imagel,以及两个命令按钮“放大”和“缩小”。

单击“放大”按钮就会使该图像框的长和宽都放大10%;

单击“缩小”按钮就会使该图像框的长和宽都缩小10%(该图像框的左上角不动)。

请分别写出这两个命令按钮的单击事件过程中的程序代码。

4.为使某个单选按钮初始时默认被选中,在开发时应怎样做?

5.若有语句Tmpval=MsgBox(“非法操作!

”,vbOKCancel+vbCritical,“提示”),请简要描述程序运行时弹出的消息框的主要特征。

工程文件的扩展名是vbp,窗体文件的扩展名是frm,

标准模块文件的扩展名是bas。

(2)按钮的Caption属性设置为“保存(&

S)”。

(3)“放大”按钮单击事件过程中的程序代码:

Imagel.Width=Imagel.Width*1.1

Imagel.Height=Imagel.Height*1.1

“缩小”按钮单击事件过程中的程序代码:

Imagel.Width=Imagel.Width*0.9

Imagel.Height=Imagel.Height*0.9

(4)将该单选按钮的Value属性值设置成True

(5)消息框的标题栏显示“提示”;

消息框中有一个出错标记以及两个命令按钮,分别显示“确定”和“取消”;

消息框中显示的信息为“非法操作!

”。

试题六

阅读以下应用说明及VisualBasic部分程序代码,将应填入 

本应用程序是一个小写数字转换成大写格式的转换器,其运行窗口如图5所示。

窗口中有两个标签(lblNumber和lblChinese)、两个文本框(txtNnmber和txtChinese)和一个命令按钮(cmdChange)。

当单击按钮cmdChange时,将文本框txtNumber中数字转换成中文大写,并显示在文本框txtChinese中。

例如,在文本框txtNumber输入0076845,单击cmdChange按钮,将在文本框txtChinese中显示“柒万陆仟捌佰肆拾伍”。

程序中调用的函数CChinse(StrdigitAsString)的功能是先删除字符串的所有前导0,再调用函数Change(StrdigitAsString),将数字字符串Strdigit转换成中文大写格式。

为了防止用户在文本框txtNumber输入非数字形式的字符,程序将以空字符代替所输入的非数字有形字符。

【程序】

PrivateFunctionTransfer(StrdigitAsString)AsString

′完成小写向大写的转换,这段代码省略

EndFunction

PrivateFunctionCChinese(StrdigitAsString)AsString

DimintLen,intCounterAsInteger

intLen=Len(Strdigit)

IfintLen>0Then

intcounter=0

Do 

'

过滤数字串Strdigit的前导0

intcounter=intcounter+1

LoopUntilMid(Strdigit, 

intLen= 

Strdigit= 

(Strdigit,intLen)

CChinese=Transfer(Strdigit)

EndIf

PrivateSubcmdChange_Click()

txtChinese.Text=CChinese( 

) 

'

调用Cchinese函数

EndSub

PrivateSubtxtNumber_KeyPress(KeyAsciiAsInteger)

SelectCaseKeyAscii 

根据输入字符的ASCII码的值进行判断

CaseKeyAscii<32 

保留输入的控制字符

Case48To57 

保留输入的数字字符

CaseElse 

其他情况以空字符代替

=0

EndSelect

intcounter,1

(2)intLen-intCounter+1或Len(Strdigit)-intCounter+1

(3)Right或Right$ 

(4)txtNumber.Text 

(5)KeyAscii

[解析]

(1)~(3)空所在语句块的功能是删除过滤数字串Strdigit的前导0。

(1)空所在Do……Loop循环是找到第一个非0的位置,循环变量为intcounter,即要判断第intcounter个字符是不是0,因此

(1)空处应填写“intcounter,1”。

从(3)空所在语句可以判断

(2)空所在语句是求出过滤数字串Strdigit的前导0后的数字长度,因此

(2)空处应当填写“intLen-intCounter+1”或“Len(Strdigit)-intCounter+1”。

(3)空所在语句是取出过滤数字串Strdigit的前导。

后的数字,需要填写这一操作的函数,因此(3)空处应当填写“Right”或“Right$”。

(4)空处需要填写调用Cchinese函数的参数,程序要对小写数字进行转换,其内容存放在文本框txtNumber中,因此(4)空处应当填写“txtNumber.Text”。

(5)空所在语句是处理当前输入若不是数字或控制字符时,则将具ASCII码值设置为0。

因此(5)空处应当填写“KeyAscII”。

试题七

阅读以下说明和C++程序,将应填入 

设计一个评选优秀教师和学生的程序,其类结构如图6所示。

当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。

【程序】

#include<iostream.h>

enumbooleanFalse,True

classbase

protected:

charname[8];

public:

voidgetname()cout<<"

姓名:

;

cin>>name;

voidprintname()cout<<"

<<name<<endU3

virtualbooleanisgood()=0;

classstudent:

intnum;

voidgetnum()

cout<<"

考试成绩:

cin>>num;

booleanisgood()return 

classteacher:

publicbase

每年发表论文数:

cin>>num;

voidmain()

base*p[50];

student*pstud;

teacher*ptech;

charch;

intcount=0;

输入教师(t)或学生(s):

cin>>ch;

if(ch=='

s'

pstud=newstudent;

pstud->getname();

pstud->getnum();

p[count++]=pstud;

elseif(ch=='

t'

ptech=newteacher;

ptech->getname()

ptech->getnum();

p[count++]=ptech;

else

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1