本人是一个学习C++不久的小菜鸟,这些题目都是自己打出来(有些不会的去网上查出来的),如果有哪里写的不对的地方,欢迎各位指正。
第二章课后习题
P-66
第一题
改之前的代码
#include<iostream>
using namespace std;
class Time
{
void set_time(void);
void show_time(void);
int hour;
int minute;
int sec;
};
Time t;
int main() {
set_time();
show_time();
system("pause");
return 0;
}
int set_time(void) {
cin >> t.hour;
cin >> t.minute;
cin >> t.sec;
}
int show_time(void) {
cout << t.hour << ":" << t.minute << ":" << t.sec << endl;
}
可以看到程序中有一堆错误
改之后的代码
#include<iostream>
using namespace std;
class Time
{
public: //添加了访问说明符(相关知识在C++primer第五版P-240页有),类型为公有
//使函数在主函数里可以使用
void set_time(void);
void show_time(void);
private: //这个也是访问说明符,类型为私有
int hour;
int minute;
int sec;
};
Time t;
int main() {
t.set_time(); //调用的方式不对 一个是对象名.函数名;
t.show_time();
system("pause");
return 0;
}
void Time:: set_time(void) { //改变了函数类型,因为在定义的时候函数的类型的私有的
//剩下的就是格式错了 ,在类外定义的正确格式为 函数类型名 类名::函数名(形参)
//其中::是作用域运算符
cin >> t.hour;
cin >> t.minute;
cin >> t.sec;
}
void Time:: show_time(void) {
cout << t.hour << ":" << t.minute << ":" << t.sec << endl;
}
第二题
例 2.1原题如下
#include<iostream>
using namespace std;
class Time {
public:
int hour;
int minute;
int sec;
};
int main() {
Time t1;
cin >> t1.hour;
cin >> t1.minute;
cin >> t1.sec;
cout << t1.hour << ":" << t1.minute << ":" << t1.sec << endl;
system("pause");
return 0;
}
改后的代码
#include<iostream>
using namespace std;
class Time {
public:
void set_time(){ //定义成员函数
cin >> hour;
cin >> minute;
cin >> sec;
}
void show_time(){ //定义成员函数
cout << hour << ":" << minute << ":" << sec << endl;
}
private: //改为私有
int hour;
int minute;
int sec;
};
int main() {
Time t1;
t1.set_time();
t1.show_time();
system("pause");
return 0;
}
3
代码如下
#include<iostream>
using namespace std;
class Time {
public:
void set_time(); //声明一下
void show_time(); //声明一下
private: //改为私有
int hour;
int minute;
int sec;
};
void Time :: set_time(){ //函数体外定义
cin >> hour;
cin >> minute;
cin >> sec;
}
void Time::show_time() { //函数体外定义
cout << hour << ":" << minute << ":" << sec << endl;
}
int main() {
Time t1;
t1.set_time();
t1.show_time();
system("pause");
return 0;
}
4
这题也不难,(我一开始的时候还不会做,羞愧)
就是文件位置,文件位置改一下就ok了。
5
这题就不截图了,贴下代码吧(位置和上图一样)
//arraymax.h
using namespace std;
class Array_max {
public:
void set_value();
void max_value();
void show_value();
private:
int array[10];
int max;
};
//arraymax.cpp
#include<iostream>
#include"arraymax.h"
void Array_max::set_value() {
int i;
for (i = 0; i < 10; i++)
cin >> array[i];
}
void Array_max::max_value() {
int i;
max = array[0];
for (i = 1; i < 10; i++)
if (array[i] > max)max = array[i];
}
void Array_max::show_value() {
cout << "max=" << max;
}
//filel.cpp
#include<iostream>
#include"arraymax.h"
using namespace std;
int main() {
Array_max arrmax;
arrmax.set_value();
arrmax.max_value();
arrmax.show_value();
system("pause");
return 0;
}
第6题
这题比较简单,就只贴下代码
#include<iostream>
#include<string>
using namespace std;
class Volume {
public:
void set_volume();
void show_volume();
private:
float length;
float width;
float height;
float volume;
};
void Volume::set_volume(){
cout << "\nPlease put the length and width and height " << endl;
cin >> length >> width >> height;
volume = length * width*height;
}
void Volume::show_volume() {
cout << volume;
}
int main() {
Volume v1, v2, v3;
v1.set_volume();
v1.show_volume();
v2.set_volume();
v2.show_volume();
v3.set_volume();
v3.show_volume();
system("pause");
return 0;
}