我有两个10个数字的数组,包含0到1之间的随机浮点数。假设a[10]
和b[10]
。我现在使用第一个c
循环在变量for
中生成0到1之间的随机浮点数,然后在第二个for
循环中将其与'b'进行比较。< / p>
当条件为真时,第二个for
循环应该停止并返回到前一个for
循环以生成下一个随机数。问题是我尝试了几种方法(如果条件为真,则将k增加到最大限制或break
函数或goto
函数在条件为真时退出第二for
循环但没有它们工作正常,有时会给我一个垃圾值。
很明显,随机数在某些点会小于或等于'b',因为两者的数字都在0到1之间。
int d;
float e[10];
a={0.3,0.9,1,0.2,0.11,0.21,0.43,0.64,0.55,0.88};
b={0.4,0.7,0.78,0.11,0.49,0.2,0.13,0.74,0.65,0.98};
for (int j=0; j<10; j++) //first for loop for generating random number
{
float c=(float)rand()/((float)RAND_MAX);
for (k=0; k<10; k++) // 2nd for loop for comparison with generated number
{
if (c<=b)
{
d=k;
e[k]=a[d];
printf("%f\n",e);
k=10;
//goto jmp;
//break;
}
}
//jmp: printf("\n");
}
答案 0 :(得分:1)
我认为这种情况是错误的:
if (c<=b)
因为你的变量声明是:
float c;
float b[10] = {....};
所以你可能想做类似
的事情 if (c<=b[0])
{
....
break;
}
答案 1 :(得分:0)
您对10 a
的数组b
和float
的声明
a={0.3,0.9,1,0.2,0.11,0.21,0.43,0.64,0.55,0.88};
b={0.4,0.7,0.78,0.11,0.49,0.2,0.13,0.74,0.65,0.98};
错了(特别是在C中)。将其更改为
float a[10]={0.3,0.9,1,0.2,0.11,0.21,0.43,0.64,0.55,0.88};
float b[10]={0.4,0.7,0.78,0.11,0.49,0.2,0.13,0.74,0.65,0.98};
现在你不能if (c<=b)
。b
是float
的数组,c
是float
类型。在C.中,没有这样的比较是可能的
我想你想这样做
if (c<=b[j])
{
....
printf("%f\n",e[k]);
....
}
答案 2 :(得分:0)
通过提及数组的名称(在您的情况下为e
),它将为您提供地址。 (在某些情况下,数组会衰减到指针)
您必须使用e [k]打印浮点值。
if (c<=b[j])// Here, I have changed it
{ ^-- error was here
...
...
printf("%f\n",e[k]);// Here, I have changed it
^-- error was here