资源描述
第一部分 C++程序设计
一、选择题 (每小题2分,共20分)
1. 下面能正确表示为C++常量的是 B 。
A) 3.14 B)0xabc C) 'AB' D) 2e1.25
E) E10 F) 0181 G) 12UL H) "\n\\\'A"
A. ABCD B. ABGH C. ADGH D. ABCE
1.设整型变量x的值是10,则表达式2>x>5的编译运行结果是 C 。
A.值不确定 B.值为1 C.值为0 D.表达式非法
2.a是一个整型变量,则执行下列输出语句后a的值是 C 。
cout<<(a=3+6,a+=5,a-4);
A.9 B.10 C.14 D.18
3.设程序中定义int x=5,y=0;以下循环语句执行结束后,x和y的值分别是 B 。
while(x--) cout<<(++y)+x<<',';
A.0,5 B.-1,5 C.1,4 D.最小和最大机器数
4.对下面三条语句,正确的论断是 C 。
(1)if(!a)s1;else s2;
(2)if(a==0)s2;else s1;
(3)if(a!=0)s1;else s2;
A.三者相互等价 B.三者相互不等价
C.只有(2)和(3)等价 D.以上三个说法都不正确
5.执行以下程序段的输出是: A
for(int i=1;i<6;i++)
{ if(i%2==0) continue;
cout<<i<<'\t';
}
A.1 3 5 B.2 4 6 C.1 2 3 4 D.1 3 5 7
6.C++语言中函数重载是指多个函数 B 不同。
A.函数名 B.函数的参数类型
C.函数中局部变量 D.传递给函数的实参
7.设有函数声明 int fun(int a[],int b);,主函数有变量int x[10],m=10;下面的函数调用语句 D 是正确的。
A.fun(m,x) B.fun(5,6) C.fun(x-2,m) D.fun(x,m/2)
8.在一个函数内部,以下描述正确的是___D_______。
A.不可以调用但能定义其他函数
B.不可以调用也不能定义其他函数
C.可以定义和调用其他函数
D.可以调用但不能定义其他函数
9.若函数中有语句int a[8][8]; for(int i=0; i++<8; ) a[i][6]= a[i][0];
循环结束后将使 C 。
(A)数组的第0行元素赋给第6行元素
(B)数组a的第6行元素赋给第0行元素
(C)数组的第0列元素赋给第6列元素
(D)数组a的第6列元素赋给第0列元素
10.在定义int a[3][4];之后,能够实现对a的元素正确访问的是 A 。
A.a[2][3] B.a[1,3] C.a[3][3] D.a(2)(0)
二、阅读理解 (6小题,共35分)
1. 阅读下列程序,写出执行时的输出结果(每空2分,共6分)
#include<iostream.h>
void main()
{int i=0,j=0,k=0;
char ch;
cin>>ch;
while(ch!='#')
{
switch(ch)
{
case 'a': i++;
case 'A': i++; break;
case 'b':
case 'B': j++; break;
case ' ': k++; break;
default: ;
}
cin>>ch;
}
cout<<"i="<<i<<endl;
cout<<"j="<<j<<endl;
cout<<"k="<<k<<endl;
}
若输入测试字符为Aa Bb Cc # 则屏幕输出为:
i=3
j=2
k=0
2.阅读下列程序,写出执行时的输出结果(每空2分,共4分)。
#include<iostream.h>
#define A 6
void main( )
{ int a,b;
#define B(a) (A+1)*a
a=B(A);
b=3*(A+B(5));
cout<<"a="<<a<<'\n';
cout<<"b="<<b<<'\n';
}
屏幕输出为: a=42
b=143
3. 阅读下列程序,写出执行时的输出结果(每空2分,共6分)
#include <iostream.h>
int b;
int f(int );
void main()
{
for (int i=1;i<=3;i++)
cout<<f(i)<<'\n';
}
int f(int a)
{ static int c=3;
b+=a;
c=c+1;
return (a+b+c);
}
程序的输出是 6
10
15
4. 阅读下列程序,回答问题(共7分)
#include<iostream.h>
int fun(int n,int x){
if(n==0)return 1;
if(n==1)return 2*x;
else
return 2*x*fun(n-1,x)-2*(n-1)*fun(n-2,x);
}
void main( ){
int x=2,m,n;
for(n=1;n<4;n+=2){
m=fun(n,x);
cout<<"fun("<<n<<','<<x<<")="<<m<<endl;}
}
以上程序运行后的输出结果: f(1,2)=4 ;f(3,2)=40
写出程序求解的原数学公式:
5.阅读下列程序,写出程序的输出结果(每数1分,共6分)。
#include <iostream.h>
#include <iomanip.h>
void main(){
int data[]={1,2,3,4,5,6,7,8};
int i;
for(i=7;i>=0;i-=2){
cout<<setw(3)<<data[i];
data[i]=0;
}
cout<<setw(3)<<data[i+=2];
cout<<setw(3)<<data[++i];
cout<<endl;
}
程序的输出结果是: 8 6 4 2 0 3
6.设下列程序在运行时输入的是20,21,22,23这4个数字,写出程序的输出结果。 (每数2分,共8分)
#include<iostream.h>
#define M 4
void main()
{ int a[M][M]={1,3,5,7,2,4,6,8,10,11,12,13};
int i,j;
for(j=0;j<M;j++)
cin>>a[3][j];
for(i=0;i<M;i++)
{ for(j=0;j<M;j++)
if((i==0)||(i==M-1))a[i][j]++;
else if((j==0)||(j==M-1))cout<<a[i][j]<<'\t';
}
cout<<'\n';
}
程序的输出结果是: 2 8 10 13
三、完善程序 (共30分)
1.以下利用函数重载完成三角形面积的计算。三角形的面积可以由一条边的边长与高的乘积的一半求得,公式为:。也可由三角形的三条边a、b、c求三角形的面积,公式为:。
#include <iostream.h>
#include <math.h>
float area(float a,float h){
return _____________________________ ;
}
float area(float a,float b,float c){
float s=(a+b+c)/2;
return ;
}
void main()
{
cout<<"利用三角形的底和高求面积\n";
cout<<"请输入三角形的底和高\n";
float a,h;
cin>>a>>h;
cout<<"面积为:"<< _______ <<"\n";
cout<<"利用三角形的三个边长求面积\n";
cout<<"请分别输入三角形的三个边长\n";
float b,c;
cin>>a>>b>>c;
cout<<"面积为:"<< _________ <<"\n";
}
2.如果一个数恰好等于它的因子之和,这个数就称为"完全数"。例如6=1+2+3,6是一个完全数。下面程序是找出50以内的所有完数,请完善该程序。
#include<iostream.h>
void main(void)
{ int i, j, s ;
for(j=2;j<50;j++)
{
s=0;
for(i=1; _________ ; i++)
if((j%i)==0)______ ;
if(s == _______ ){cout<<j<<" is a wanshu"<<endl;}
}
}
3. 下列函数inverse的功能是使一维数组的各元素按逆序存放,请填空。
void inverse(int x[],int____ )
{ int t;
int i=0,j=len-1;
while(i<j)
{ t=x[i];
_________ ;
x[j]=t;
_________ ;
__________ ;
}
}
3.求f(x)=-x2/2!+x4/4!-x6/6+x8/8!……,要求精度为十万分之一。
#include<iostream.h>
#include<math.h>
void main()
{
double x,y,t;
int n=0;
cout<<“Input x:”
cin>>x
t=1;
y=0;
while( ________ >1e-6)
{
n++;
________ +=(t=-t*x*x/((2*n-1)*2*n));
}
cout<<“y(“<<x<<”)=”<<y<<’\n’;
}
5. 以下程序是运用选择法对数据按升序排序并输出,请完善该程序。
#include <iostream.h>
#include <iomanip.h>
void sort(int a[ ],int n);
void main()
{
int b[10],i;
for (i=0;i<10;i++)
cin>>b[i];
sort(_______ ,10 );
cout<<endl;
for (i=0;i<M;i++)
cout<<b[i]<<setw(6);
cout<<endl;
}
void sort(int a[ ],int n)
{ int i,j,t;
for ( i=0; i<n-1; i++ )
{
for ( j=____ ; j<n; j++ )
if (____ )
{ t=a[i];
a[i]=a[j];
a[j]=t; }
}
}
共 7 页 第 7 页
展开阅读全文