牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有

/*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>@interface Student : NSObject{ //每次在类的属性声明的时候都要提那么几句:要加@public,要在字符串类型的属性声明的时候声明成字符串指针变量类型 @public NSString *_name; NSString *_birthday; int _year; float _height; float _weight; NSString *_sex; int _scoreC; int _scoreOC; int _scoreiOS;}-(void)run;-(void)eat;-(void)study;-(void)sleep;-(int)gradeC:(int)score1 andgradeC:(int)score2;-(int)gradeOC:(int)score2;-(int)gradeiOS:(int)score2;-(int)sumScore;-(int)averScore:(int)sum;@end@implementation Student-(void)run{ _weight-=0.5; NSLog(@"跑步,瘦了0.5kg,体重变为%.2f",_weight);}-(void)eat{ _weight+=0.5; NSLog(@"吃饭,胖了0.5kg,体重变为%.2f",_weight);}-(void)study{ _scoreC+=1; _scoreOC+=1; _scoreiOS+=1; NSLog(@"C:%d,OC:%d,iOS:%d",_scoreC,_scoreOC,_scoreiOS);}-(void)sleep{ NSLog(@"Name:%@\nBirthday:%@\nYear:%d\nHeight:%.2f\nWeight:%.2f\nSex:%@\nCScore:%d\nOCScore:%d\niOSScore:%d",_name,_birthday,_year,_height,_weight,_sex,_scoreC,_scoreOC,_scoreiOS);}-(int)gradeC:(int)score1 andgradeC:(int)score2 //这个方法是传入两个人的数据,然后计算,我觉得这个方法不足之处在于我们明明用第一个人去调用这个方法,那么只需要传第二个人的成绩不就得了,我们明明可以在方法里直接引用调用这个方法的那个人的成绩。改进的方法便是下面两个关于OC和iOS的方法{ int score3=score1-score2; return score3;}-(int)gradeOC:(int)score2 //这个方法和下面的iOS的方法就只需要传入一个值,然后在方法里直接引用调用这个方法的对象的相关属性(成员)和传入的这一个值比较即可了,比较简便{ int score3=_scoreOC-score2; return score3;}-(int)gradeiOS:(int)score2{ int score3=_scoreiOS-score2; return score3;}-(int)sumScore{ int sum; sum=_scoreC+_scoreOC+_scoreiOS; return sum;}-(int)averScore:(int)sum{ int average=sum/3; return average;}@endint main(){ @autoreleasepool { Student *ss1=[Student new]; Student *ss2=[Student new]; ss1->_name=@"wang"; ss2->_name=@"lao"; ss1->_weight=55.5; ss2->_weight=65.5; [ss1 run]; //第一个实例化对象ss1去调用run方法 [ss2 eat]; //第二个实例化对象ss2去调用eat方法 //运算嘛,所以赋值是一定要的,,很麻烦,习惯就好了 ss1->_scoreC=85; ss2->_scoreC=90; ss1->_scoreOC=90; ss2->_scoreOC=75; ss1->_scoreiOS=80; ss2->_scoreiOS=100; ss1->_birthday=@"1993.12.31"; ss1->_year=22; ss1->_height=1.81; ss1->_sex=@"man"; [ss1 study]; //因为这个方法会使所有成绩加1,所以以后的运算都是在成绩加1的情况的运算的。 [ss1 sleep]; int scoreCcha=[ss1 gradeC:ss1->_scoreC andgradeC:ss2->_scoreC]; NSLog(@"%@的C语言成绩减去%@的C语言成绩的差为:%d",ss1->_name,ss2->_name,scoreCcha); int scoreOCcha=[ss1 gradeOC:ss2->_scoreOC]; NSLog(@"%@的OC语言成绩减去%@的OC语言成绩的差为:%d",ss1->_name,ss2->_name,scoreOCcha); int scoreiOScha=[ss1 gradeiOS:ss2->_scoreiOS]; NSLog(@"%@的iOS成绩减去%@的iOS成绩的差为:%d",ss1->_name,ss2->_name,scoreiOScha); int sum=[ss1 sumScore]; NSLog(@"%@的总成绩为:%d",ss1->_name,sum); int average=[ss1 averScore:[ss1 sumScore]]; //这里是直接调用前面方法的返回值,类型保持一致即可 NSLog(@"%@的平均成绩为:%d",ss1->_name,average); } return 0;}*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

不知道来年,会不会开出一地的记忆和忧愁。

牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有

相关文章:

你感兴趣的文章:

标签云: