C plus作业

作业答案摆放而已,都不是自己做的。

第一讲 C++概述
作业
习题1:2、5、6
2.什么是程序的可移植性?如何评价程序可移植性的优劣?5.什么是面向对象程序设计方法?面向对象程序设计的要素是什么?
6.C++程序的基本结构是什么?程序中的两种注释形式分别适用于什么场合?

答案
三代。第一代为机器语言,用二进制代码表示机器指令,机器语言程序可直接运行。第二代为汇编语言,用助记符表示一条指令,汇编语言程序必须经过汇编才能执行。第三代为高级语言,用预先规定好的语句编写程序,高级语言程序必须经过编译连接才能执行。
2.答案:所谓移植,是指将在一种计算机系统下编写的程序,经过改动放在另一种计算机系统中运行,要求运行结果一样。改动越少,可移植性越好;改动越多,可移植性越差。3.答案:见1.2节。4.答案:见1.3.1节。5.答案:见1.3.2节。面向对象程序设计的三个主要特性是:封装性、继承性、多态性(又分为静态多态和动态多态)。6.答案:C++程序是由若干函数构成,其中必须有一个主函数。每个函数由函数名和函数体构成。在函数体中有若干语句构成。有两种注释形式,一种是以两个斜杠“//”开头直到该行结束,在 // 和行末之间加注释,此种形式的注释只能在一行中书写;另一种是在“/”和“/”之间加注释,此种形式的注释可以跨多行书写。7.答案:四个步骤。编辑:输入修改源程序。编译:将源程序翻译成目标程序。连接:将目标程序和库程序连接生成可执行代码。运行:执行可执行代码。若后三步出错,可以回退到源代码编辑阶段。

第三讲 函数
作业
8.编写一个程序通过重载求两个数中较小数的函数,分别求两个实数和两个整数中的小数。
9.编写一个内联函数实现求出3个数中的最大数。

答案
第二次作业问题
1.有同学在编写重载函数这个题目时,函数名竟然是不同的!2.有同学在编写内联函数这个题目时,用了先声明、再调用,再定义的模式。但是在声明和定义的首部都有关键字“inline”,这样编写,会有错误提示,需要把声明部分的“inline”去掉。
参考答案
1、
#include
using namespace std;
int min(int x,int y);
double min(double x,double y);
int main()
{
cout<<min(2,3)<<endl;
cout<<min(2.5,1.2)<<endl;
return 0;
}
int min(int x,int y)
{
return (x<y?x:y);
}
double min(double x,double y)
{
return (x<y?x:y);
}

2、
#include
using namespace std;
inline int max(int x,int y,int z)
{
int a=x;
if(y>a)a=y;
if(z>a)a=z;
return a;
}
int main()
{
cout<<max(1,3,2)<<endl;
return 0;
}


#include
using namespace std;
inline int max(int x,int y,int z);
int main()
{
cout<<max(1,3,2)<<endl;
return 0;
}

int max(int x,int y,int z)
{
int a=x;
if(y>a)a=y;
if(z>a)a=z;
return a;
}

第四讲 类与对象
作业
1.定义一个复数类Complex,数据成员包括实部和虚部。成员函数包括①设置实部②设置虚部③取实部值④取虚部值⑤输出复数。在主函数中定义一个复数类对象,然后对全体成员函数进行测试。

4.定义一个日期类Date,数据成员有年(year)、月(month)日(day)。成员函数有:①公有成员函数int isleap( )判断year是否是闰年,若是则返回1,若不是则返回0.②公有成员函数int check()判断日期是否合法,若合法则返回1,若不合法则返回0.③设置年、月值,并检测是否为合法日期。④按yyy/mm/dd格式输出日期,若是闰年,还要输出是否是闰年的信息。在主函数中定义一个日期类对象,任意输入年、月、日值,然后对全体成员函数进行测试。
5.定义一个描述学生的类Student,数据成员包括学号(numJ,姓名(name),性别(sex),家庭住址(faddr),联系电话(tel),email地址(email),以及数学(math),物理(physics),外语(eng),程序设计(prog)四门课的成绩。对于数据成员,要求用字待数组实现学号、姓名、家庭住址、联系电话、email地址,用字待型量实现性别(‘f’ 表示女性’m’ 表示男性)用整型量实现四门课的成绩。成员函数包括①设置学号②设置姓名③设置性别④设置家庭住址⑤设置联系电话⑥设置email地址⑦设置四门课程的成绩,函数原型是void setscore(char tag,int score), 当tag的值分别是’m’、‘p’、‘e’ 和’c’时,分别设置数学、物理、外语、程序设计的成绩。⑧输出一个学生的全部描述性息。在主函数中定义学生类对象,然后对全体成员函数进行测试。
7.为第一题复数类增加构造函数:①无参的构造函数,它是缺省的构造函数②带参数的构造函数,参数为实部和虚部的初值,参数无缺省值。③拷贝构造函数。在主函数中增加测试三个构造函数的语句。
答案
1.
答案:
#include<iostream.h>
class complex
{
double real,image;
public:
void setreal( double r)
{ real=r; }
void setimage(double i)
{ image=i; }
double getreal( )
{ return(real); }
double getimage( )
{ return(image); }
void output()
{
if(image<0)
cout<<real<<image<<‘i’;
else if(image>0)
cout<<real<<’+’<<image<<‘i’;
else
cout<<real;
cout<<’\n’;
}
};
void main()
{
complex c1,c2;

c1.setreal(1); 
c1.setimage(2); 
cout<<"c1="; 
c1.output(); 

c2.setreal(3); 
c2.setimage(4); 
cout<<"c2="; 
c2.output(); 

double a,b; 
a=c2.getreal(); 
b=c2.getimage(); 
cout<<a<<','<<b<<endl; 

}

4.
答案:
#include<iostream.h>
class Date
{
int year, month, day;
public:
void SetDate(int y, int m, int d)
{
year=y; month=m; day=d;
if(!Check())
{
cout<<"Illegal Date! ";
Show( );
}
}
int Leapyear( )
{
return((year%40 && year%100!=0) || year%4000);
}
int Check( )
{
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};

	if(month<1 || month>12 || day<1) 
		return(0);
	if(Leapyear()&&month==2)
		if(day>29) 
			return(0);
		else
			return(1);
	if(day>monthday[month-1])
		return(0);
	return(1);
}
void Show( )
{
	cout<<year<<'/'<<month<<'/'<<day<<endl;
}

};

void main()
{
Date d;

d.SetDate(1900,2,29);
d.Show();
d.SetDate(2005,4,29);
d.Show();
}

5.
答案:
#include <iostream.h>
#include <string.h>

class Student
{
char Num[10];
char Name[10];
char Sex;
char Faddr[40];
char Tel[10];
char Email[20];
int Math, Phisics, Eng, Prog;
public:
void SetNum(char *num)
{
strcpy(Num,num);
}
void SetName(char *name)
{
strcpy(Name,name);
}
void SetSex(char sex)
{
Sex=sex;
}
void SetFaddr(char *faddr)
{
strcpy(Faddr,faddr);
}
void SetTel(char *tel)
{
strcpy(Tel,tel);
}
void SetEmail(char *email)
{
strcpy(Email,email);
}
void SetScore(char tag, int score);
void OutputInfo();
};

void Student::SetScore(char tag, int score)
{
switch(tag)
{
case ‘m’ : Math=score; break;
case ‘p’: Phisics=score; break;
case ‘e’: Eng=score; break;
case ‘c’: Prog=score;
}
}

void Student::OutputInfo()
{
cout<<“Num: “<<Num<<”\n”;
cout<<“Name: “<<Name<<”\n”;
cout<<“Sex: “<<Sex<<”\n”;
cout<<“Faddr: “<<Faddr<<”\n”;
cout<<“Tel: “<<Tel<<”\n”;
cout<<“Email: “<<Email<<”\n”;

cout<<"Math: "<<Math<<"\n";
cout<<"Phisics: "<<Phisics<<"\n";
cout<<"Eng: "<<Eng<<"\n";
cout<<"Prog: "<<Prog<<"\n";

}
void main()
{
Student stud;

stud.SetNum("010510201");
stud.SetName("Li Hong");
stud.SetSex('f');
stud.SetFaddr("Yu Dao Street 29#");
stud.SetTel("84891234");
stud.SetEmail("Lihong@263.net");
stud.SetScore('m',80);
stud.SetScore('p',76);
stud.SetScore('e',99);
stud.SetScore('c',92);
stud.OutputInfo();

}

7.
答案:
#include<iostream.h>
class complex
{
double real,image;
public:
complex( ) //新增的无参构造函数
{ real=0; image=0; }
complex(double rr, double ii) //新增的带参数的构造函数
{ real=rr; image=ii; }
complex(complex &c) //新增的拷贝构造函数
{ real=c.real; image=c.image; }

// 省略部分函数 ……

void output()
{
	if(image<0)
		cout<<real<<image<<'i';
	else if(image>0)
		cout<<real<<'+'<<image<<'i';
	else 
		cout<<real;
	cout<<'\n';
}

};
void main()
{
complex c1,c2(6,3),c3(c2);

c1.output();
c2.output();
c3.output();

}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值