编辑代码

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
@interface Operation : NSObject
-(double) addOperation:(double)num1 :(double)num2;
-(double) subtractionOperation:(double)num1 :(double)num2;
-(double) multiplicationOperation:(double)num1 :(double)num2;
-(double) divisionOperation:(double)num1 :(double)num2;
@end
NS_ASSUME_NONNULL_END
@implementation Operation
-(double)addOperation:(double)num1 :(double)num2{
    return num1+num2;
}
-(double)subtractionOperation:(double)num1 :(double)num2{
    return num1-num2;
}
-(double)multiplicationOperation:(double)num1 :(double)num2{
    return num1*num2;
}
-(double)divisionOperation:(double)num1 :(double)num2{
    return num1/num2;
}
@end
NS_ASSUME_NONNULL_BEGIN

@interface Calculator : Operation
{
    double _result;
}
-(void)setResult: (double)num1 :(double)num2 :(char)operation;
-(double)result;
@end

NS_ASSUME_NONNULL_END

@implementation Calculator
-(double)result{
    return _result;
}
-(void)setResult:(double)num1 :(double)num2 :(char)operation{
    switch (operation) {
        case '+':
            NSLog(@"两数的计算结果为:%lf",[self addOperation:num1 :num2]);
            break;
        case '-':
            NSLog(@"两数的计算结果为:%lf",[self subtractionOperation:num1 :num2]);
            break;
        case '*':
            NSLog(@"两数的计算结果为:%lf",[self multiplicationOperation:num1 :num2]);
            break;
        case '/':
            NSLog(@"两数的计算结果为:%lf",[self divisionOperation:num1 :num2]);
            break;
            
        default:
            break;
    }
}
@end
int main(int argc, const char * argv[]) {
    while (1) {
        NSLog(@"输入第一个数:");
        double a1;
        rewind(stdin);
        scanf("%lf",&a1);
        NSLog(@"请选择计算类型:+、-、*、/");
        char ans='a';
        rewind(stdin);
        scanf("%c",&ans);
        NSLog(@"输入第二个数:");
        double a2;
        rewind(stdin);
        scanf("%lf",&a2);
        if(a1!=0&&a2!=0&&(ans!='+'||ans!='-'||ans!='*'||ans!='/')){
            Calculator *ca=[Calculator new];
            [ca setResult:a1 :a2 :ans];
            [ca result];
            NSLog(@"是否继续?y/n");
            char end='a';
            rewind(stdin);
            scanf("%c",&end);
            if(end!='y'){
                NSLog(@"再见");
                break;
            }
        }else{
            NSLog(@"输入一误,重新输入");
        }
    
    }
    return 0;
}