Objective-C 程序設計(第六版)第四章習題答案


1.   非法常量

      0x10.5    0X0G1    98.7U    17777s    0996    1.2Fe-7    15,000    .

2.

     //只需要列出表達式就可以
        
        int F = 27;       //設置F為華氏溫度,賦值 27
        float C ;           //設置C為攝氏溫度,類型為浮點類型
        
        C = (F-32)/1.8;
        NSLog(@"%.f",C);     // %.f 保留一位小數就可以

     //輸出結果
       2014-09-17 14:58:48.259 prog1[6058:303] -2.8
       Program ended with exit code: 0

3.    輸出結果為 d .

4.    

        float x = 2.55 ,  result ;
        
        result = 3 * (x * x * x) - 5 * (x * x) + 6 ;
        
        NSLog(@"result is %f",result);

       //結果如下
      2014-09-17 15:11:11.064 prog1[6196:303] result is 23.231621

5.

        //不知道這道題考的是什么 列出表達式過了得了

        double result;
        
        result = (3.31e-8 + 2.01e-7) / (7.16e-6 + 2.01e-8);
        
        NSLog(@"result is %e",result);
        
        //輸出結果
        2014-09-17 15:29:31.547 prog1[6274:303] result is 3.260400e-02
        Program ended with exit code: 0

6.

//-------------interface部分-----------

@interface Complex : NSObject

- (void) setReal: (double) a;            //設置實數
- (void) setImaginary: (double) b;    //設置虛數
- (void) print;                                 //打印結果
- (double) real;
- (double) imaginary;

@end

//--------------implementation部分----------------

@implementation Complex
{
    double real;
    double imaginary;
}

- (void) setReal: (double) a
{
    real = a;
}

- (void) setImaginary: (double) b
{
    imaginary = b;
}

- (void) print
{
    NSLog(@"The complex is %.f + %.fi", real, imaginary);
}

- (double) real
{
    return real;
}

- (double) imaginary
{
    return imaginary;
}


@end


//----------------program部分-------------

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        Complex * newComplex = [[Complex alloc]init];
        
        [newComplex setReal:11];
        [newComplex setImaginary:22];

//下面兩個方法都可以 ,分別測試 print方法和 real,imaginary方法;(應題目要求) [newComplex print];

  //      NSLog(@"The complex is %.f + %.fi",[newComplex real],[newComplex imaginary]);

       
    }
    return 0;
}

//結果如下
   2014-09-17 17:27:59.830 prog1[6678:303] The complex is 11 + 22i
   Program ended with exit code: 0

7.

//-----------------interface部分------------------ 

@interface Rectangle : NSObject

- (void) setWidth: (int) w;       //設置矩形寬度
- (void) setHeight: (int) h;      //設置矩形高度
- (int) width;
- (int) height;
- (int) area;                            //面積
- (int) perimeter;                    //周長

@end


//----------------implementation部分---------------

@implementation Rectangle

{
    int width;
    int height;
}

- (void) setWidth: (int) w
{
    width = w;
}

- (void) setHeight: (int) h
{
    height = h;
}

- (int) width
{
    return  width;
}

- (int) height
{
    return height;
}

- (int) area
{
    return (width * height);
}

- (int) perimeter
{
    return 2*(width + height);
}


@end


//-----------------program部分--------------

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        Rectangle *newRectangle = [[Rectangle alloc]init];
        
        [newRectangle setWidth:12];
        [newRectangle setHeight:21];
        
        //測試新類的各個方法--------------
        NSLog(@"Width of newRectangle is %d",      [newRectangle width]);
        NSLog(@"Height of newRectangle is %d",     [newRectangle height]);
        NSLog(@"Area of newRectangle is %d",        [newRectangle area]);
        NSLog(@"Perimeter of newRectangle is %d", [newRectangle perimeter]);    
        
    }
    return 0;
}
//結果如下
2014-09-17 22:55:03.825 prog1[7272:303] Width of newRectangle is 12

2014-09-17 22:55:03.827 prog1[7272:303] Height of newRectangle is 21

2014-09-17 22:55:03.827 prog1[7272:303] Area of newRectangle is 252

2014-09-17 22:55:03.827 prog1[7272:303] Perimeter of newRectangle is 66

Program ended with exit code: 0

 

8. 

//----------------interface部分---------------

@interface Calculator : NSObject

//設置累加器
- (void) setAccumulator: (double) value;
- (void) clear;
- (double) accumulator;

//加減乘除
- (double) add: (double) value;
- (double) subtract: (double) value;
- (double) multiply: (double) value;
- (double) divide: (double) value;

@end


//------------------implementation部分------------------

@implementation Calculator

{
    double accumulator;
}

- (void) setAccumulator: (double) value
{
    accumulator = value;
}

- (void) clear
{
    accumulator = 0;
}

- (double) accumulator
{
    return accumulator;
}

- (double) add: (double) value
{
    accumulator += value;
    return accumulator;
}

- (double) subtract: (double) value
{
    accumulator -= value;
    return accumulator;
}

- (double) multiply: (double) value
{
    accumulator *= value;
    return accumulator;
}

- (double) divide: (double) value
{
    accumulator /= value;
    return accumulator;
}

@end


//---------------------program部分------------------

int main(int argc, const char * argv[])
{

    @autoreleasepool {

         Calculator *deskCalc = [[Calculator alloc]init];
        
        [deskCalc setAccumulator:100.0];

        NSLog(@"%g",[deskCalc add:10]);
        NSLog(@"%g",[deskCalc subtract:10]);
        NSLog(@"%g",[deskCalc multiply:10]);
        NSLog(@"%g",[deskCalc divide:10]);
      
    }
    return 0;
}

 

 9.

//----------------interface部分---------------

@interface Calculator : NSObject

//設置累加器
- (void) setAccumulator: (double) value;
- (void) clear;
- (double) accumulator;

//加減乘除
- (double) add: (double) value;
- (double) subtract: (double) value;
- (double) multiply: (double) value;
- (double) divide: (double) value;
//改變累加器正負號,累加器的倒數,累加器的平方
- (double) changeSign;
- (double) reciprocal;
- (double) xSquared;

 @end



//------------------implementation部分------------------

@implementation Calculator { double accumulator; } - (void) setAccumulator: (double) value { accumulator = value; } - (void) clear { accumulator = 0; } - (double) accumulator { return accumulator; } - (double) add: (double) value { accumulator += value; return accumulator; } - (double) subtract: (double) value { accumulator -= value; return accumulator; } - (double) multiply: (double) value { accumulator *= value; return accumulator; } - (double) divide: (double) value { accumulator /= value; return accumulator; }
- (double) changeSign
{
    accumulator = -accumulator;
    return accumulator;
}
 
- (double) reciprocal
{
    accumulator = 1/accumulator;
    return accumulator;
}
 
- (double) xSquared
{
    accumulator = accumulator * accumulator;
    return accumulator;
}
 
@end


//---------------------program部分------------------

int main(int argc, const char * argv[])
{

    @autoreleasepool {

         Calculator *deskCalc = [[Calculator alloc]init];
        
        [deskCalc setAccumulator:100.0];

//        NSLog(@"%g", [deskCalc add:10]);
//        NSLog(@"%g", [deskCalc subtract:10]);
//        NSLog(@"%g", [deskCalc multiply:10]);
//        NSLog(@"%g", [deskCalc divide:10]);
        NSLog(@"%g", [deskCalc changeSign]);
        NSLog(@"%g", [deskCalc reciprocal]);
        NSLog(@"%g", [deskCalc xSquared]);
      
    }
    return 0;
}

 10.

//inerface

//內存相關
- (double) memoryClear;                    //清理內存
- (double) memoryStore;                   //設置內存為累加器
- (double) memoryRecall;                   //設置累加器到內存
- (double) memoryAdd: (double) value;      //添加值到內存
- (double) memorySubtract: (double) value;    //與內存的值相減

//@implementation

- (double) memoryClear
{
    memory = 0.0;
    return accumulator;
}

- (double) memoryStore
{
    memory = accumulator;
    return accumulator;
}

- (double) memoryRecall
{
    accumulator = memory;
    return accumulator;
}

//應題目要求,所有方法返回值都是累加器。但是全是無用功 
//正確的方法是 accumulator = memory
- (double) memoryAdd: (double) value
{
    memory += value;
    return accumulator;
}
- (double) memorySubtract: (double) value
{
    memory -= value;
    return accumulator;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM