等考复习VC03答案

发布 2022-09-02 08:21:28 阅读 1987

2024年春二级vc上机试卷参***(vc03)

一、改错题(20分)

题目】以下程序的功能是:对于给定的整型数组,判断该数组中是否存在一个子数组,其元素的和为0(假设该数组中不存在值为0的元素)。如果存在,则输出第一个满足条件的子数组。

所谓子数组,就是从原数组中提取若干个(至少1个)连续元素所构成的数组。例如,数组,其子数组的元素之和为0。这里的算法采用如下原理:

对于数组x1,x2, …xn,如果x1+…+xi=x1+…+xi+xi+1+…+xj(j>i),则xi+1+…+xj=0。

正确程序的输出如下:

数组中第一个和为0的子数组为:-1 2 1 -2

含有错误的源程序如下:

#include <>

void print(int x,int i,int j)

cout<<"数组中第一个和为0的子数组为:";

for(int k=i;k<=j;k++)

cout<}

int zero_sum(int x,int count)

int i;

int *x1=new int(countcount]

for(i=0;i x1[i]=x[i];

for(i=1;i x1[i]+=x1[i-1

/x1[0]为x[0],x1[1]为x[0]+x[1],…x1[i]为x[0]+ x[1]+…x[i]

for(i=0;i for(int j=i+1;jif(x1[j]==0) ;

int b=zero_sum(a,sizeof(asizeof(a)/sizeof(int)

if(!b)

cout<<"数组中不存在和为0的子数组"<}

二、编程题(20分)

题目】试定义一个类soldiers,给出若干个士兵的身高数据(假设他们的身高各不相同),对士兵进行重新排列,要求任意相邻两个士兵之间的身高之差各不相同。具体要求如下:

(1)私有数据成员。

int *height; 指向存放士兵身高的数组。

int size; 士兵的个数。

2)公有成员函数。

soldiers(int *h, int n); 构造函数,为成员height动态分配n个整型存储空间,并利用参数h所指向的数组(n个元素)初始化height所指向的数组,用n初始化size。

~soldiers();析构函数,撤销指针height所占用的动态存储空间。

int check();检测指针height所指向的士兵的排列方式是否符合题意,即相邻两个士兵之间的身高差是否都不相同。若是,则返回1;否则,返回0。

void sort();对height所指向的数组中的元素按从小到大的次序进行排列。

int resolve();对height所指向的数组进行重新排列,使得任意相邻士兵间的身高之差各不相同。

算法要求: 先调用函数check(),判断当前数组是否符合要求,若符合,则返回0,否则进行下面的操作。

调用成员函数sort(),对士兵按身高从小到大进行排序。

取身高数据最小的士兵排在第1个位置,再取身高数据最大的士兵排在第2个位置;在剩下的士兵中取身高最小的排在第3个位置,取身高最大的排在第4个位置;依此类推,直至将所有的身高数据排完为止。这样排列的士兵一定满足题目要求。

void print();输出height所指向的数组的元素。

3)在主函数中对该类进行测试。

输出示例:原队列: 178 167 172 180 170 182 184 176 174

重排后的队列: 167 184 170 182 172 180 174 178 176

参***:#include <>

#include <>

class soldiers

int *height;

int size;

public:

soldiers(int *h, int n): height(new int[n]),size(n)

~soldiers()

int check()

delete tmp;

return 1;

void sort()

int resolve()

if(size%2!=0)

tmp+size-1)=*height+size/2);

for(i=0; iheight+i)=*tmp+i);

delete tmp;

return 1;

void print()

void main()

int h=

soldiers s(h,9);

cout<<"原队列: "

cout<<"按题意排列后的队列: "

等考复习VC02答案

2011年春二级vc上机试卷参 vc02 一 改错题 20分 题目 在英文文章中,左双引号和右双引号之间没有区别。但是,在某英文编辑系统中,为了区分左 右双引号,用两个连续字符 键盘中数字1左边的符号 代替左双引号,用两个连续单引号 代替右双引号。以下程序实现上述转换。输入 输出示例如下 下划线部分...

全国等考C语言和9月真题,附答案

则由关系r和s得到关系t的操作是。a 自然连接 b 交 c 除 d 并。10 定义无符号整数类为uint,下面可以作为类uint实例化值的是。a 369 b 369 c 0.369 d 整数集合。11 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是。a c语言程序仅可以编译...

2019中考语文复习语言运用答案

2010年中考复习资料语言运用答案。1 d b a c2 a c d b3 c4 b5 b6 诗圣著千秋7 笑骂皆文章8 聚天地精华且读中西万本书9 万家箫管乐中秋10 宋濂勤奋手录书。14 宣传标语示例 赏 绿色 美景,唱 红色 歌谣 唱 红色 歌曲,建美好江西。短信示例 加油,我们支持你!相信你...