计算机软考 下午试题,2011年计算机软考程序员考试(下午题)模拟试题及答案(2)...
下午试卷
(考试时间 14:00~16:30 共150分钟)
本试卷共8道题,考生需解答5道题,其中试题1~试题3是必答题,试题4和试题5两题任选1道题,试题6至试题8三题任选1道解答。对于任选题,如果解答的试题数超过1道,则题号小的1道题解答有效。每题15分,满分75分。
试题一(15分,每空3分)
阅读以下说明和流程图,将应填入__(n)__处的字句写在答题纸的对应栏内。
[说明]
已知头指针分别为La和Lb的有序单链表,其数据元素都是按值非递减排列。现要归并La和Lb得到单链表Lc,使得Lc中的元素按值非递减排列。程序流程图如下所示。
试题二(15分,每空3分)
阅读以下函数说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。
[程序2.1说明]
已知一个排好序的数组,现输入一个数,要求按原来的顺序规律,将它插入到数组中。
[程序2.1]
#include
#define N 100
void main()
{
float a[N=1],x;
int i,p;
printf("输入已经排好序的数列:");
for( i=0; i
scanf(%f",&a[i]);
printf("输入要插入的数:");
scanf("%f",&x);
for( i=0,p=N; i
if(x
{
___(1)___
break;
}
for( i=N-1; i>=p; i-- )
___(2)___
___(3)___
for( i=0; i<=N; i++ )
printf("%f\t",a[i]);
}
[程序2.2说明]
本程序用变量count统计文件中字符的个数。
[程序2.2]
#include
#include
void main()
{
FILE *fp;
long count=0;
if( (fp=fopen("letter.txt","r") ) == NULL )
{
printf("can not open file\n");
exit(0);
}
while( !feof(fp) )
{
___(4)___
count++;
}
printf("count=%d\n",count);
___(5)___
}
试题三(15分,每空3分)
阅读以下说明和C语言程序,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
Fibonacci数列A={11,2,3,5,8,…}有如下性质:
a0=a1=1
ai=ai-1+ai-2 i>1
对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为:
xi=ai/ai+1 i=0,1,…,n
现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,
排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数
make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。
[程序]
#include
#include
#include
struct fact
{
long m,n;
};
void sort(int n,struct fact *p)
{
int a;
long s,t,u,v;
struct fact *q,*end;
for(end=p+(n-1),a=1;a;end--)
for(a=0,q=p;q
{
s=q->m;
t=q->n;
u=(q+1)->m;
v=(q+1)->n;
if(___(1)___)
{
q->m=u;
___(2)___
___(3)___
(q+1)->n=t;
a=1;
}
}
}
void make(int n)
{
int i;
long a,b,c;
struct fact *x,*y;
x=(struct fact *)malloc(sizeof(struct fact)*n);
x->m=1;
x->n=1;
for( a=1,b=1,i=2;i<=n;i++)
{
___(4)___
a=b;
b=c;
(x+(i-1))->m=a;
(x+(i-1))->n=b;
}
___(5)___
printf("x%d={/",n,x->m,x->n);
for(y=x+1;y
printf(",/",y->m,y->n);
printf("}\n");
free(x);
}
void main()
{
int n;
printf("input n:");
scanf("%d",&n);
make(n);
}
试题四(15分,每空3分)
阅读以下说明和C语言程序,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:
假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数
key(key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:
加密时从 S1 位置起顺时针计数,当数到第 key 个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第 key 个字符位置时,将原文中字符 C2 放入其中,并从环中除去该字符位置;依次类推,直至 n 个原文字符全部放入密文环中。由此产生的 S1S2...Sn 即为原文的密文。
例如,当 Key=3 时,原文:this is a decoding system 的密文为:
aotgnhedi ys d imietsnc ss
当Key=4时,该原文的密文为:
ssdtyd htegiasiscnm e ion
#include
#include
typedef struct node
{ char ch;
struct node *forward; /* Link to next node. */
struct node *backward;/* Link to previous node.*/
} CODE;
int strlen(char *s)
{ int len = 0;
while (*s++ != ’\0’ )
len++;
return( len );
}
char *decode(char *old,int key)
{ char *New; int length,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);
}
void main()
{ char old[256];
int key , num=0;
printf("\nPlease input the telegraph: \n");
while ( num<255 && ( old[num++] = getchar()) != ’\n’ );
old [ (num==255)?num:num-1] = ’\0’;
do
{ printf( "\nPlease input Key ( Key>1 ):" );
scanf("%d",&key);
} while ( key<=1 );
printf( "\nThe decode of telegraph:’%s’ is:\n’%s’\n",old,decode( old,key ) );
}
试题五(15分,每空3分)
阅读以下说明及Visual Basic 程序代码,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
本程序实现如下功能:首先,单击“生成”按钮,生成一个由10个随机大写字母组成的字
符串,并在文本框中显示。然后,单击“排序”按钮,将此随机字符串中的各个字母按递增顺序添加
到列表框中。
程序运行界面如下:
[程序]
As String
Private Sub get_Click()
Dim i As Integer
Randomize
For i = 1 To 10
str1 = Trim(str1) & Chr(Int( ___(1)___ ))
Next
Text1.Text = str1
End Sub
Private Sub sort_Click()
Dim i As Integer
Dim j As Integer
For i = 1 To 26
j = ___(2)___
Do While j > 0
___(3)___
j = j - 1
Loop
Next
End Sub
Private Function search(str1 As String, str2 As String) As Integer
Dim int1 As Integer, int2 As Integer
int1 = 1
Do
int1 = ___(4)___
If int1 = 0 Then Exit Do
int2 = int2 + 1
int1 = int1 + 1
Loop
search = ___(5)___
End Function (
试题六(15分,每空3分)
阅读以下说明和C++程序,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字符串、
返回字符串长度及内容等功能。另有一个具有编辑功能的串类edit_string,派生于string,在其
中设置一个光标,使其能支持在光标处的插入、删除操作。
[程序]
#include
#include
#include
class string
{
int length;
char *data;
public:
int get_length() { return length; }
char *get_data() { return data; }
~string() { delete data; }
int set_data( int in_length, char *in_data);
int set_data( char *data );
void print() { cout<
};
class edit_string : public string
{
int cursor;
public:
int get_cursor() { return cursor; }
void move_cursor( int dis ) { cursor=dis; }
int add_data(string *new_data);
void delete_data( int num );
};
int string::set_data( int in_length, char *in_data )
{
length=in_length;
if(!data)
delete data;
___(1)___
strcpy(data,in_data);
return length;
}
int string::set_data( char *in_data )
{
___(2)___
if(!data)
delete data;
___(1)___
strcpy(data,in_data);
return length;
}
int edit_string::add_data( string *new_data )
{
int n,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 = new char[n+m+1];
for( int i=0; i
news[i]=cp[i];
k=i;
for( int j=0; j
news[i]=pt[j];
cursor=i;
for( j=k; j
___(3)___
news[i]=’\0’;
___(4)___
delete news;
return cursor;
}
void edit_string::delete_data( int num )
{
int m;
char *cp;
cp=this->get_data();
m=this->get_length();
for( int i=cursor; i
___(5)___
cp[i]=’\0’;
}
试题七(15分,每空3分)
阅读以下说明及Visual Basic 程序代码,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
设窗体上有两个文本框和一个按钮,在第一个文本框text1中输入一个全部由“0”和“1” 组成的字符串,单击按钮,在第二个文本框text2中显示出给定字符串中连续的0和连续的1中连续字符数目的值。如果输入的字符串中有不是“0”和“1”的字符,使用消息框显示错误信息。
运行界面如下:
[程序]
Private Sub Command1_Click()
Dim strSource As String
Dim str1 As String
Dim result As Integer
Dim int1 As Integer, num As Integer
strSource = Text1.Text
If Len(strSource) = 0 Then
MsgBox "请在文本框中输入由0和1组成的字符串"
Exit Sub
End If
For int1 = 1 To Len(strSource)
___(1)___
If str1 <> "1" And str1 <> "0" Then
MsgBox "不能输入非0或非1的字符"
Exit Sub
End If
Next
str1 = ___(2)____
num = 1
For int1 = 2 To Len(strSource)
If str1 = Mid(strSource, int1, 1) Then
___(3)___
Else
If result < num Then
result = num
End If
str1 = Mid(strSource, int1, 1)
___(4)___
End If
Next
If result < num Then
result = num
End If
___(5)___
End Sub
试题八(15分,每空3分)
阅读以下说明、Java代码将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
IC卡和200卡都是从电话卡派生。下面程序将电话卡定义为抽象类。其中balance为双精度变量,代表电话卡中的余额;cardNumber是长整型,代表电话卡的卡号;password是整型变量,代表电话卡的密码;connectNumber是字符串变量,代表电话卡的接入号码;connected是布尔变量,代表电话是否接通。
performDial()实现各种电话接通后的扣除费用的操作。其中200卡每次通话扣除0.5 元的通话费用和附加费用;IC卡每次通话扣除0.9元的通话费。TimeLeft()方法用于测试电话卡余额还可以拨打电话的次数。performConnection()用于电话接入操作,如果卡号和密码正确,则接通,否则,接不通。
[程序]
abstract class PhoneCard
{
double balace;
___(1)___ performDial();
double getBalance()
{ return balance; }
double TimeLeft()
{
double current=balance;
int times=0;
do
{
___(2)___
times++;
}while(balance>=0);
balance=current;
return times-1;
}
}
abstract class Number_PhoneCard extends PhoneCard
{
long cardNumber;
int password;
String connectNumber;
Boolean connected;
Boolean performConnection( long cn, int pw )
{
if( cn==cardNumber && ___(3)___ )
{
connected=true;
return true;
}
else return false;
}
}
class IC_Card ___(4)___
{
boolean performDial()
{
if(balance>0.9)
{
balance-=0.9;
return true;
}
else return false;
}
}
class D200_Card ___(4)___
{
static double additoryFee;
static{ additoryFee=0.1; }
boolean performDial()
{
if(balance>(0.5+additoryFee))
{
___(5)___
return true;
}
else return false;
}
}
2011年计算机软考程序员考试(下午题)模拟试题及答案(2).doc
下载Word文档到电脑,方便收藏和打印[全文共6525字]
编辑推荐:
下载Word文档
计算机软考 下午试题,2011年计算机软考程序员考试(下午题)模拟试题及答案(2)...相关推荐
- 陕西省2019计算机软考试题,2019湖北襄阳计算机软考程序员考试真题及答案解析...
2019湖北襄阳计算机软考程序员考试真题及答案解析 单选题(每题1分,共1个标准答案) 1.计算机中数据的表示形式是 A)八进制 B)十进制 C)二进制 D)十六进制 2.硬盘工作时应特别注意避免 A ...
- 程序员考试下午题知识点总结
程序员考试下午题知识点总结 第一大题:程序框图 程序流程图又称程序框图,是用统一规定的标准符号描述程序运行具体步骤的图形表示.程序框图的设计是在处理流程图的基础上,通过对输入输出数据和处理过程的详细分 ...
- 软考程序员Java答题速成_软考程序员考试下午题解题技巧
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 如果说程序员考试解上午题无技巧可言的话,那么解下午题就是70%的实力加30%的方法与技巧,若运用到极致的话,会是"四两拨千斤".很多考 ...
- 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---最新技术--篇
第八章 最新技术(评论区留言获取原件) 一. Redis 1. Redis 的特点? Redis 是由意大利人 Salvatore Sanfilippo(网名: antirez)开发的一款内存高速缓存 ...
- 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---数据库--篇
一. Mysql 1. SQL 的 select 语句完整的执行顺序 SQL Select 语句完整的执行顺序: 1. from 子句组装来自不同数据源的数据: 2. where 子句基于指定的条件对 ...
- 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---框架--篇
框架(评论留言获取原件) 一. SpringMVC 1. SpringMVC 的工作原理 a. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获: b ...
- java初级程序员考试真题_一份Java基础知识笔试题附答案
如果运行JavaDemo,什么样的信息会打印出来? 1/** 2如果运行JavaDemo,什么样的信息会打印出来? 3*/ 4public class Demo { 5 public static ...
- 程序员常见逻辑题笔试题
1.烧一根不均匀的绳,从头烧到尾总共需要1个小时.现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢? 答1)三根绳,第一根点燃两端,第二根点燃一端,第三根不点第一根绳烧完(30分 ...
- 全国计算机软考程序员考试大纲
全国计算机软考程序员考试大纲 一.考试说明 1.考试要求: (1)掌握数据及其转换.数据的机内表示.算术和逻辑运算,以及相关的应用数学基础知识: (2)理解计算机的组成以及各主要部件的性能指标: (3 ...
最新文章
- oracle查看执行最慢与查询次数最多的sql语句及其执行速度很慢的问题分析
- jQuery.extend
- ROS-手势控制小海龟移动
- Yii-模型- criteria查找数据库方法
- 华为P50系列终于要来了!但最大问题却是...
- python的速度_关于python的速度
- 网页制作之CSS超级技巧
- python编程词典_Python 字典(Dictionary)操作详解
- 合伙人的重要性超过了商业模式和行业选择(转)
- 解决office 2013 新建PPT(幻灯片)为拉伸矩形问题
- 小米笔记本linux系统下载软件,小米笔记本用什么系统 小米笔记本电脑将预装Linux系统...
- “备胎”海思的蛰伏与挑战
- 用计算机管理学生成绩,北京计算机大学组织专家对《学生成绩管理系统》的需求方案进行评审,为使参会人员对会议流程和内容有一个清晰的了解_题来了...
- ##Mysql数据库DQL查询工具的使用
- PMP项目管理的就业前景
- 普瑞PS8742 Switch V0.9
- 2021-07-26记录字节“懂车帝”重庆岗一面(绝对凉)
- JavaScript中的every方法
- 游戏中接入第三方渠道时 关于meta-data的一些小问题
- Mete8 手机夏天充电慢