cpp期中考的一道编程题,看一眼觉得很简单但最后没通过测试用例的一题,现在重写了一遍。
题目:
设计一个汽车类,并实现它的基本功能
要求如下:
1.成员变量:车门,车灯,速度(类型以及变量名均自拟)。.
2.成员函数~ :打开车门
其中打开车门、关闭车门、打开车灯、关闭车灯四个函数,用于改变对象内部对应的成员变量的值。加速,减速两个函数,每次调用就将内部的速度变量分别对应增加10或者减少10。车门,车灯两个函数的初始状态都为OFF,速度的初始值为0。.
根据输入的命令(命令由1-6表示,分别对应调用打开车门、关闭车门、打开车灯、关闭车灯、加速、减速函数)输出汽车的最终状态,
若输入命令135则输出状态如下:
车门ON
车灯ON
速度10
因为只给了这一个测试用例就想简单了,以为测试输入值只会为两个状态选其一,而不会反复选择,于是用了自认为最快速的方法:在函数内写输出语句,然后在主函数里通过if来调用语句,并且更抽象的是我把测试用例输入的值定义为整型,然后判断语句用的是if(a/10==1||a%10==1||1/10%10==1)......./*就是默认只会输入3位数。。*/结果测试用例最后不仅反复调用了显然也是大于3位数的,于是造成用例不通过。。。太脑残了没想通这点,然后还有别的问题就是中间修改的时候想在主函数里再创建变量赋值,忘了我成员变量权限写的是private。。结果根本调用不过来。。。乱七八糟的我也不清楚我当时在想啥了....明明都可以写成public的
最后没写完考试就结束了,真的菜得我想哭。。。回到宿舍就大写特写。。附上写后的代码
#include <iostream>
#include <string>
using namespace std;
class Car{
private:
string door;
string light;
int speed;
public:
Car(){
door="OFF";
light="OFF";
speed=0;
}
void openDoor(){
door="ON";
}
void closeDoor(){
door="OFF";
}
void openLight(){
light="ON";
}
void closeLight(){
light="OFF";
}
int upSpeed(){
speed=speed+10;
}
int downSpeed(){
speed=speed-10;
}
void printDoor(){
cout<<"车门 "<<door<<endl;
}
void printLight(){
cout<<"车灯 "<<light<<endl;
}
void printSpeed(){
cout<<"车速 "<<speed<<endl;
}
};
int main(){
int speed;
string a;
Car c;
cin>>a;
int n =a.size();
for(int i=0;i<n;i++){
if(a[i]=='1'){
c.openDoor();
}
if(a[i]=='2'){
c.closeDoor();
}
if(a[i]=='3'){
c.openLight();
}
if(a[i]=='4'){
c.closeLight();
}
if(a[i]=='5'){
c.upSpeed();
}
if(a[i]=='6'){
c.downSpeed();
}
}
c.printDoor();
c.printLight();
c.printSpeed();
}
还是倔强的把成员变量写成了private,想着之前老师说成员变量要private嘛。。
修改的内容:加了输出函数,在主函数的循环外再调用输出函数,就只会显示最终状态了。。。
少女啊
道阻且长。。
加油吧