这是一个简单的问题,因为我是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;
}
答案 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
语句中删除分号。