Closed. This question is
off-topic。它当前不接受答案。
想改善这个问题吗?
Update the question,所以它是
on-topic,用于堆栈溢出。
4年前关闭。
我是C编程的新手,有时我会开始一些私人课程,当我感到怀疑时,我正在接受培训,这实际上是代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char yesorno[60]; //array, every cell contains a character
//But here initialize your array
printf("Do you want to start?\n");
scanf("%s", &yesorno);
if (strcmp(yesorno, "yes")==0)
{
int face, roll, frequency1 = 0, frequency2 = 0,
frequency3 = 0, frequency4 = 0,
frequency5 = 0, frequency6 = 0;
for ( roll = 1; roll <= 6000; roll++ )
{
face = 1 + rand() % 6;
switch ( face )
{
case 1:
frequency1++;
break;
case 2:
frequency2++;
break;
case 3:
frequency3++;
break;
case 4:
frequency4++;
break;
case 5:
frequency5++;
break;
case 6:
frequency6++;
break;
}
}
printf( "%s%13s\n", "Face", "Frequency" );
printf( " 1%13d\n", frequency1 );
printf( " 2%13d\n", frequency2 );
printf( " 3%13d\n", frequency3 );
printf( " 4%13d\n", frequency4 );
printf( " 5%13d\n", frequency5 );
printf( " 6%13d\n", frequency6 );
printf("Do you know which one has more chances?\n");
if (frequency1 > frequency2, frequency3, frequency4, frequency5, frequency6)
{
printf( " 1%13d has a better chance\n", frequency1 );
}
else if (frequency2 > frequency1, frequency3, frequency4, frequency5, frequency6)
{
printf( " 2%13d has a better chance\n", frequency2 );
}
else if (frequency3 > frequency1, frequency2, frequency4, frequency5, frequency6)
{
printf( " 3%13d has a better chance\n", frequency3 );
}
else if (frequency4 > frequency1, frequency3, frequency2, frequency5, frequency6)
{
printf( " 4%13d has a better chance\n", frequency4 );
}
else if (frequency5 > frequency1, frequency3, frequency4, frequency2, frequency6)
{
printf( " 5%13d has a better chance\n", frequency5 );
}
else if (frequency6 > frequency1, frequency3, frequency4, frequency5, frequency2)
{
printf( " 6%13d has a better chance\n", frequency6 );
}
}
else
{
printf("then go bay bay");
}
return 0;
}
这是我的问题”:
我使用普通代码并在训练时添加了一些功能,例如如何比较2个字符串,这还可以,但是现在我如何比较1个变量比其他5个更大,为什么会出错?
我认为我应该将其从第一条IF语句中删除,但是这样做时,它表示未定义变量。因此,我必须以某种方式导入它们。
我正在使用代码:: blocks
谢谢大家!
您在该代码中想要的是将每个频率与其余五个频率进行比较-
if (frequency1 > frequency2, frequency3, frequency4, frequency5, frequency6)
但是逗号运算符在c编程中的优先级最低,因此此代码可以归结为
if ((frequency1 > frequency2), frequency3, frequency4, frequency5, frequency6)
因此,实际上发生的是将频率1与频率2进行比较,然后使用频率6的最右边的变量值来检查if条件,该条件将始终返回true,从而首先执行if语句
所以你可以这样
if( (frequency1 > frequency2) && (frequency1 > frequency3) && (frequency1 > frequency4) && (frequency1 > frequency5) && (frequency1 > frequency6))
在这里,我们要做的是将每个频率值与frequency1值进行比较,然后将每个结果进行“与”运算。