for循环中c不输出完整数组

时间:2017-01-30 12:58:58

标签: c arrays loops for-loop

这是一个简单的问题,因为我是C的新来者。我正在尝试编写一个脚本,用于输出弧度的切线数组,从0到60的倍数为5。但由于某种原因,我写的for循环只针对第一个元素执行此操作,并且结果数组中的所有其他元素都是0.00,并且它不会为每个循环打印它们。我确定我的循环已经做了一些简单的错误,但我无法看到它。

#include <stdio.h>
#include <math.h> 
float rad(float degree){
    return degree*M_PI/180;
}
int main(void){
    int i, j, dim=13;
    float Tan[dim];
    for(i=0; i<13; i++);{
        j+=5;
        Tan[i]=tan(rad(j));
        printf("%f\n", Tan[i]);
    }
    return 0;
}

3 个答案:

答案 0 :(得分:3)

首先,在你的代码中

 j+=5;

undefined behavior,因为j的初始值是不确定的。详细说明,j是一个自动局部变量,未明确初始化,因此内容是不确定的。

然后,for循环也是错误的。

 for(i=0; i<13; i++);

应该是

for(i=0; i<13; i++)   // no ; here

要执行有意义的循环体。

答案 1 :(得分:3)

1。 您已经插入了一个你不应该有的分号。将你的循环改为:

for(i = 0; i < 13; i++){        //erase the ; after the parenthesis
    j+=5;
    Tan[i] = tan(rad(j));
    printf("%f\n", Tan[i]);
}

2。 在尝试使用语句j增加变量j+=5之前对其进行初始化,因为这会导致未定义的行为。

答案 2 :(得分:0)

您的代码中存在两个问题: -

1)您尚未在此处初始化j int i, j, dim=13;

2)您使用for loop的方式符合您的要求。从for loop语句中删除分号。