2011-08-09 54 views
0
int main (int argc, const char * argv[]) 
{ 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    int n, number, triangularNumber; 
    NSLog(@"What Triangular Number Do You Want?"); 
    scanf(@"%i", &number); 
    triangularNumber = 0; 

    for (n = 1; n <= number; ++n) 
     triangularNumber += n; 
     NSLog(@"Triangular Number %i is %i", number, triangularNumber); 

    [pool drain]; 
    return 0; 
} 

输出当我写一个整数是这样的:简单的Objective-C程序不工作

Triangular Number 0 is 0 
+0

由于使用数字作为指针,因此引用它的值为*数字 – Dan

回答

2

您的输入数字为0,并且for循环中的条件从1开始。因此,循环从不执行。

0

它应该是:

for (n = 1; n <= number; ++n) { 
     triangularNumber += n; 
     NSLog(@"Triangular Number %i is %i", number, triangularNumber); 
} 

在你写的方式,解析为:

for (n = 1; n <= number; ++n) { 
    triangularNumber += n; 
} 
NSLog(@"Triangular Number %i is %i", number, triangularNumber); 

而且由于输入(数字)是0(如指示由印刷品提供)循环不会发生,但印刷线。

+4

代码上的缩进具有误导性。我不认为他意味着记录每一个中间值,只是最终的结果。 – highlycaffeinated

+0

是的,但正如我在scanf所说,无论我写的诠释应分配给号码,那么数字应该有一个值 –