鱼C论坛

 找回密码
 立即注册
查看: 4530|回复: 12

能编译不能链接啊..球详细解答

[复制链接]
发表于 2013-3-28 16:58:18 | 显示全部楼层 |阅读模式
5鱼币
编写一个程序,已有若干个学生数据,这些数据包括学号,姓名,语文成绩,数学成绩,英语成绩。球各门功课的平均分。

提示:设计一个学生类student 包括no ,name姓名,deg1语文,deg2数学,deg3英语..数据成员和3个静态数据成员sum1累计语文总分,sum2累计数学总分,sum3累计英语总分。另有一个构造函数,3个球平均分的成员函数和一个用于显示成绩的disp()成员函数。。
  1. #include <iostream>
  2. using namespace std;
  3. #include <string>
  4. #define N 3;

  5. class Student
  6. {
  7. private:
  8. int no,deg1,deg2,deg3;
  9. string name;
  10. static int sum1,sum2,sum3;
  11. public:
  12. Student ();

  13. Student(int tno,string tname,int tdeg1,int tdeg2,int tdeg3);
  14. static int get_average1();
  15. static int get_average2();
  16. static int get_average3();
  17. void disp();
  18. };

  19. int Student::sum1=0;
  20. int Student::sum2=0;
  21. int Student::sum3=0;

  22. int Student::get_average1()//语文平均分
  23. {
  24. return sum1/N;
  25. }

  26. int Student::get_average2()//数学平均分
  27. {
  28. return sum2/N;
  29. }



  30. int Student::get_average3()//英语平均分
  31. {
  32. return sum3/N;
  33. }


  34. void Student::disp()
  35. {
  36. cout<<"学号:"<<no<<endl;
  37. cout<<"姓名:"<<name<<endl;
  38. cout<<"语文:"<<deg1<<endl;
  39. cout<<"数学:"<<deg2<<endl;
  40. cout<<"英语:"<<deg3<<endl;
  41. }

  42. Student::Student(int tno,string tname,int tdeg1,int tdeg2,int tdeg3)
  43. {
  44. no=tno;
  45. name=tname;
  46. deg1=deg1;
  47. deg2=deg2;
  48. deg3=deg3;
  49. }
  50. int main()
  51. {
  52. Student a[3];
  53. int no,deg1,deg2,deg3,i,sum1=0,sum2=0,sum3=0;
  54. string name;
  55. for (i=0;i<3;i++)
  56. {
  57. cout<<"学号:";
  58. cin>>no;
  59. cout<<"姓名:";
  60. cin>>name;
  61. cout<<"语文:";
  62. cin>>deg1;
  63. cout<<"数学:";
  64. cin>>deg2;
  65. cout<<"英语:";
  66. cin>>deg3;
  67. sum1=deg1+sum1;
  68. sum2=deg2+sum2;
  69. sum3=sum3+deg3;
  70. a[i]=Student(no,name,deg1,deg2,deg3);
  71. }
  72. for (i=0;i<3;i++)
  73. {
  74. a[i].disp();

  75. }

  76. a[0].get_average1();
  77. a[1].get_average2();
  78. a[2].get_average3();

  79. return 0;
  80. }

复制代码

最佳答案

查看完整内容

这是我在你代码上改的,添加了一个从键盘输入学生信息函数 void setst(int tno,string tname,int tdeg1,int tdeg2,int tdeg3) 学生信息能够从键盘输入,也能输出。至于求平均分自己去想想。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-28 16:58:19 | 显示全部楼层
  1. #include <iostream>

  2. using namespace std;

  3. #include <string>

  4. #define N 3;



  5. class Student

  6. {

  7. private:

  8.         int no,deg1,deg2,deg3;

  9.         string name;

  10.         static int sum1,sum2,sum3;

  11. public:

  12.         Student ();


  13.        
  14.         //Student(int tno,string tname,int tdeg1,int tdeg2,int tdeg3);

  15.         static int get_average1();

  16.         static int get_average2();

  17.         static int get_average3();


  18.         void setst(int tno,string tname,int tdeg1,int tdeg2,int tdeg3);  //自定义输入信息函数

  19.         void disp();

  20. };



  21.         int Student::sum1=0;

  22.         int Student::sum2=0;

  23.         int Student::sum3=0;



  24. int Student::get_average1()//语文平均分

  25. {

  26.         return sum1/N;

  27. }



  28. int Student::get_average2()//数学平均分

  29. {

  30.         return sum2/N;

  31. }







  32. int Student::get_average3()//英语平均分

  33. {

  34.         return sum3/N;

  35. }





  36. void Student::disp()

  37. {

  38.         cout<<"学号:"<<no<<endl;

  39.         cout<<"姓名:"<<name<<endl;

  40.         cout<<"语文:"<<deg1<<endl;

  41.         cout<<"数学:"<<deg2<<endl;

  42.         cout<<"英语:"<<deg3<<endl;

  43. }



  44. //Student::Student(int tno,string tname,int tdeg1,int tdeg2,int tdeg3)
  45. void Student::setst(int tno,string tname,int tdeg1,int tdeg2,int tdeg3)

  46. {

  47.         no=tno;

  48.         name=tname;

  49.         deg1=tdeg1;

  50.         deg2=tdeg2;

  51.         deg3=tdeg3;

  52. }

  53. Student::Student()
  54. {
  55.         no = 0;
  56.         name = " ";
  57.         deg1 = 0;
  58.         deg2 = 0;
  59.         deg3 = 0;
  60. }

  61. int main()

  62. {

  63.         Student a[3];

  64.         int no,deg1,deg2,deg3,i,sum1=0,sum2=0,sum3=0;

  65.         string name;

  66.         for (i=0;i<3;i++)

  67.         {

  68.                 cout<<"学号:";

  69.                 cin>>no;

  70.                 cout<<"姓名:";

  71.                 cin>>name;

  72.                 cout<<"语文:";

  73.                 cin>>deg1;

  74.                 cout<<"数学:";

  75.                 cin>>deg2;

  76.                 cout<<"英语:";

  77.                 cin>>deg3;

  78.                 sum1=deg1+sum1;

  79.                 sum2=deg2+sum2;

  80.                 sum3=sum3+deg3;

  81.                 a[i].setst(no,name,deg1,deg2,deg3);

  82.         }

  83.         for (i=0;i<3;i++)

  84.         {

  85.                 a[i].disp();



  86.         }



  87.         printf("语文平均分:%d\n",a[0].get_average1());

  88.         printf("数学平均分:%d\n",a[1].get_average2());

  89.         printf("英语平均分:%d\n",a[2].get_average3());



  90. return 0;

  91. }
复制代码
这是我在你代码上改的,添加了一个从键盘输入学生信息函数 void setst(int tno,string tname,int tdeg1,int tdeg2,int tdeg3) 学生信息能够从键盘输入,也能输出。至于求平均分自己去想想。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-28 19:48:14 | 显示全部楼层
error LNK2001: unresolved external symbol "public: __thiscall Student::Student(void)"

这个是在说你的Student::Student(void)这个构造函数没有定义

评分

参与人数 1鱼币 +1 收起 理由
.._再_ + 1 谢谢。。就是说要写一下默认构造函数

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-28 21:06:21 | 显示全部楼层
正想楼上所说,你这程序主要出在构造函数,构造函数不需要我们调用,程序在定义类变量时会自动调用构造函数。所以
  1. a[i]=Student(no,name,deg1,deg2,deg3);
复制代码
有问题。其实,你要是像通过键盘给程序赋值,自定义一个赋值函数,不要用构造函数。具体构造函数的用法给你个链接,自己慢慢看去http://blog.163.com/haixing_03031102/blog/static/120105509200972855328532/

评分

参与人数 1鱼币 +1 收起 理由
.._再_ + 1 热爱鱼C^_^说中我的目的了..

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-29 08:57:11 | 显示全部楼层


是啊..但是我不知道我哪里出问题啊..就是不知道才来这里问的啊...不过还是谢谢你
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-29 09:05:41 | 显示全部楼层
小亮1201 发表于 2013-3-28 21:06
正想楼上所说,你这程序主要出在构造函数,构造函数不需要我们调用,程序在定义类变量时会自动调用构造函数 ...

你说对了..我就是想通过键盘给程序赋值,自定义一个函数功能和构造函数的功能一样吗?
我们老师教的程序自己设置一个函数,其功能代码跟构造函数代码内容一样..2者有什么区别吗??
不可以直接省略自己定义的那个函数吗?反正都是一样的啊??这有什么不同的吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-29 09:07:21 | 显示全部楼层
小亮1201 发表于 2013-3-28 21:06
正想楼上所说,你这程序主要出在构造函数,构造函数不需要我们调用,程序在定义类变量时会自动调用构造函数 ...

我还想问一下,能不能通过键盘对一个对象进行赋值啊..能的话要怎么实现
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-29 09:16:20 | 显示全部楼层
仰望天上的光 发表于 2013-3-28 19:48
error LNK2001: unresolved external symbol "public: __thiscall Student::Student(void)"

这个是在说你 ...

为什么我不能实现球平均分的功能啊...哪里出错了。。球指教
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-31 05:14:26 | 显示全部楼层
“仰望天上的光”正是正解!支持~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-31 16:19:00 | 显示全部楼层
楼主的帖子怎我也想知道答案哈哈哈哈哈哈么样?赶紧试试这里的快速回复给楼主点评论吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-31 19:57:27 | 显示全部楼层
小亮1201 发表于 2013-3-28 21:06
正想楼上所说,你这程序主要出在构造函数,构造函数不需要我们调用,程序在定义类变量时会自动调用构造函数 ...

你把代码写成C语言了 -- 不过你也挺认真的。。谢谢了..我自己再想想
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-31 20:02:15 | 显示全部楼层
  1. #include <iostream>

  2. using namespace std;

  3. #include <string>

  4. #define N 3;



  5. class Student

  6. {

  7. private:

  8.         int no,deg1,deg2,deg3;

  9.         string name;

  10.         static int sum1,sum2,sum3;

  11. public:

  12.         Student ();


  13.         
  14.         //Student(int tno,string tname,int tdeg1,int tdeg2,int tdeg3);

  15.         static int get_average1();

  16.         static int get_average2();

  17.         static int get_average3();


  18.         void setst(int tno,string tname,int tdeg1,int tdeg2,int tdeg3);  //自定义输入信息函数

  19.         void disp();

  20. };



  21.         int Student::sum1=0;

  22.         int Student::sum2=0;

  23.         int Student::sum3=0;



  24. int Student::get_average1()//语文平均分

  25. {

  26.         return sum1/N;

  27. }



  28. int Student::get_average2()//数学平均分

  29. {

  30.         return sum2/N;

  31. }







  32. int Student::get_average3()//英语平均分

  33. {

  34.         return sum3/N;

  35. }





  36. void Student::disp()

  37. {

  38.         cout<<"学号:"<<no<<endl;

  39.         cout<<"姓名:"<<name<<endl;

  40.         cout<<"语文:"<<deg1<<endl;

  41.         cout<<"数学:"<<deg2<<endl;

  42.         cout<<"英语:"<<deg3<<endl;

  43. }



  44. //Student::Student(int tno,string tname,int tdeg1,int tdeg2,int tdeg3)
  45. void Student::setst(int tno,string tname,int tdeg1,int tdeg2,int tdeg3)

  46. {

  47.         no=tno;

  48.         name=tname;

  49.         deg1=tdeg1;

  50.         deg2=tdeg2;

  51.         deg3=tdeg3;

  52. }

  53. Student::Student()
  54. {
  55.         no = 0;
  56.         name = " ";
  57.         deg1 = 0;
  58.         deg2 = 0;
  59.         deg3 = 0;
  60. }

  61. int main()

  62. {

  63.         Student a[3];

  64.         int no,deg1,deg2,deg3,i,sum1=0,sum2=0,sum3=0;

  65.         string name;

  66.         for (i=0;i<3;i++)

  67.         {

  68.                 cout<<"学号:";

  69.                 cin>>no;

  70.                 cout<<"姓名:";

  71.                 cin>>name;

  72.                 cout<<"语文:";

  73.                 cin>>deg1;

  74.                 cout<<"数学:";

  75.                 cin>>deg2;

  76.                 cout<<"英语:";

  77.                 cin>>deg3;

  78.                 sum1=deg1+sum1;

  79.                 sum2=deg2+sum2;

  80.                 sum3=sum3+deg3;

  81.                 a[i].setst(no,name,deg1,deg2,deg3);

  82.         }

  83.    /*     for (i=0;i<3;i++)

  84.         {

  85.                 a[i].disp();



  86.         }
  87. */


  88.       cout<<"语文平均分:"<<deg1.get_average1()<<endl;

  89.         cout<<"数学平均分:"<<deg2.get_average2()<<endl;

  90.         cout<<"英语平均分:"<<deg3.get_average3()<<endl;



  91. return 0;

  92. }
复制代码
改后还是编译不了:L
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-31 20:41:09 | 显示全部楼层
小靚同学Leon 发表于 2013-3-31 16:19
楼主的帖子怎我也想知道答案哈哈哈哈哈哈么样?赶紧试试这里的快速回复给楼主点评论吧

丢出老师给的正确代码给你啦
  1. #include <iostream>
  2. using namespace std;
  3. #include <string>
  4. #define N 3;

  5. class Student
  6. {
  7. private:
  8.         int no,deg1,deg2,deg3;
  9.         string name;
  10.         static int sum1,sum2,sum3;
  11. public:
  12.         Student ();

  13.         Student(int tno,string tname,int tdeg1,int tdeg2,int tdeg3);
  14.         static int get_average1();
  15.         static int get_average2();
  16.         static int get_average3();
  17.         void disp();
  18. };

  19. int Student::sum1=0;
  20. int Student::sum2=0;
  21. int Student::sum3=0;

  22. int Student::get_average1()//ó??????ù·?
  23. {
  24.         return sum1/N;
  25. }

  26. int Student::get_average2()//êy?§???ù·?
  27. {
  28.         return sum2/N;
  29. }



  30. int Student::get_average3()//ó¢ó????ù·?
  31. {
  32.         return sum3/N;
  33. }


  34. void Student::disp()
  35. {
  36.         cout<<"?§o?£o"<<no<<endl;
  37.         cout<<"D???£o"<<name<<endl;
  38.         cout<<"ó???£o"<<deg1<<endl;
  39.         cout<<"êy?§£o"<<deg2<<endl;
  40.         cout<<"ó¢ó?£o"<<deg3<<endl;
  41. }
  42. Student::Student()
  43. {}

  44. Student::Student(int tno,string tname,int tdeg1,int tdeg2,int tdeg3)
  45. {
  46.         no=tno;
  47.         name=tname;
  48.         deg1=tdeg1;
  49.         deg2=tdeg2;
  50.         deg3=tdeg3;
  51.         sum1+=deg1;
  52.         sum2+=deg2;
  53.         sum3+=deg3;
  54. }
  55. int main()
  56. {
  57.         Student a[3];
  58.         int no,deg1,deg2,deg3,i,sum1=0,sum2=0,sum3=0;
  59.         string name;
  60.         for (i=0;i<3;i++)
  61.         {
  62.         cout<<"no:";
  63.         cin>>no;
  64.         cout<<"name:";
  65.         cin>>name;
  66.         cout<<"yuwen:";
  67.         cin>>deg1;
  68.         cout<<"shuxue:";
  69.         cin>>deg2;
  70.         cout<<"yingyu:";
  71.         cin>>deg3;

  72.         //sum1=deg1+sum1;
  73.         //sum2=deg2+sum2;
  74.         //sum3=sum3+deg3;
  75.         a[i]=Student(no,name,deg1,deg2,deg3);
  76.         }
  77. /*        for (i=0;i<3;i++)
  78.         {
  79.                 a[i].disp();

  80.         }*/

  81.         cout<<a[0].get_average1()<<endl<<a[0].get_average2()<<endl<<a[0].get_average3()<<endl;

  82.         return 0;
  83. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-5 03:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表