青少年编程能力等级测评CPA C++(二级)试卷(2)
一、单项选择题(共20题,每题3.5分,共70分)
CP2_2_1.下列C++程序段中,对二维数组arr的定义不正确是( )。
A.
int arr[2][3];
B.
int n=3;
int arr[n-1][n];
C.
#define n 3;
int arr[n][n];
D.
#define N 3;
int arr[N-1][N];
CP2_2_2.在C++中,下列对二维数组x1进行初始化的语句,正确的是( )。
A.int x1[3][3]={0};
B.int x1[3][ ]={{1},{2},{3}};
C.int x1[2][2]= {{0},{0},{0}};
D.int x1[2][ ]={1,2,3,4};
CP2_2_3 在C++中,若有定义:
int arr[ ][3]={{0,1},{2,3},{4,5,6},{7,8,9}};
则数组arr的行数是( )。
A.2
B.3
C.4
D.9
CP2_2_4.在C++中,下列程序段可以将变量n的地址赋给指针变量p的是( )。
A.
int *p = &n,n=6;
B.
int n;
int *p = &n;
C.
int *p,n;
*p = &n;
D.
int n;
float *p;
p = &n;
CP2_2_5.在C++中,若有定义:int x,y,*q1,*p1=&x; 则下列赋值语句不正确的是( )。
A.*q1=*p1=10;
B.*p1=50;
C.q1=p1;
D.p1=&y;
CP2_2_6.在C++中,若有定义float y[4],*py=y; 则下列表达式不正确的是( )。
A.*py=0.5
B.py+=1
C.y++
D.*y=1.5
CP2_2_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;
cout << *p1 << ” ” << *p2 << endl;
}
int main()
{
int x1 ,x2;
cin>>x1>>x2;
swap(&x1,&x2);
cout << x1 << ” ” << x2 << endl;
return 0;
}
A.10 20
10 20
B.10 20
20 10
C.20 10
10 20
D.20 10
20 10
CP2_2_8.执行下列程序,输出的结果是( )。
#include <string>
#include <iostream>
using namespace std;
int main()
{ string str="butter";
cout << str[5] << endl;
return 0;
}
A.e
B.er
C.butte
D.r
CP2_2_9.阅读下列框图。设i,n为整型变量,若给i,n分别输入2和7,则s的输出结果是( )。
A.48
B.720
C.120
D.8
CP2_2_10.执行下列程序,若给a,b,c,d分别输入7 5 3 1,则输出的结果是( )。
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,flag=1;
cin>>a>>b>>c>>d;
if (a>b)
if (a<c)
if (a>d)
flag=2;
else
flag=3;
else
flag=4;
cout << flag << endl;
return 0;
}
A.1
B.2
C.3
D.4
CP2_2_11.执行下列程序,若输入:246,则输出的结果是( )。
#include <iostream>
using namespace std;
int main()
{ char c;
while((c=cin.get())!='\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.AB
D.CD
CP2_2_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 << " ";
cout << endl;
}
return 0;
}
A.3 4 5 6
B.2 3 4 5
C.4 5 6 7
D.1 2 3 4
CP2_2_13.执行下列程序,输出的结果是( )。
#include <iostream>
using namespace std;
int main( )
{
int i,j,n,result=0;
for(i=2;i<=5;i++)
{ j=1;
n=1;
do
{
n=n*j;
j++;
}while(j<=i);
result=result+n;
}
cout << result;
}
A.30
B.144
C.150
D.152
CP2_2_14.执行下列程序,输出的“#”个数是( )。
#include <iostream>
using namespace std;
int main()
{
for(int i=0;i<=5;i++)
{
for(int j=0;j<8;j++)
{
if(j==i+1)
break;
cout << "#";
}
cout << '\n';
}
return 0;
}
A.15个
B.21个
C.35个
D.48个
CP2_2_15.在C++中,若定义了函数:
int min(int x, int y)
{
int z;
if(x > y)
z = y;
else
z = x;
return z;
}
下列对其进行函数声明的语句中,正确的是( )。
A.int min(int x; int y);
B.int min(int , int);
C.int min(int a; int b);
D.int min(int x, y);
CP2_2_16.执行下列程序,输出结果是( )。
#include <iostream>
using namespace std;
void f1(int x, int y)
{
x=x+y; y=x-y;
cout << x <<" " << y << endl;
}
int main( )
{
int a=30,b=60;
f1(a,b);
cout << a << " " << b << endl;
return 0;
}
A.
90 30
30 60
B.
90 30
90 30
C.
30 60
30 60
D.
30 60
90 30
CP2_2_17.执行下列程序,输出的结果是( )
#include <iostream>
using namespace std;
void Sort(int b[ ],int n);
int main( )
{
int a[10] = {70,98,63,75,58,80,45, 32,73,36};
Sort(a,10);
cout << a[9] << "," << a[0] << 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.98,70
B.36,70
C.98,32
D.36,32
CP2_2_18.执行下列程序,输出的结果是( )
#include <iostream>
using namespace std;
void sub1(int &x,int y)
{
x*=2;
y/=2;
cout << x << "," << y << endl;
}
int main()
{
int n1=15,n2=15;
sub1(n1,n2);
cout << n1 << "," << n2 << endl;
return 0;
}
A.
30,7
15,15
B.
30,7
30,15
C.
30,7.5
30,7.5
D.
30,7.5
15,15
CP2_2_19.执行下列程序,若给n输入5,输出的结果是( )。
#include <iostream>
using namespace std;
int s2(int n)
{
return n+2;
}
int s1(int n)
{
int i,a=0;
for (i=n; i>0; i--)
a+=s2(i);
return a ;
}
int main()
{
int n;
cin >> n;
cout << s1(n) << endl;
return 0;
}
A.5
B.10
C.18
D.25
CP2_2_20.执行下列程序,若给i,n分别输入3和4,输出的结果是( )。
输出结果是( )。
#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.9
B.12
C.64
D.81
二、编程题(共2题,每题15分,共30分)
CP2_2_21:
编写程序,其功能是:求一个4×4整型二维数组中第2行元素之和,并输出结果。
样例:
输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
输出:26
CP2_2_22:
编写程序计算一个人的体重指数(BMI),国际上是通过计算公式来计算的,BMI的公式=体重(公斤)/身高(米)的平方。计算出的体重指数按照我国标准分类为:BMI<18.5(偏瘦)。18.5 <=BMI<25(标准),BMI≥25(偏胖)。完成计算,判断其类别并输出。
说明:
(1)设体重的范围30-150kg,身高的范围1.3-2.2m。若输入的体重,或身高不在范围内,则直接输出NO。
(2)编程过程中对于程序给定的部分不允许修改,仅允许在/****code****/提示行区间内作答。
样例1:
输入:75 1.75 //体重:75(kg),身高:1.75(m)
输出:24.4898 标准 //BMI:24.4898,类别:标准
样例2:
输入:88 1.66
输出:31.935 偏胖
样例3:
输入:192 1.80
输出:NO
#include <iostream>
#include <cmath>
using namespace std;
void f(float w,float h)
{
/******************code***********************/
/******************code***********************/
}
int main()
{
float Weight,Height;
cin >> Weight >> Height; // Weight代表体重,Height代表身高
if (Weight<30 || Weight>150||Height<1.3||Height>2.2)
{
cout << "NO" <<endl;
return 0;
}
f(Weight,Height);
return 0;
}