A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求助,这个程序编译没有任何问题,运行提示Segmentation fault: 11?
求高手指点?是哪里出问题了?这是老师留的课后题。。。
  1. #import<Foundation/Foundation.h>
  2. /*********************成绩类************************/
  3. @interface Score : NSObject
  4. {
  5.     @public
  6.     int cScore;          // 定义C语言成绩 OC和iOS成绩
  7.     int ocScore;
  8.     int iosScore;
  9. }
  10. - (int)compareCScoreWithOther:(Score *)other;  // 和其他人比较C成绩,OC成绩和iOS成绩
  11. - (int)compareOcScoreWithOther:(Score *)other;
  12. - (int)compareIosScoreWithOther:(Score *)other;
  13. - (int)totalSum;
  14. - (int)averageScore;

  15. @end

  16. @implementation Score
  17. - (int)compareCScoreWithOther:(Score *)other    // 比较成绩的方法实现
  18. {
  19.     return cScore-other->cScore;
  20. }
  21. - (int)compareOcScoreWithOther:(Score *)other
  22. {
  23.     return ocScore-other->ocScore;
  24. }
  25. - (int)compareIosScoreWithOther:(Score *)other
  26. {
  27.     return iosScore-other->iosScore;
  28. }
  29. - (int)totalSum
  30. {
  31.     return cScore+ocScore+iosScore;
  32. }
  33. - (int)averageScore
  34. {
  35.     return (cScore+ocScore+iosScore)/3;
  36. }
  37. @end

  38. /*********************学生类**************************/
  39. @interface Student : NSObject
  40. {
  41.     @public
  42.     char *name;
  43.     int no;
  44.     Score *score;                           // 学生成绩,引用上面的score类
  45. }
  46. - (int)compareCScoreWithOther:(Student *)other;
  47. - (int)compareOcScoreWithOther:(Student *)other;
  48. - (int)compareIosScoreWithOther:(Student *)other;
  49. - (int)totalSum:(Student *)other;
  50. - (int)averageScore:(Student *)other;
  51. @end

  52. @implementation Student                // 学生 比较成绩 实现方法
  53. - (int)compareCScoreWithOther:(Student *)other
  54. {
  55.     return [score compareCScoreWithOther:other->score];
  56. }
  57. - (int)compareOcScoreWithOther:(Student *)other
  58. {
  59.     return [score compareOcScoreWithOther:other->score];
  60. }
  61. - (int)compareIosScoreWithOther:(Student *)other
  62. {
  63.     return [score compareIosScoreWithOther:other->score];
  64. }
  65. - (int)totalSum:(Student *)other
  66. {
  67.     return [score totalSum]-[other->score totalSum];
  68. }
  69. - (int)averageScore:(Student *)other
  70. {
  71.     return [score averageScore]-[other->score averageScore];
  72. }
  73. @end

  74. int main()
  75. {
  76.    
  77.     Student *stu = [Student new];
  78.     stu->score->cScore = 35;
  79.     stu->score->ocScore = 84;
  80.     stu->score->iosScore = 81;
  81.    
  82.     Student *stu2 = [Student new];
  83.     stu2->score->cScore = 39;
  84.     stu2->score->ocScore = 91;
  85.     stu2->score->iosScore = 39;
  86.    
  87.     int a = [stu compareCScoreWithOther : stu2];
  88.     int b = [stu compareOcScoreWithOther : stu2];
  89.     int c = [stu compareIosScoreWithOther : stu2];
  90.     int d = [stu totalSum :stu2];
  91.     int e = [stu averageScore :stu2];
  92.    
  93.    
  94.     NSLog(@"compareCScoreWithOther = %d,compareOcScoreWithOther = %d,compareIosScoreWithOther = %d,totalSum = %d,averageSum = %d",a,b,c,d,e);
  95.    
  96.     return 0;
  97. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

5 个回复

倒序浏览
为什么老提示Segmentation fault: 11?
回复 使用道具 举报
有没有正在学习OC的小伙伴做过这道题呢?
回复 使用道具 举报
忘了注释题目了:题目是这样
/*
5.利用前面的成绩类,重新设计一个学生类
1> 属性
* 姓名
* 学号
* 成绩(包括3科成绩)

2> 行为
* 比较C语言成绩:跟另外一个学生比较C语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)
* 比较OC成绩:跟另外一个学生比较OC语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)
* 比较iOS成绩:跟另外一个学生比较iOS语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)
* 比较总分:跟另外一个学生比较总分,返回成绩差(自己的成绩 - 其他人的成绩)
* 比较平均分:跟另外一个学生比较平均分,返回成绩差(自己的成绩 - 其他人的成绩)
*/
回复 使用道具 举报
求助 有没有人帮我看看
回复 使用道具 举报
不要沉。。顶起来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马