首页 > 教育培训 > C程序设计的答案
2022
09-16

C程序设计的答案

 低学历升中专学历、低学历升大专学历、大专升本科学历
加微信【18957602815】咨询叶老师
已阅读:
 

考前练兵-试题详解

· 编程题(5)

1)

有一维数组float a[10],其中存放10个学生成绩,写一个函数,求出平均分。

 

正确答案:

float avg(float a[10])
{
int i;
float sum=0.0;
for(i=0;i<10;i++)
 sum+=a[i];
return sum/10;
}

2)

编写程序,对三个整数x,y,z进行排序,按从小到大的顺序进行输出。

 

正确答案:

main()
  { int x,y,z,temp;
 scanf("%d%d%d",&x,&y,&z);
 if (x>y) {temp=x;x=y;y=temp;}
 if (x>z) {temp=x;x=z;z=temp;}
 if (y>z) {temp=y;y=z;z=temp;}
 printf("%d,%d,%d\n",x,y,z);
  }

3)

编写一个函数prime(n),判断一个整数n是不是素数。在主函数中输入一个整数,输出是否是素数的信息。

 

正确答案:

#include <stdio.h>
#include<math.h>
int prime(int n)
{
int i,k;
k=sqrt(n);
for(i=2;i<=k;i++)
 if (n%i==0) break;
if(i>k) return 1;
else return 0;
}
main()
{int a;
scanf("%d",&a);
if (prime(a)) printf(" %d is a prime number!\n",a);
else printf(" %d is not a prime number!\n",a);
}

4)

求数列的1/1+1/3+1/5+…… 前20项的累加和

 

正确答案:

main()
{int i; float sum=0;
for(i=1;i<=20;i+=2)
   sum=sum+1.0/i;
printf("sum=%f\n",sum);
}

5)

编写程序打印下面的图形。利用scanf()函数由用户输入星号的行数。
*
**
***
****
*****

 

正确答案:

main()
{int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
 printf("*");
printf("\n");
}
}

· 1

5条/共1页

考前练兵-试题详解

· 应用题(6)

· 案例分析题(6)

· 简答题(5)

1)

请在横线处填上适当的字句,以使程序完整。
#include <iostream.h>
#include ″math.h″
class Point
{
private:
double X,Y;
①____ ______Line;
public:
Point(double x=0, double y=0)
{ X=x; Y=y; }
Point(Point &p)
{ X=p.X; Y=p.Y; }
};
class Line
{
private:
Point p1,p2;
public:
Line(Point &xp1, Point &xp2): ②___ _______{}
double GetLength();
};
double Line::GetLength()
{
double dx=p2.X-p1.X;
double dy=p2.Y-p1.Y;
return sqrt(dx*dx + dy*dy);
}
void main()
{
Point p1,p2(3,4);
Line L1(p1,p2);
cout<<L1.GetLength()<<endl;
}

 

 

正确答案:

(1) friend class
(2) p1(xp1),p2(xp2)

2)

请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5。
#include<iostream.h>
class Integer
{
int x;
public:
Integer(int a=0){x=a;}
void display( ){cout<<x<<endl;}
 ;
};
Integer Max(Integer a,Integer b)
{
if(② )
return a;
return b;
}
void main( )
{
Integer a(3),b(5),c;
c=Max(a,b);
c.display( );
}

 

正确答案:

(1) friend Integer Max(Integer a,Integer b);
(2) a.x>b.x

3)

设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求两个三角形对象的面积之和。

 

正确答案:

参考程序:
#include<iostream.h>
#include<math.h>
class Triangle
{
int x,y,z;
double area;
public:
Triangle(int i,int j,int k)
{
double s;
x=i;y=j;z=k;
s=(x+y+z)/2.0;
area=sqrt(s*(s-x)*(s-y)*(s-z));
}
void disparea()
{ cout<<"Area="<<area<<endl; }
friend double operator+(Triangle t1,Triangle t2)
{ return t1.area+t2.area; }
};
void main()
{
Triangle t1(3,4,5),t2(4,5,6);
double s;
cout<<"t1:"; t1.disparea();
cout<<"t2:"; t2.disparea();
s=t1+t2;
cout<<"总面积="<<s<<endl;
}

4)

下面程序中A是抽象类,为使其输出是:
This is class B printing.
This is class C printing.
请在横线处填写适当内容,以使程序完整。
#include <iostream.h>
class A{
public:
①____ ____;
};
class B: public A{
public:
void printMe() {cout <<"This is class B printing. "<<endl;}
};
class C: public B {
void printMe() {cout <<"This is class C printing. "<<endl;}
};
void print (②__ ______)
{
a.printMe();
}
void main ()
{
B b;
C c;
print (b); print (c);
}

 

正确答案:

(1)virtual void printMe()=0
(2)A& a

5)

设计一个复数类Complex,包含实部real和虚部image两个私有数据成员,另有一个重载运算符“+”(用成员函数实现),以实现求两个复数对象之和,和一个重载运算符“<<”,以实现输出复数类的对象。在主程序中用实例进行测试。

 

正确答案:

参考程序:
       #include<iostream.h>
       #include <math.h>
       class Complex
       {
       int real,image;
       public:
       Complex(){};
       Complex(int i,int j=0 ) { real=i; image=j;}
       friend ostream& operator<<(ostream& os,Complex c)
       { cout<<c.real<<(c.image>0?'+':'-')<<abs(c.image)<<'i'<<endl;
         return os; }
       Complex operator+(Complex c){  
           return Complex(real+c.real,image+c.image);}
       };
       void main()
       {
        Complex c1(1,2),c2(3,-4),c3;
        c3=c1+c2;               
        cout<<c3;
        }

6)

编写一个对具有n 个元素的数组x[]求最大值的程序,要求将求最大值的函数设计成函数模板。

 

正确答案:

参考程序:
#include<iostream.h>
template <class T>
T max(T x[],int n)
{
int i;
T maxv=x[0];
for(i=1;i<n;i++)
if(maxv<x[i])
maxv=x[i];
return maxv;
}
void main()
{
int a[]={4,5,2,8,9,3};
double b[]={3.5,6.7,2,5.2,9.2};
cout<<"a数组最大值:"<<max(a,6)<<endl;
cout<<"b数组最大值:"<<max(b,5)<<endl;
}

· 1

6条/共1页考前练兵-试题详解

· 应用题(6)

· 案例分析题(6)

· 简答题(5)

1)

指出下面程序中的1处错误,并说明原因。
#include<iostream.h>
class Point
{
int X,Y;
public:
Point( ){X=0;Y=0;}
Point(int x=0,int y=0){X=x;Y=y;}
void display( ){cout<<X<<","<<Y<<endl;}
};
void main()
{
Point p;
p.display();
}
:

 

正确答案:

错误位置:Point p;
错误原因:当生成无参对象时,缺省参数的构造函数和默认参数的构造函数会产生混淆。

2)

指出下列程序中的1处错误,并说明为什么。
#include<iostream.h>
#include<stdlib.h>
class CTest{
public:
const int y2;
CTest(int i1, int i2,int i3):y1(i1),y2(i2)
{ x=i3; }
int show() const{cout<<"y1="<<y1<<"\ny2="<<y2<<"\nx="<<x<<endl;}
//…
private:
int x;
const int y1;
};
void main()
{
CTest c(1,2,3);
c.show();
c.y2 = -2;
c.show();
}
:

 

正确答案:

错误位置:c.y2=-2;
错误原因:y2是常数据成员,而常数据成员的值是不能被改变的。

3)

指出下列程序中的1处错误,并说明为什么。
#include<iostream.h>
class Student{
char name[10];
int age;
float aver;
void printStu();
};
void main()
{
Student p1,p2,p3;
p1.age =30;
//…
}
:

 

正确答案:

错误位置:p1.age =30;
错误原因:类的对象不能访问类的私有数据成员

4)

指出下列程序中的1处错误,并说明为什么。
#include <iostream.h>
class shape {
public:
int area () {return 0;}
};
class rectangle: public shape {
public:
int a, b;
void setLength (int x, int y) {a=x; b=y;}
int area () {return a*b; }
};
void main () {
rectangle r;
r.setLength (3,5);
shape* s=&r;
cout << r.area () <<endl;
cout << s.area () <<endl;
}
:

 

正确答案:

错误位置:cout << s.area () <<endl;
错误原因:s是指向对象的指针,而通过指针访问类成员时要使用成员访问运算符->

5)

写出下面程序的输出结果。
#include <iostream.h>
class A
{
private:
static int n;
int X;
public:
A(int x=0) { X=x; n++; }
~A() { n-- ; }
static int GetNum(){ return n; }
void print();
};
void A::print() { cout <<"n=" << n << ", X=" << X<< endl; }
int A::n = 0;
void main()
{
A *p=new A(12);
p->print();
A a(34);
a.print();
delete p;
cout <<"n=" << A::GetNum() << endl;
}
:

 

正确答案:

n=1, X=12
n=2, X=34
n=1
20.

6)

写出下面程序的运行结果。
#include<iostream.h>
class A
{
public:
int n;
};
class B:virtual public A{};
class C:virtual public A{};
class D:public B,public C
{
int getn(){return B::n;}
};
void main()
{
D d;
d.B::n=10;
d.C::n=20;
cout<<d.B::n<<","<<d.C::n<<endl;
}
:

 

正确答案:

20

· 1

6条/共1页考前练兵-试题详解

· 应用题(6)

· 案例分析题(6)

· 简答题(5)

1)

什么是函数重载和运算符重载?为什么要使用重载?

 

正确答案:

解答要点:
(1) 函数重载是指一个标识符可同时用于为多个函数命名;
(2) 运算符重载是指一个运算符可同时用于多种运算。也就是说,相同名字的函数或运算符在不同的场合可以表现出不同的行为。
(3) 使用重载的目的是为了更好地表达行为共享,可以使程序员在只知道操作的一般含义而不知道操作的具体细节的情况下能正确地对某个对象使用一个操作。另外,使用重载的直接益处是减少了程序员记忆操作名字的负担

2)

拷贝构造函数在哪几种情况下被调用?

 

正确答案:

解答要点:
(1) 用一个对象初始化另一个对象时;
(2) 当用对象作为函数参数传递时;
(3) 当程序中需要创建临时对象时(如函数返回对象时)。

3)

什么是类?什么是对象?对象与类的关系是什么?

 

正确答案:

解答要点:
(1) 类是一组具有共同的属性特征和行为特征的对象的抽象;
(2) 对象就是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组行为构成。
(3) 类和对象之间的关系是抽象和具体的关系,类是对多个对象进行抽象的结果,对象是类的具体实现。

4)

什么是多态性?请举例说明。

 

正确答案:

解答要点:
多态性是面向对象程序的重要特征,它是指不同的对象收到相同的消息时产生不同的行为方式。例如我们同样双击windows系统桌面上的图标时,有的是打开媒体播放器,有的是打开D盘,而有的是关机。

5)

什么是面向对象程序设计?

 

正确答案:

解答要点:
面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是:程序=对象+消息。面向对象程序设计具有封装性、继承性和多态性。

· 1

5条/共1页

 

 

 

 

 



 


免责声明:
    如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!

    本站文章版权归原作者所有,内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。本站拥有对此声明的最终解释权。

武汉理工大学继续教育学院(台州、椒江、路桥、温岭、玉环、天台、仙居、临海、黄岩)
大学直属函授站
专科/本科学历
教学点电话:0576-88195005
咨询老师:叶老师进修
作者:中专,大专,本科学历提升18957602815微信
中专,大专,本科学历提升18957602815微信
台州育华学校大学直属函授站!

本文》有 0 条评论

留下一个回复