青少年编程能力等级测评CPA C++(二级)试卷(1)
一、单项选择题(共20题,每题3.5分,共70分)
CP2_1_1.下列C++程序段中,对二维数组arr的正确定义是( )。
A.
int N=5;
int arr[N][N];
B.
int N=5;
int arr[N-1][N];
C.
int N;
int arr[N][N];
D.
#define N 5;
int arr[N-1][N];
CP2_1_2.在C++中,下列对二维数组a1进行初始化的语句,不正确的是( )。
A.int a1[3][3]={1,2,3,4};
B.int a1[3][3]={{0}};
C.int a1[2][2]= {{0},{0},{0}};
D.int a1[2][2]={1,2,3,4};
CP2_1_3 在C++中,若有定义:int x[ ][3]={0,1,2,3,4,5,6,7,8,9}; 则数组x的行数是( )。
A.2
B.4
C.3
D.9
CP2_1_4.在C++中,下列程序段能使指针变量q指向变量x的是( )。
A.
int *q = &x;
int x = 8;
B.
int x;
int *q = &x;
C.
int *q;
int x;
*q = &x;
D.
int x;
int *q,
*q = x;
CP2_1_5.在C++中,若有定义:int i,j,*p1,*p2=&j; 则下列赋值语句不正确的是( )。
A.*p1=100;
B.*p2=100;
C.p1=&i;
D.p1=p2;
CP2_1_6.在C++中,若有定义float y[4]={1.5,2.5,3.5,4.5}, *py=y; 则下列表达式不正确的是( )。
A.*py+0.5
B.py+=1
C.*(py+1)-0.5
D.py+=1.5
CP2_1_7.在C++中,执行下列程序,若x1,x2分别输入10和20,则输出的结果是( )。
#include <iostream>
using namespace std;
void swap(int *p1,int *p2)
{
int temp;
temp =*p1,*p1=*p2,*p2=temp;
}
int main()
{
int x1 ,x2;
cin>>x1>>x2;
swap(&x1,&x2);
cout << x1 << x2 << endl;
return 0;
}
A.1010
B.1020
C.2010
D.2020
CP2_1_8.在C++中,若有下列程序段,则表达式的值为字符“f”的是( )。
#include <string>
string str="butterfly";
A.str[6]
B.str[7]
C.str[0]
D.str[10]
CP2_1_9.阅读下列框图。设i,n为整型变量,若给i,n分别输入1和15,则s的输出结果是( )。
A.121
B.120
C.106
D.105
CP2_1_10.执行下列程序,若给a,b,c,d分别输入4 3 2 1,则输出的结果是( )。
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,flag;
cin>>a>>b>>c>>d;
if (a>b)
{ if (a>c)
if (a>d)
flag=1;
else
flag=2;
}
else
flag=3;
cout << flag << endl;
return 0;
}
A.1
B.2
C.3
D.4
CP2_1_11.执行下列程序,若输入:135,则输出的结果是( )。
#include <iostream>
using namespace std;
int main()
{ char c;
while((c=getchar())!='\n')
{
switch(c-'1')
{
case 0:
case 1: cout<< 'A';
case 2: cout<< 'B';break;
case 3: cout<< 'C'; break;
default:cout<< 'D';
}
}
return 0;
}
A.ABCD
B.ABBD
C.C
D.D
CP2_1_12.执行下列程序,最后一个输出的值是( )。
#include <iostream>
using namespace std;
int main()
{
int i,j;
for(int i = 0;i < 4;i++)
for(int j = 1;j < 5;j++)
cout<< i+j << endl;
return 0;
}
A.15
B.7
C.16
D.9
CP2_1_13.执行下列程序,输出的结果是( )。
#include <iostream>
using namespace std;
int main( )
{
int i,j,n,result=0;
for(i=3;i<6;i++)
{ j=1;
n=1;
do
{
n=n*j;
j++;
}while(j<=i);
result=result+n;
}
cout << result;
}
A.24
B.120
C.150
D.6
CP2_1_14.执行下列程序,输出的“*”个数是( )。
#include <iostream>
using namespace std;
int main()
{
for(int i=0;i<5;i++)
{
for(int j=0;j<=5;j++)
{
if(j==i+1)
break;
cout << "*";
}
Cout << '\n';
}
return 0;
}
A.15个
B.10个
C.30个
D.20个
CP2_1_15.在C++中,若定义了函数:
int max(int a, int b)
{
int m;
if(a>b)
z=a;
else
z=b;
return z;
}
下列对其进行函数声明的语句中,不正确的是( )。
A.int max(int x, int y);
B.int max(int a, b);
C.int max(int a, int b);
D.int max(int , int);
CP2_1_16.执行下列程序,输出结果是( )。
#include <iostream>
using namespace std;
void Swap(int x, int y)
{
int z;
z=x; x=y; y=z;
cout << x <<" " << y << endl;
}
int main( )
{
int a=100,b=200;
Swap(a,b);
cout << a << " " << b << endl;
return 0;
}
A.
100 200
100 200
B.
100 200
200 100
C.
200 100
200 100
D.
200 100
100 200
CP2_1_17.执行下列程序,输出的结果是( )
#include <iostream>
using namespace std;
void sort(int b[ ],int n);
int main( )
{
int a[10] = {11,22,63,97,58,80,45, 32,73,36};
sort(a,10);
cout << a[9] << endl;
}
void sort(int b[ ], int n)
{
int i,j,t;
for (i=1; i<n; i++)
for (j=0; j<n-i; j++ )
if (b[j]>b[j+1]) {t=b[j];b[j]=b[j+1];b[j+1]=t;}
}
A.97
B.36
C.80
D.73
CP2_1_18.执行下列程序,输出的结果是( )
#include <iostream>
using namespace std;
void sub1(int x,int &y)
{
x+=2;
y+=2;
}
int main()
{
int n1=15,n2=15;
sub1(n1,n2);
cout << n1 << "," << n2 << endl;
return 0;
}
A.17,17
B.15,17
C.15,15
D.17,15
CP2_1_19.执行下列程序,若给n输入4,输出的结果是( )。
#include <iostream>
using namespace std;
int sub2(int n)
{
return n+2;
}
int sub1(int n)
{
int i,a=0;
for (i=n; i>0; i--)
a+=sub2(i);
return a ;
}
int main()
{
int n;
cin >> n;
cout << sub1(n) << endl;
return 0;
}
A.14
B.10
C.18
D.4
CP2_1_20.执行下列程序,若给i,n分别输入2和6,输出的结果是( )。
输出结果是( )。
#include <iostream>
#include <cmath>
using namespace std;
int f(int x,int n)
{
if(n == 0)
return 1;
else
return x*pow(x,n-1);
}
int main()
{
int i,n;
cin >> i >> n;
cout << f(i,n) << endl;
return 0;
}
A.16
B.36
C.32
D.64
二、编程题(共2题,每题15分,共30分)
CP2_1_21:
编写程序,其功能是:求一个3×3整型二维数组中对角线元素之和,并输出结果。
样例:
输入:1 2 3 4 5 6 7 8 9
输出:15
CP2_1_22:
编写程序计算一个人的体重指数(BMI),国际上是通过计算公式来计算的,BMI的公式=体重(公斤)/身高(米)的平方。计算出的体重指数按照我国标准分类为:BMI<18.5消瘦。18.5-24.9正常,25-27.9超重,≥28肥胖。完成计算,判断其类别并输出。
说明:
(1)设体重的范围40-120kg,身高的范围1.4-2.1m。若输入的体重,或身高不在范围内,则直接输出NO。
(2)编程过程中对于程序给定的部分不允许修改,仅允许在/****code****/提示行区间内作答。
样例1:
输入:70.5 1.72 //体重:70.5(kg),身高:1.72(m)
输出:23.8304 正常 //BMI:23.8304,类别:正常
样例2:
输入:90 1.65
输出:33.0579 肥胖
样例3:
输入:190 1.85
输出:NO
#include <iostream>
using namespace std;
void f(int w,int h)
{
/******************code***********************/
/******************code***********************/
}
int main()
{
int w,h; // w代表体重,h代表身高
cin >> w >> h;
if (w<40 || w>120||h<1.4||h>2.1)
{
cout << "NO" << endl;
return 0;
}
f(w,h);
return 0;
}