2sd[理学]信息实践题汇总
实验三 C++程序
基础
1:编写以下程序,观察编译结果和运行结果。请解释运行的结果。
float fn1(float r) {
int temp = r*r*3.14f ;
return temp ;
}
float& fn2(float r) {
int temp = r*r*3.14f ;
return temp ;
}
void main() {
float a = fn1(5.0f) ;
float& b = fn1(5.0f) ;//error
float c = fn2(5.0f) ;
float& d = fn2(5.0f) ;
cout<
int& level( int *grade,int size,int &tA,int &tB) { int i,sum;
for(i=0,sum=0;i=80) return tA; else return tB;
}
void main()
{ int a[][4]={{60,80,90,75},{75,85,65,77},{80,88,90,98},
{89,100,78,81},{62,68,69,75},{86,85,77,91}};
int i,A=0,B=0;
for(i=0;i
void main()
{
int a[10]={76,83,54,62,40,75,90,93,77,85};
int b[5]={ 60,70,80,90,101};
int c[5]={0};
for(int i=0;i<10;i++)
{
int j=0;
while(a[i]>=b[j])j++;
c[j]++;
}
for(i=0;i<5;i++)cout<格式输出日期, 还提供把天加一的成员函数nextdate( ),要求能测试出如下的结果:
a. 能够进入下一个月。
b. 能够进入下一个年。
c. 能显示日期。
代码:
//Date.h
#ifndef Date_h
#define Date_h
class Date{
public:
Date (int _month =1,int _day=1,int _year=0);
Date (Date& a );
void displayDate();
void nextday();
void nextmonth();
void nextyear();
Date judgeyear(Date);
void setDate(int _month=1,int _day=1,int _year=0);
private:
int judge(int _month,int _day);
void setmonth(int _month);
void setday(int _day);
void setyear(int _year);
int getmonth();
int getday();
int getyear();
int month;
int day;
int year;
};
#endif
//Date.cpp
#include
#include"Date.h"
using namespace std;
Date::Date(int _month,int _day,int _year){
setmonth(_month);
setday(_day);
setyear(_year);} Date::Date(Date& a){
cout<<"拷贝构造函数被调用"<0)?_month:1;} void Date::setday(int _day){
day=(judge(month,_day))?_day:1;} void Date::setyear(int _year){
year=(_year>=0)?_year:1970;}
int Date::getmonth(){return month;} int Date::getday(){return day;}
int Date::getyear(){return year;}
void Date::displayDate(){
cout<0)return 1;
else return 0;}
else if((!(year%4)&&(year%100))||!(year%400)){
if(_day<(a[_month]+2)&&_day>0)return 1;
else return 0;}
else if(_day<(a[_month]+1)&&_day>0)return 1;
else return 0;}
//mian.cpp
#include
#include "Date.h"
using namespace std;
int main()
{
Date a(2,28,1992);
Date b(a);
b.judgeyear(a);
a.displayDate();
a.nextday();
a.displayDate();
a.nextday();
a.displayDate();
a.setDate(12,31,1992);
a.displayDate();
a.nextday();
a.displayDate();
b.displayDate();
system("PAUSE");
return 0;
}
2.计算两点之间的距离。定义点类point,再定义一个类Line类,该类有一方法返回两点之间的距离,其数据成员为两个点类对象。注意有组合的情况下如何使用构造函数。
#include
#include
using namespace std;
class point{
private:
double x;
double y;
public:
double getxvalue(){return x;}
double getyvalue(){return y;}
point(double _x=0,double _y=0){x=_x;y=_y;}
void showvalue(){cout<<'('<>a[0]>>a[1]>>a[2]>>a[3]){b.setvalue(a[0],a[1],a[2],a[3]);b.s();}
return 0;}
3:拷贝构造函数在哪些情况下会被自动调用,请编写程序举例说明。 (至少要
说明三种情况)
实验五 类和对象2
1. 编写一个Student类,其中有id和name属性。现有要求能随时显示系统运行期间有多少个该类的对象。(提示:使用静态变量)
//Student.h
#ifndef Student_H
#define Student_H
class Student{
public:
Student(char* ID="",char* NAME="");
~Student();
void show();
void setStudent(char* ID,char* NAME);
static void shownum();
private:
char* id;
char* name;
static int num;}; #endif
//Student.cpp
#include
#include"Student.h"
using namespace std;
#include
int Student::num=0;
Student::Student(char* ID,char* NAME){
id=new char[strlen(ID)+1];
if(id)strcpy(id,ID);
name=new char[strlen(NAME)+1];
if(name)strcpy(name,NAME);
num++;
cout<<"ID: "<
#include"Student.h"
using namespace std;
int main()
{
Student::shownum();
Student a;
Student::shownum();
Student b;
Student::shownum();
a.~Student();
Student::shownum();
b.~Student();
Student::shownum();
system("PAUSE");
return 0;
}
2.编写一个类,用户使用这个类的时候只能用这个类得到一个相同的实例。(即:单例模式)
#include
using namespace std;
class onlyou{
private:
onlyou(int n){var=n;}
int var;
public:
static onlyou* onlyou::Getobject(int n){
static onlyou theone(n);
return &theone;}
int getval(){return var;}
void setval(int n){var=n;}
void showval(){cout<>n;
onlyou *theone=onlyou::Getobject(n);
cin>>n;
onlyou *thesame=onlyou::Getobject(n);
if(thesame==theone)cout<<"the same.\n";
theone->showval();
cin>>n;
theone->setval(n);
theone->showval();
cin>>n;
thesame->setval(n);
theone->showval();
system("pause");
return 0;
}
3:编写一个,,,类,包含名字,体重,价格等信息,并且有一个成员函数用于打印这些信息,然后编写一个含有,只,,,的对象数组,遍历该数组,打印出每只,,,的信息。
#include
#include
using namespace std;
class Dog{
public:
Dog(/*har* _name="Amy",*/int _weight=60,int _price=100){
/*name=new char[strlen(_name)+1];
strcpy(name,_name);*/
weight=_weight;
price=_price;}
void show(){cout<*"name:"<表