国家二级C++机试(操作题)模拟试卷534
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有误,请改正其中的错误,使程序正常运行,并使程序在界面上输出为:
平均值为:29
最大值为:112
最小值为:-11
注意:错误的语句在//******error******的下面。修改该语句即可。
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int i,AvetMin,Max;
6 int data[8]={0,112,43,78,-11,-6,7,9};
7 Ave=0;
8 for(i=0;i<8;i++)
9 //******error******
10 Ave=data[i];
11 Ave/=8;
12 cout<<’’平均值为:’’<<Ave<<end1;
13 Max=Min=data[0];
14 for(i=0;i<8;i++)
15 {
16 //******error******
17 if(data[i]<Max)Max=data[i],
18 //******error******
19 if(data[i]>Min) Min=data[i];
20 }
21 cout<<’’最大值为:’’,<<Max<<end1;
22 cout<<’’最小值为:’’<<Min<<end1;
23 return 0;
24 }
(1)Ave+=data[i];或Ave=Ave+data[i];
(2)if(data[i]>Max)Max=data[i];
(3)if(data[i]<Min)Min=data[i];
解析:该程序的功能是要求数组的平均值、最大值和最小值,求平均值时先求出数组各个元素之和,然后再去求平均值;求最大最小值可以采取逐个比较的方法求得。
(1)观察程序可知,第一个for循环是求数组各个元素的和,逐次将每个元素值加起来,而程序当中是逐个赋值,因此第1标识处应将Ave=data[i]改成Ave+=data[i]或Ave=Ave+data[i]。
(2)根据题意再求数组当中元素的最大最小值,用变量Max记录最大值,Min记录最小值,在for循环中,逐次比较,如果该元素值比当前Max大,则Max取该元素值,因此第2标识处正确的应该是if(data[i]>Max)Max=data[i]。
(3)同样如果数组该元素值比Min小,则Min取该元素值。因此,两个if中条件判断错误,第3标识处“if(data[i]>Min)Min=data[i]”改成“if(data[i]<Min)Min=data[i]”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数sum(int A[NUM][NUM],int n)实现的功能是计算矩阵中所有非质数数字的和。
提示:函数isPrime(int n)的功能是判定当前数字是否为质数,如果是则返回true。
注意:不能修改程序的其他部分,只能修改sum()函数。
1 #include<iostream.h>
2 #include<cmath>
3 #define NUM 50
4 int A[NUM][NUM]=
5 {
6 {10,13,59,70,6},
7 {2,4 0,8 9,92,9},
8 {14,55,71,11,19},
9 {79,68,83,97,101},
10 {102,10001,23,45}
11 };
12 bool isPrime(int n)
13 {
14 if(n==1)
15 return false;
16 if(n==2)
17 return true;
18 for(int i=2;i<n/2;i++)
19 {
20 if(n%i==0)
21 return false;
22 }
23 return true;
24 }
25 int sum(int A[NUM][NUM],int n)
26 {
27
28 }
29 int main()
30 {
31 cout<<sum(A,5)<<end1;
32 return 0;
33 }
1 int re=0;
2 for(int i=0;i<n;i++)
3 {
4 for(int j=0;j<n;j++)
5 {
6 if(!isPrime(A[i][j]))//判断是否是素数,不是素数则累加
7 {
8 re=re+A[i][j];
9 }
10 }
11 }
12 return re;
解析:函数sum(int A[NUM][NUM],int n)的功能是实现计算矩阵A[NUM][NUM]中所有非质数数字的和,在计算累加和之前需先判断该数是否是质数,不是质数则累加起来,可用循环来实现累加求和。
(1)矩阵A[NUM][NUM]是2维矩阵,sum函数的参数n给出了矩阵A的具体维数,因此矩阵A中共含有n×11个有效数。
(2)A[NUM][NUM]中元素可表示为A[i][j],其中i表示元素所在行数,j表示元素所在的列数,i、j分别从0到n-1范围内变化,因此设置内外两层循环可逐个遍历整个矩阵寻找非质数。
(3)函数isprime提供了判断质数的方法,对每个元素A[i][j],调用函数isprime(A[i][j]),判断函数的返回值是否为假,如果为假说明不是质数,应该累加起来。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了类baseA、priA1和priA2,其中priA1类由baseA类公有派生,priA2类由priA1类公有派生。上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。
程序输出结果如下:
10
5
10 5 7
(1)定义类baseA的构造函数,该构造函数有一个整型的参数m,在构造函数中请将m赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。
(2)定义类priA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中请将m赋值给数据成员b,将n作为基类baseA构造函数的参数值传入。请在注释“//**
本文档预览:3600字符,共5761字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载