C 我的if语句写得正确吗? 双重土壤质量(int x,int y){ 双A型,B型,土质相等; 如果((x>=1)和&(x=1)和&(y20))| |((y20))){ soilQual=-1.0; } 回土质量;

C 我的if语句写得正确吗? 双重土壤质量(int x,int y){ 双A型,B型,土质相等; 如果((x>=1)和&(x=1)和&(y20))| |((y20))){ soilQual=-1.0; } 回土质量;,c,if-statement,C,If Statement,} 只要几个简单的问题,如果我创建变量保护来测试x和y是否在区间[1,20],第一个if语句是否正确?如果x和y不在这个区间,我返回a-1;我的第二个if语句正确吗?最后一个问题,我返回值的语法正确吗?(更具体地说,我可以像在代码中一样在最后返回值吗?) 因为出于某种原因,我的输出与讲师的输出不同,我已经仔细检查了我的公式,它看起来很好,所以我认为我的代码语法有问题 谢谢 x和y是否在区间[1,20] 是的,没错 如果x和y不在这个区间,我返回a-1;我的第二个if语句正确吗 对 但不需要第二个

}

只要几个简单的问题,如果我创建变量保护来测试x和y是否在区间[1,20],第一个if语句是否正确?如果x和y不在这个区间,我返回a-1;我的第二个if语句正确吗?最后一个问题,我返回值的语法正确吗?(更具体地说,我可以像在代码中一样在最后返回值吗?)

因为出于某种原因,我的输出与讲师的输出不同,我已经仔细检查了我的公式,它看起来很好,所以我认为我的代码语法有问题

谢谢

x和y是否在区间[1,20]

是的,没错

如果x和y不在这个区间,我返回a-1;我的第二个if语句正确吗

但不需要第二个if,将else与第一个if相加:

double soilQuality(int x, int y) {
   double typeA, typeB, soilQual;

   if (((x >= 1) && (x <= 20)) && ((y >= 1) && (y <= 20))) {
      typeA = 1 + (sqrt((pow(x - SOILQUALACONST, 2)) + (pow(y - SOILQUALACONST,          2)) * (1.0)));
      typeB = (1 + ((abs(x - SOILQUALBCONST) + abs(y - SOILQUALBCONST))/(2.0)));

      soilQual = (((x + y) % 2) * typeB) + ((1 - ((x + y) % 2)) * typeA);
   }

   if (((x < 1) || (x >20)) || ((y < 1) || (y > 20))) {
      soilQual = -1.0;
   }

   return soilQual;
if((x>=1)和&(x=1)和&(y)
x和y是否在区间[1,20]

是的,没错

如果x和y不在这个区间,我返回-1;我的第二个if语句正确吗

但不需要第二个if,将else与第一个if相加:

double soilQuality(int x, int y) {
   double typeA, typeB, soilQual;

   if (((x >= 1) && (x <= 20)) && ((y >= 1) && (y <= 20))) {
      typeA = 1 + (sqrt((pow(x - SOILQUALACONST, 2)) + (pow(y - SOILQUALACONST,          2)) * (1.0)));
      typeB = (1 + ((abs(x - SOILQUALBCONST) + abs(y - SOILQUALBCONST))/(2.0)));

      soilQual = (((x + y) % 2) * typeB) + ((1 - ((x + y) % 2)) * typeA);
   }

   if (((x < 1) || (x >20)) || ((y < 1) || (y > 20))) {
      soilQual = -1.0;
   }

   return soilQual;

if((x>=1)和&(x=1)和&(y)您可以简单地编写
if(x>=1和&x=1&&y哦!感谢Basile Starynkevitch的建议!第二个
if
子句可以更改为else,因为一切都已完成。您应该启用所有警告和调试信息(例如,使用
gcc-Wall-g
编译),并学习如何使用调试器(例如,
gdb
)…@BasileStarynkevitch:我和一些人一起工作过,他们认为所有那些不必要的括号都能提高可读性。这对我来说毫无意义。如果(x>=1&&x=1&&y哦!感谢Basile Starynkevitch的建议!第二个
if
子句可以更改为else,因为一切都已完成。您应该启用所有警告和调试信息(例如,使用
gcc-Wall-g
编译),并学习如何使用调试器(例如
gdb
)…@BasileStarynkevitch:我和一些人一起工作过,他们认为所有那些不必要的括号都能提高可读性。这对我来说毫无意义。