陷入无限循环 (C)
Stuck in infinite loop (C)
问题是代码在beetleSimulation
下的while循环中,当x/yCount
超出范围时,它会永远继续而不是退出。 x
和 y
远远超过 20,谁能帮我找出原因?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265
void beetleSimulation(int, int);
int main ( int argc, char *argv[] )
{
if ( argc != 3 ) // argc should be 2 for correct execution
{
// If the number of arguments is not 2
printf("Program only has %d arguments ", argc);
return 0;
}
else
{
//run the beetle simulation
beetleSimulation(atoi(argv[1]), atoi(argv[2]) );
return 0;
}
}
void beetleSimulation(int size, int iterations){
int i;
double xCount = 0;
double yCount = 0;
int timeCount = 0;
int overallCount = 0;
int degree;
double radian;
for(i=0; i < 10; i++){
while(xCount < 20 || xCount > -20 || yCount <20 || yCount >-20){
timeCount += 1;
degree = rand() % 360;
radian = degree / (180 * PI);
xCount += sin(radian);
yCount += cos(radian);
printf("X and Y are %f and %f\n", xCount, yCount);
}
//when beetle has died, add time it took to overall count, then go through for loop again
overallCount += timeCount;
}
//calculate average time
double averageTime = overallCount/iterations;
printf("Average Time is %f",averageTime);
}
目前,您的循环条件将始终为真,请记住,使用 or 运算符,如果任何条件为真,则整个表达式的计算结果将为真。
您可能希望在 while 循环条件中使用 ands。只有当所有条件都为真时,循环才会继续。
while(xCount > -20 && xCount < 20 && yCount > -20 && yCount < 20)
问题是代码在beetleSimulation
下的while循环中,当x/yCount
超出范围时,它会永远继续而不是退出。 x
和 y
远远超过 20,谁能帮我找出原因?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265
void beetleSimulation(int, int);
int main ( int argc, char *argv[] )
{
if ( argc != 3 ) // argc should be 2 for correct execution
{
// If the number of arguments is not 2
printf("Program only has %d arguments ", argc);
return 0;
}
else
{
//run the beetle simulation
beetleSimulation(atoi(argv[1]), atoi(argv[2]) );
return 0;
}
}
void beetleSimulation(int size, int iterations){
int i;
double xCount = 0;
double yCount = 0;
int timeCount = 0;
int overallCount = 0;
int degree;
double radian;
for(i=0; i < 10; i++){
while(xCount < 20 || xCount > -20 || yCount <20 || yCount >-20){
timeCount += 1;
degree = rand() % 360;
radian = degree / (180 * PI);
xCount += sin(radian);
yCount += cos(radian);
printf("X and Y are %f and %f\n", xCount, yCount);
}
//when beetle has died, add time it took to overall count, then go through for loop again
overallCount += timeCount;
}
//calculate average time
double averageTime = overallCount/iterations;
printf("Average Time is %f",averageTime);
}
目前,您的循环条件将始终为真,请记住,使用 or 运算符,如果任何条件为真,则整个表达式的计算结果将为真。
您可能希望在 while 循环条件中使用 ands。只有当所有条件都为真时,循环才会继续。
while(xCount > -20 && xCount < 20 && yCount > -20 && yCount < 20)