C程序设计的答案
考前练兵-试题详解
· 编程题(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页
台州创新人才战略:本科毕业生获高额补贴,打造青年发展新高地
本硕博可报,安家费可达94万,购房补贴可达250万! 聘用人员除按国家有关规定享受工资、保险等待遇外,符合我校高层次人才标准的,将提供购房补贴、安家费、科研启动费等方面的待遇。具体见下表: 六、相关事项说明 1.应聘人员对招聘公告... 浙江台州应届生人才政策:每月补贴750元/600元/450元,最长领3年!安家... 博士研究生分别在引进后第一年和第三年各给予5万元安家补贴;全日制硕士、全日制本科(技师)、全日制专科毕业生(高级工)一次性分别给予3万元、1万元、0....
一年一度的成考悄然而至!【考前必看】2024年成人高考答题技巧,仅作参考。
全国成人高考是在职人士提升自身学历层次的重要途径,也是我们大家实现梦想获得高学历的另一个捷径,在2024年全国成人高考到来之际,希望各位考生认真阅读以下答题技巧,在考试中技巧与实力相结合,保证自己不缺考、不违规违纪,认真答完试卷,迎来自己梦想的高校录取通知书!得分重点高起点语文是重点报考高起点层次的考生,务必要认真作答语文科目,不能空卷,特别是作文,只要不空卷多少会给予点分数。150分的卷子一般应该会得70--90分之间。专升本政治是重点专升本层次中,政治是得分...
Nero不可以刻录视频文件
一般情况下,Nero是一款功能强大的刻录软件,可以刻录各种类型的数据,包括音频、视频、图像等。因此,Nero理论上可以刻录视频文件。如果您遇到了无法刻录视频文件的问题,可能是因为您的视频文件格式不受支持或者其他设置问题。建议您检查一下视频文件格式和Nero的设置,或者尝试使用其他刻录软件。...
计算机系统将硬盘的数据存储区以( )为单位划分并编号使用。
本回答由www.taizhouxx.cn提供,请认准本站。 扇区(sector)为单位划分并编号使用。...
台州市考游泳救生员证怎么考2022考试时间在哪里报名正规精讲刷题
在对外开放的游泳场所中对游泳者的安全进行有效的观察和防护,并对溺水者进行赴救和在医务人员到来之前进行现场急救的人员。游泳救生员职业资格鉴定考核共设,自高到低依次分别为:初级游泳救生员(五级游泳救生员)、中级游泳救生员(四级游泳救生员)、高级游泳救生员(三级游泳救生员)。江苏南京游泳救生员证在哪里报考培训,取得游泳救生员初等职业教育毕(结)业证书的;取得游泳救生员初级技能培训合格证书的;在游泳救生员职业(工种)岗位工作满个月的。取得游泳救生员中等职业教育毕(结)业证书的;取得初...
发表评论