摘要:下面是由希赛软考学院软考程序员考试模拟试卷下午题 ,供给大家参考。
下面是由希赛软考网软考程序员考试模拟试卷下午题 ,供给大家参考。
试题四
阅读以下说明和C语言程序,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
本程序对某电码文(原文)进行加密形成密码文,其加密算法如下
假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数key(key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:
加密时从S1位置起顺时针计数,当数到第key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置;依次类推,直至n个原文字符全部放入密文环中。由此产生的S1S2...Sn即为原文的密文。
例如,当Key=3时,原文:thisisadecodingsystem的密文为:
aotgnhediysdimietsncss
当Key=4时,该原文的密文为:
ssdtydhtegiasiscnmeion
#include
#include
typedefstructnode
{charch;
structnode*forward;/*Linktonextnode.*/
structnode*backward;/*Linktopreviousnode.*/
}CODE;
intstrlen(char*s)
{intlen=0;
while(*s++!='\0')
len++;
return(len);
}
char*decode(char*old,intkey)
{char*New;intlength,count,i;
CODE*loop,*p;
length=strlen(old);
loop=(CODE*)malloc(length*sizeof(CODE));
for(i=1;i
{loop[i].forward=&loop[i+1];
___(1)___
}
loop[0].backward=&loop[length-1];
loop[0].forward=&loop[1];
loop[length-1].forward=loop;
___(2)___
for(p=loop,i=0;i
{for(count=1;count
p=p->forward;
___(3)___
p->backward->forward=p->forward;
p->forward->backward=p->backward;
___(4)___
}
New=(char*)malloc((length+1)*sizeof(char));
for(i=0;i
___(5)___
New[length]='\0';
return(New);
}
voidmain()
{charold[256];
intkey,num=0;
printf("\nPleaseinputthetelegraph:\n");
while(num<255&&(old[num++]=getchar())!='\n');
old[(num==255)?num:num-1]='\0';
do
{printf("\nPleaseinputKey(Key>1):");
scanf("%d",&key);
}while(key<=1);
printf("\nThedecodeoftelegraph:'%s'is:\n'%s'\n",old,decode(old,key));
}
试题五
阅读以下说明及VisualBasic程序代码,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
本程序实现如下功能:首先,单击“生成”按钮,生成一个由10个随机大写字母组成的字符串,并在文本框中显示。然后,单击“排序”按钮,将此随机字符串中的各个字母按递增顺序添加到列表框中。
程序运行界面如下:
[程序]
AsString
PrivateSubget_Click()
DimiAsInteger
Randomize
Fori=1To10
str1=Trim(str1)&Chr(Int(___(1)___))
Next
Text1.Text=str1
EndSub
PrivateSubsort_Click()
DimiAsInteger
DimjAsInteger
Fori=1To26
j=___(2)___
DoWhilej>0
___(3)___
j=j-1
Loop
Next
EndSub
PrivateFunctionsearch(str1AsString,str2AsString)AsInteger
Dimint1AsInteger,int2AsInteger
int1=1
Do
int1=___(4)___
Ifint1=0ThenExitDo
int2=int2+1
int1=int1+1
Loop
search=___(5)___
EndFunction(
试题六
阅读以下说明和C++程序,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类edit_string,派生于string,在其中设置一个光标,使其能支持在光标处的插入、删除操作。
[程序]
#include
#include
#include
classstring
{
intlength;
char*data;
public:
intget_length(){returnlength;}
char*get_data(){returndata;}
~string(){deletedata;}
intset_data(intin_length,char*in_data);
intset_data(char*data);
voidprint(){cout<
};
classedit_string:publicstring
{
intcursor;
public:
intget_cursor(){returncursor;}
voidmove_cursor(intdis){cursor=dis;}
intadd_data(string*new_data);
voiddelete_data(intnum);
};
intstring::set_data(intin_length,char*in_data)
{
length=in_length;
if(!data)
deletedata;
___(1)___
strcpy(data,in_data);
returnlength;
}
intstring::set_data(char*in_data)
{
___(2)___
if(!data)
deletedata;
___(1)___
strcpy(data,in_data);
returnlength;
}
intedit_string::add_data(string*new_data)
{
intn,k,m;
char*cp,*pt;
n=new_data->get_length();
pt=new_data->get_data();
cp=this->get_data();
m=this->get_length();
char*news=newchar[n+m+1];
for(inti=0;i
news[i]=cp[i];
k=i;
for(intj=0;j
news[i]=pt[j];
cursor=i;
for(j=k;j
___(3)___
news[i]='\0';
___(4)___
deletenews;
returncursor;
}
voidedit_string::delete_data(intnum)
{
intm;
char*cp;
cp=this->get_data();
m=this->get_length();
for(inti=cursor;i
___(5)___
cp[i]='\0';
}
希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库(软考历年真题)、软考培训教材和软考视频教程,多样的培训方式包括在线辅导、面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。
软考备考资料免费领取
去领取