黑马程序员技术交流社区

标题: 大神帮我看看这个程序哪里错了,谢谢 [打印本页]

作者: meijinyu    时间: 2014-12-1 16:14
标题: 大神帮我看看这个程序哪里错了,谢谢
/*
3.设计一个”学生“类
1> 属性
* 姓名
* 生日
* 年龄
* 身高(单位是m)
* 体重(单位是kg)
* 性别
* C语言成绩
* OC成绩
* iOS成绩

2> 行为
* 跑步:每跑步一次,身高增加1cm,体重减小0.5kg,输出跑完后的体重
* 吃饭:每吃一次,身高增加1cm,体重增加0.5kg,输出吃完后的体重
* 学习:每学习一次,3可成绩各加1分,输出学习完后的3科成绩
* 睡觉:输出所有的属性
* 比较C语言成绩:跟另外一个学生比较C语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)
* 比较OC成绩:跟另外一个学生比较OC语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)
* 比较iOS成绩:跟另外一个学生比较iOS语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)
* 计算总分:算出3科成绩的总分
* 计算平均分:算出3科成绩的平均分
*/

#import <Foundation/Foundation.h>
// 颜色
typedef struct {
    int year;
    int month;
    int day;
} Date;

// 性别
typedef enum {
    SexMan,
    SexWoman,
    SexUnknow
} Sex;

@interface Student : NSObject
{
    @public
    char *name; // 姓名
    Date birthday; // 生日
    int age; // 年龄
    double height; // 身高
    double weight; // 体重
    Sex sex; // 性别
    int cScore; // C语言成绩
    int ocScore; // OC成绩
    int iosScore; // iOS成绩
}

- (void)run; // 跑
- (void)eat; // 吃
- (void)study; // 学习
- (void)sleep; // 睡觉
- (int)compareCScoreWithOther:(Student *)other; // 比较C成绩
- (int)compareOcScoreWithOther:(Student *)other; // 比较OC成绩
- (int)compareIosScoreWithOther:(Student *)other; // 比较iOS成绩
- (int)totalScore; // 总分
- (int)averageScore; // 平均分
@end

@implementation Student
- (void)run // 跑
{
    height += 0.01;
    weight -= 0.5;
    NSLog(@"学生跑完后的体重是%f公斤", weight);
}
- (void)eat // 吃
{
    height += 0.01;
    weight += 0.5;
    NSLog(@"学生吃完后的体重是%f公斤", weight);
}
- (void)study // 学习
{
    cScore += 1;
    ocScore += 1;
    iosScore += 1;
}
- (void)sleep // 睡觉
{
    NSLog(@"姓名=%s,身高=%f米,体重=%f公斤,生日=%d-%d-%d,年龄=%d岁,性别=%d,C成绩=%d,OC成绩=%d,iOS成绩=%d", name, height, weight, birthday.year, birthday.month, birthday.day, age, sex,
          cScore, ocScore, iosScore);
}
- (int)compareCScoreWithOther:(Student *)other // 比较C成绩
{
    return cScore - other->cScore;
}
- (int)compareOcScoreWithOther:(Student *)other // 比较OC成绩
{
    return ocScore - other->ocScore;
}
- (int)compareIosScoreWithOther:(Student *)other // 比较iOS成绩
{
    return iosScore - other->iosScore;
}
- (int)totalScore // 总分
{
    return cScore + ocScore + iosScore;
}
- (int)averageScore // 平均分
{
    return (cScore + ocScore + iosScore) / 3;
}
@end

请大神帮我看一下那里错了啊?在线等,谢谢!

下面是错我报告:
appledeMacBook-Pro:1201 apple$ cc 03.m -framework Foundation
03.m:67:17: warning: method definition for 'compareCScoreWith:' not found
      [-Wincomplete-implementation]
@implementation Student
                ^
03.m:59:1: note: method 'compareCScoreWith:' declared here
- (int)compareCScoreWith:(Student *)other;//和其他人比较C语言成绩,返回...
^
03.m:67:17: warning: method definition for 'compareOCScoreWith:' not found
      [-Wincomplete-implementation]
@implementation Student
                ^
03.m:60:1: note: method 'compareOCScoreWith:' declared here
- (int)compareOCScoreWith:(Student *)other;//比较OC成绩,返回差值
^
03.m:67:17: warning: method definition for 'compareIOSScoreWith:' not found
      [-Wincomplete-implementation]
@implementation Student
                ^
03.m:61:1: note: method 'compareIOSScoreWith:' declared here
- (int)compareIOSScoreWith:(Student *)other;//比较IOS成绩,返回差值
^
3 warnings generated.

作者: Jr_711    时间: 2014-12-1 17:16
compareCScoreWith:
compareOCScoreWith:
compareIOSScoreWith:

compareCScoreWithOther:
compareOCScoreWithOther:
compareIOSScoreWithOther:

不用大神,自己看出来了吧,可能是错在main函数里了




作者: meijinyu    时间: 2014-12-1 20:26
Jr_711 发表于 2014-12-1 17:16
compareCScoreWith:
compareOCScoreWith:
compareIOSScoreWith:

你好,main()函数里面我什么都没写,上面两段代码有什么区别吗?依我的理解,other只是修饰词,只是让读起来更好理解。我认为这两个应该是一样的吧?请大神指导啊?
作者: meijinyu    时间: 2014-12-1 20:27
Jr_711 发表于 2014-12-1 17:16
compareCScoreWith:
compareOCScoreWith:
compareIOSScoreWith:

你好,main()函数里面我什么都没写,上面两段代码有什么区别吗?依我的理解,other只是修饰词,只是让读起来更好理解。我认为这两个应该是一样的吧?请大神指导啊?
作者: wawsc5354524    时间: 2014-12-1 20:54
为什么不选择插入代码/?这样别人看了都不想看了
作者: meijinyu    时间: 2014-12-2 08:46
wawsc5354524 发表于 2014-12-1 20:54
为什么不选择插入代码/?这样别人看了都不想看了

你好,怎么插入代码啊?我不会
作者: qiusiyu    时间: 2014-12-2 09:45
兄弟,我给你测试了一遍,原封不动的粘贴的你的代码,我自己加的主函数,结果显示代码没有问题。以下是详情:

  1. #pragma mark 这是Student.h
  2. #import <Foundation/Foundation.h>
  3. // 生日
  4. typedef struct {
  5.     int year;
  6.     int month;
  7.     int day;
  8. } Date;

  9. // 性别
  10. typedef enum {
  11.     SexMan,
  12.     SexWoman,
  13.     SexUnknow
  14. } Sex;


  15. @interface Student : NSObject
  16. {
  17. @public
  18.     char *name; // 姓名
  19.     Date birthday; // 生日
  20.     int age; // 年龄
  21.     double height; // 身高
  22.     double weight; // 体重
  23.     Sex sex; // 性别
  24.     int cScore; // C语言成绩
  25.     int ocScore; // OC成绩
  26.     int iosScore; // iOS成绩
  27. }

  28. - (void)run; // 跑
  29. - (void)eat; // 吃
  30. - (void)study; // 学习
  31. - (void)sleep; // 睡觉

  32. - (int)compareCScoreWithOther:(Student *)other; // 比较C成绩
  33. - (int)compareOcScoreWithOther:(Student *)other; // 比较OC成绩
  34. - (int)compareIosScoreWithOther:(Student *)other; // 比较iOS成绩
  35. - (int)totalScore; //
复制代码

  1. #pragma mark 这是Student.m
  2. #import <Foundation/Foundation.h>
  3. #import"Student.h"
  4. @implementation Student
  5. - (void)run // 跑
  6. {
  7.     height += 0.01;
  8.     weight -= 0.5;
  9.     NSLog(@"学生跑完后的体重是%f公斤", weight);
  10. }
  11. - (void)eat // 吃
  12. {
  13.     height += 0.01;
  14.     weight += 0.5;
  15.     NSLog(@"学生吃完后的体重是%f公斤", weight);
  16. }
  17. - (void)study // 学习
  18. {
  19.     cScore += 1;
  20.     ocScore += 1;
  21.     iosScore += 1;
  22. }
  23. - (void)sleep // 睡觉
  24. {
  25.     NSLog(@"姓名=%s,身高=%f米,体重=%f公斤,生日=%d-%d-%d,年龄=%d岁,性别=%d,C成绩=%d,OC成绩=%d,iOS成绩=%d", name, height, weight, birthday.year, birthday.month, birthday.day, age, sex,
  26.           cScore, ocScore, iosScore);
  27. }
  28. - (int)compareCScoreWithOther:(Student *)other // 比较C成绩
  29. {
  30.     return cScore - other->cScore;
  31. }
  32. - (int)compareOcScoreWithOther:(Student *)other // 比较OC成绩
  33. {
  34.     return ocScore - other->ocScore;
  35. }
  36. - (int)compareIosScoreWithOther:(Student *)other // 比较iOS成绩
  37. {
  38.     return iosScore - other->iosScore;
  39. }
  40. - (int)totalScore // 总分
  41. {
  42.     return cScore + ocScore + iosScore;
  43. }
  44. - (int)averageScore // 平均分
  45. {
  46.     return (cScore + ocScore + iosScore) / 3;
  47. }
  48. @end
复制代码

  1. #pragma mark 这是main
  2. #import <Foundation/Foundation.h>
  3. #import"Student.h"

  4. int main()
  5. {
  6.     Student * s1 = [[Student alloc]init];
  7.     Student * s2 = [[Student alloc]init];
  8.    
  9.     s1->cScore = 10;
  10.     s2->cScore = 20;
  11.     int sum = [s1 compareCScoreWithOther:s2];
  12.     NSLog(@"%d",sum);
  13.     return 0;
  14. }
复制代码

完全没改你的代码。

唯一值得注意的是:主函数中调用方法compareCScoreWithOther:时 你试试从Student.h文件中把方法名复制粘贴过来 这样可能保证不出错。

你按照我说的试试,不行的话再说。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2