您的位置:首页 > 其它

将撞错进行到底

2013-03-22 10:55 295 查看
/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称:score.cpp
* 作    者:张浩
* 完成日期:2013年3月22日
* 版本号: v1.0
* 输入描述: 撞错
* 问题描述:发现问题调试
* 输出:  写下改错的方法
*/
#include <iostream>
using namespace std;
class Student
{
public:
void set_data(int n,char *p, char s);
void display();
private:
int num;
int name[20];
char sex;
};
void Student::set_data(int n,char *p, char s)
{
num=n;
strcpy(name,p);
sex=s;
}
void Student::display()
{
cout<<"num: "<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex: "<<sex<<endl;
}
int main()
{
Student stu1;
stu1.set_data(1,"he",'f');
stu1.sex="m";
stu1.display();
return 0;
}

以上程序出现了三个错误:

1、error C2664: 'strcpy' : cannot convert parameter 1 from 'int [20]' to 'char *' strcpy不能把char型复制到int型 。

所以应将私有成员中的 int name[20]改成:char name[20]就可以了。。。。。

2、error C2248: 'sex' : cannot access private member declared in class 'Student' 不能调用 定义的Student类中的私有成员'sex'

改错方法是将char sex 定义为共有成员即可。。。。

3、error C2440: '=' : cannot convert from 'char [2]' to 'char' 不能将字符串赋给数组

这样的错误只需将 stu1.sex="m";中的双引号改为单引号即可。。。。

改错后的程序为:

#include <iostream>
using namespace std;
class Student
{
public:
void set_data(int n,char *p, char s);
void display();
char sex;
private:
int num;
char name[20];
};
void Student::set_data(int n,char *p, char s)
{
num=n;
strcpy(name,p);
sex=s;
}
void Student::display()
{
cout<<"num: "<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex: "<<sex<<endl;
}
int main()
{
Student stu1;
stu1.set_data(1,"he",'f');
stu1.sex='m';
stu1.display();
return 0;
}

运行结果:



心得体会:这样做不仅可以提高我的编程能力,还可以提高我的英语,一举两得,好!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: