资源描述
最最新面对对象程序设计试题 编程题
一、1.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。 int f(int a[],int n);
int f(int a[],int n)
{
if(n==0) return 0;
else return a[n—1]*a[n—l]+f(a,n—1);
}
2.依照下面类中拷贝结构函数的原型写出它的类外定义。
class Array {
int*a; //指向动态分派的整型数组空间
int n; //统计数组长度
public:
Array(int aa[],int nn) ; //结构函数,利用aa数组长度nn初始化n,
//利用aa数组初始化a所指向的数组空间 Array (const Array& aa) ; //拷贝结构函数
};
//在下面写出拷贝结构函数的类外定义
Array::Array(const Array& aa) {
n=aa. n;
a=new int[n] ;
for(int i=0;i<n; i++)a[i]=aa.a[i];
}
3.计算l+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
#include<iostream. h〉
void main()
{
int i;
int p=1;
int s=l;
for(i=l;i< =l0;i++) {p*=3;s+=p;}
cout<<s<<endl;
}
4.依照下面类中Min函数组员的原型和注释写出它的类外定义。
class AA {
int * a;
int n;
int MS;
public:
void lnitAA(int aa[], int nn, int ms) {
if(nn〉ms) {cout<<"Error!”<<endl; exit(l);}
MS=ms; n~nn; a=new int[MS];
for(int i=0;i<n;i++) a[i]=aa[i];
}
int Min(); //从数组a的前n个元素中求出最小值并返回
};
int AA::Min()
{
int x=a[0];
£or(int i=1; i〈n; i++ )
if(a[i]<x) x=a[i];
return x;
}
5.求满足体现式22+42+...+n2的值,其中n取从键盘输人值的最大偶数。假定分别 采取i和s作为循环变量与求和变量,并限定使用for循环编程。
#include<iostream. h>
void main()
{
int n,i=0,s=0;
cin>>n;
if(n%2==1) n=n—1;
for(i=2;i<=n;i+=2) s+=i*i;
cout<<"s="<<s<<endl; ‘
}
6.编写出下面Strings类的结构函数的类外定义。
class Strings{
char *s; //指向动态分派的字符串数组空间
int n; //统计字符串长度 public;
Strings(char*str);//结构函数
};
Strings::Strings(char * str){
n=strlen(str);
s=new char[n+l];
strcpy(s,str) ;
}
7.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素之和。
int f(int a[],int n);
int f(int a[],int n)
{
if(n==0) return 0;
else return a[n—l]+f(a, n—1);
}
注:if 语句可改写为 if(n==l) return a[0];
8.依照下面类中Max函数组员的原型和注释写出它的类外定义。
class AA {
int*a;
int n;
int MS;
public:
void InitAA(int aa[],int nn,int ms){
if (nn>ms) {cout<<"Error!"<<endl;exit(l);}
MS=ms; n=nn; a=new int[MS];
for (int i=0;i<MS; i++)a[i]=aa[i];
}
int Max(); //从数组a的前n个元素中求出最大值并返回
};
int AA∷ MaxO
{
int x=a[0];
for (int i=l;i<n; i++)
if (a[i]>x) x=a[i]
return x;
}
9.编写一个函数,分别求出由指针a所指向的字符串中包括的每种十进制数字出现的次数,把统计成果保存在数组b的对应元素中,该函数的原型申明如下:
void fun(char*a, int b[]);
void fun(char * a, int b口)
{
int i;
for(i=0;i<10 ;i++) b[i]=0;
while(*a){
int j=*a—'O';
if(j>-0 && j< = 9) b[j]++;
a++;
}
}
10.依照下面类中CompareBig函数组员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[],int nn, int ms) {
if(nn>ms){cout〈<"Error!"<<endl; exit(l);}
MS=ms;
N=nn;
a=new int[MS];
for(int i=0;i<n;i++)a[i]=aa[i];
}
int CornpareBigC AA &• h);
//比较*this与b的大小,从前向后按两数组
//中的对应元素比较,若*this中元素值大则返回1,若b中
//元素值大则返回-1,若相等则继续比较下一个元素,直到
//一个数组中无元素比较,此时若二者的n值相同则返回0,
//否则若*this中的n值大则返回1,若b中的n值大则返回-1。
};
int AA:: CompareBig (AA&b)
{
int k;
if(n>b.n) k=b.n;else k=n;
for(int i=0;i<k;i++)
if(a[i]>b.a[i])return 1;
else if(a[i]<b.a[i])return-1;
if(k==n&&k==b.n)return 0;
else if(k<n) return 1;
else return —1 ;
}
11.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。
int f(int a[],int n);
int f(int a[],int n)
{
if(n==0) return 0;
else return a[n—1]*a[n—l]+f(a,n—1);
}
12.依照下面类中拷贝结构函数的原型写出它的类外定义。
class Array {
int *a: //指向动态分派的整型数组空间
int n; //统计数组长度
public:
Array(int aa[] ,int nn);//结构函数,利用aa数组长度nn初始化n,
//利用aa数组初始化a所指向的数组空间 Array(Array& aa) ; //拷贝结构函数
}
Array:: Array(Array&aa){
n=aa.n;
a=new int[n];
for(int i=0;i<n;i++)a[i]=aa. a[i];
}
13.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。
int f(int a[],int n);
int f(int a[],int n)
{
if(n==0) return 0; //或者if(n==l)retun a[0]*a[0];
else return a[n—l]*a[n—l]+f(a,n— 1);
}
14,依照下面类中Sum函数组员的原型和注释写出它的类外定义。
class AA{
int*a;
int n;
int MS;
public:
void InitAA(int aa[],int nn, int ms){
if(nn>ms){cout<< "Error! "<<endl;exit(l);}
MS=ms;
n=nn;
a=new int[MS];
for(int i=0;i<n i++)a[i]=aa[i];
}
int Sum(); //求出并返回数组a中前n个元素之和
};
int AA::Sum()
{
int s=0;
for(int i=1;i<n; i++) s+=a[i];
return s;
}
15.依照下面函数原型编写一个函数,求出并返回由字符指针a所指向的字符串中包括的字符’a’和'A'的总个数。•
int void fun(char* a);
int fun(char * a)
{
int i=0;
while( *a){
if( *a==’a’||*a==’A’) i++;
a++;
}
return i;
}
16.依照下面类中拷贝结构函数的原型写出它的类外定义。
class Array{
int *a; //指向动态分派的整型数组空间
int n; //数组长度
public:
Array(int aa[],int nn){ //结构函数
n=nn;
a=new int[n];
£or(int i=0; i<n;i++)a[i]=aa[i];
}
Array(Array& bb); //拷贝结构函数
Array& Give(Array&. cc); //实现cc賦值给*this 的功效并返回*this
int Lenth(){return n;} //返回数组长度
};
Array::Array (Array& bb){
n=bb. n;
a=new int[n];
for(int i=0;i<n;i++)a[i]=bb. a[i];
}
17.编写一个函数,分别求出由指针a所指向的字符串中包括的每种十进制数字出现的次数,把统计成果保存在数组b的对应元素中,该函数的原型如下。
void fun(char *a,int b[]);
void fun(char *a,int b[])
{
int i;
for(i=0;i<10;i++) b[i]=0;
while( *a) {
int j=*a—'0';
if(j>=0&& j<=9) b[j]++;
a++;
}
}
18.依照下面类中CotnpareBig函数组员的原型和注释写出它的类外定义。
class AA {
int * a;
int n;
int MS;
public:
void InitAACint aa[],int nn,int ms){
if(nn>ms){cout<<"Error! "<<endl;exit(l);}
MS=ms;
N=nn;
a=new int[MS];
for(int i=0; i<n; i++) a[i]=aa[i];
}
int CompareBig(AA& b);//比较* this与b的大小,从前向后按两数组
//中的对应元素比较,若* this中元素值大则返固1,若b中
//元素值大则返回一 1,若相等则继续比较下一个元素,直到
//一个数组中无元素比较,此时若二者的n值相同则返回0,
//否则若*this中的n值大则返回1.若b中的n值大则返回-1.
};
int AA::CompareBig(AA& b)
{
int k;
if(n>b. n)k=b, n; else k=n;
for(int i=0; i<k; i++)
if(a[i]>b.a[i]) return 1;
else if(a[i]<b. a[i])return —1 ;
if(k==n &&k==b. n) return 0;
else if(k<n)return 1;
else return — 1;
}
19.已知6≤a≤30,15≤b≤36,编写出一个主函数,求满足不定方程2a+5b=126的所有整数组解。如(13,20)就是一个整数组解,并以所给的样式输出每个解。
#include<iostream. h>
void main()
{
int a,b;
for(a=6;a< —30;a++)
for(b=15;b<=36;b++)
if(2*a+5*b==126)
cout<<'(‘<<a<<’,’<<b<<’)’<<emll;
}
20.依照下面类中Search函数组员的原型和注释写出它的类外定义。
class AA{
int *a;
int n;
int MS;
public:
void InitAA(int aa[],int nn, int ms){
if(nn>ms){cout<<”Error!”<<endl; exit(l);}
MS=ms;
n= nn;
a=new int[MS];
for(int i=0;i<n;i++)a[i]=aa[i];
}
int Search(int x) ; //从数组a的前n个元素中次序查找值为x的元素,
//若查找成功则返回元素的下标,否则返回-1。
};
int AA: :Search(int x)
{
int i;
for(i=0;i<n;i++)
if(a[i]==x) return i;
return — 1;
}
二、1.依照下面函数原型编写一个函数,求出井返回由字符指针a所指向的字符串中包括的所有英文字母的总数。
int CT(char * a) ;
编程:int CT(char*a) {
int c=0
while( *a) {
if( (*a> = 'a' &.&.*a< ='z') ‖(*a > = ' A ' &. &.*a > = ' Z ' ) ) c++;
a++;
}
return c;
}
2. 依照下面类中Reverse1 函数组员的原型和注释写出它的类外定义。
class AA {
tnt * a;
tnt n;
public:
void InitAA(int aa[ ], int nn) {
n=nn; a=new int[n];
for(int i=0; i<n; i++) a[i]=aa[i];
}
AA *Reverse1( ) ; //通过动态存储分派得到一个AA 类对象并由x 所指向,
//并动态分派x ->a [ x-> n] 数组空间,要求x - > n的值等于t hi s - > n
//的值,x - > a [ x一> n ]中每个元素的值是按照t h i s一> a [ n ] 中数组元素的
//相反次序排列得到的, 要求该函数返回x 的值。
}
编程:AA *AA: : Reverse1( )
{
AA *x=new AA;
x一>n=n;
x一>a=new int[x一>n] ;
for(int i=0; i<n; i++)
x一>a[n-1-i]=a[i] ;
return x;
}
三、1.编写一段Java程序代码,用一个对话在分开的两行中显示两条消息:“I Can Design”和“And I Can Program”。
import javax.swing.*;
public class Test {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"I Can Design\nAnd I Can Program");
}
}
2.编写一个Java程序,对于给定的年份,回答“Leap Year”(闰年)或者“Not a Leap Year”(平年)。假如一个年份能被4整除,不过不能被100整除,它是闰年;假如一个年份能被100整除,也能被400整除,它也是闰年。需要定义名为LeapYear的服务提供类
public class Test{
public static void main(String[] args){
LeapYear ly=new LeapYear();
System.out.println(puteLeapYear(1998));
System.out.println(puteLeapYear(1900));
System.out.println(puteLeapYear());
}
}
class LeapYear{
public boolean computeLeapYear(int year){
if (year % 4 == 0 && year % 100 != 0 ) return true;
if (year % 100 == 0 && year % 400 == 0 ) return true;
return false;
}
}
3.编写一个do-while循环以计算正整数中前30个奇数的累加和。
public class Test{
public static void main(String[] args){
int sum=0,i=0;
do{
sum=(i*2 + 1);
i++;
}while(i<=30);
System.out.println(sum);
}
}
4.编写能够依照用户年龄和身高给出推荐的体重的的Java程序,利用下面的公式计算出推荐的体重:
recommendedWeight = (height – 100 + age/10) *0.9
需要定义名为Height(身高)的服务提供类,它应当会有能够依照身高得到推荐提供的措施。
public class Test{
public static void main(String[] args){
Weight w1 = new Weight();
System.out.println( w1.getRecommendedWeight(30,170));
}
}
class Weight{
public double getRecommendedWeight(int age,int height){
return (height - 100 + age/10) *0.9;
}
}
5.请按照如下要求写出完整的程序代码(要求能上机编译运行):
1)创建一个抽象类AAbstractBase,该类最少包括一个抽象措施;
2)创建一个类TestClass,该类继承AAbstractBase,并包括两个结构器措施;
public class Test{
public static void main(String[] args){
TestClass t1,t2;
t1=new TestClass();
t1.testFun();
t2=new TestClass(10);
t2.testFun();
}
}
abstract class AAbstractBase{
abstract void testFun();
}
class TestClass extends AAbstractBase{
int i;
TestClass(){
this(0);
}
TestClass(int i){
this.i=i;
}
void testFun(){
System.out.println(i);
}
6.定义一个Vehicle类,类中包括一个Person类型的数据组员owner、一个取得owner值的访问措施和一个设置owner值的访问措施。定义VehicleManage个类,该类包括主措施,并在主措施中创建Vehicle类的对象,并调用其设置owner和获取owner的措施。
public class VehicleManage{
public static void main(String[] args){
Vehicle v1=new Vehicle();
Person p1,p2;
p1=new Person();
v1.setOwner(p1);
p2=v1.getOwner();
}
}
class Vehicle{
Person owner;
public void setOwner(Person p1){
owner=p1;
}
public Person getOwner(){
return owner;
}
}
class Person{
String ownerName;
}
7.编写一个字符界面的Java Application 程序,接收用户输入的10个整数,并输出这10个整数的最大值和最小值。
import java.io.*;
public class maxandmin
{
public static void main(String args[])
{
int max=0, min=0, value=0;
for (int i=1; i<=10; i++)
{
try{
System.out.println("输入第" + i + "个整数:");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
value = Integer.parseInt(s);
if(i==1)
{
max=min=value;
}
else
{
max = value>max ? value : max;
min = value<min ? value : min;
}
}
catch(NumberFormatException enf)
{
System.out.println("整数格式输入错误,请重新输入。\n");
i--;
}
catch(IOException ioe)
{
System.out.println("一般输入输犯错误,程序终止。");
System.exit(0);
}
}// end of for
System.out.println("最大数为:" + max);
System.out.println("最小数为:" + min);
}// end of method
}// end of class
四、依照下面类中拷贝结构函数的原型写出它的类外定义。
class Array {
int *a; //指向动态分派的整型数组空间
int n; //统计数组长度
public:
Array(int aa[], int nn); //结构函数,利用aa数组长度nn初始化n, //利用aa数组初始化a所指向的数组空间
Array(Array& aa); //拷贝结构函数
};
Array::Array(Array& aa) {
n=aa.n;
a=new int[n];
for(int i=0; i<n; i++) a[i]=aa.a[i];
}
展开阅读全文