C语言 如何根据值打印不同的符号?



我的任务是创建一个程序,根据函数的值显示-+

为了使它更清晰一点,几个不同部分的输出应该看起来像这样;

07.87 |----+--- 12.97 |----+----+--- 02.79 |---

本质上,每 5 个符号都应该是一个+,其他符号是-的。可能出现的最大值为 15。

到目前为止,我有这个,但它不起作用;

if (distance(lat_2, long_2, LAT_1, LONG_1) == 5 || 10 || 15){
printf("+");
}
else{
printf("-");
}

我做错了什么?如果您需要更多信息,请随时询问。

此条件

distance(lat_2, long_2, LAT_1, LONG_1) == 5 || 10 || 15

相当于

( distance(lat_2, long_2, LAT_1, LONG_1) == 5 ) || ( 10 ) || ( 15 )

由于1015不等于零,因此条件将始终计算为 true。

您可以通过以下方式重写它

int value = distance(lat_2, long_2, LAT_1, LONG_1);
if ( value != 0 && value % 5 == 0 ){
printf("+");
}
else{
printf("-");
}

目前还不清楚您的distance函数与"每五个符号"有什么联系。但是,您可能正在寻找"模",这可能是您想要的:

int dist = distance(lat_2, long_2, LAT_1, LONG_1);
if (dist % 5 == 0){
printf("+");
}
else{
printf("-");
}

或者,如果不需要 0:

int dist = distance(lat_2, long_2, LAT_1, LONG_1);
if (dist != 0 && dist % 5 == 0){
printf("+");
}
else{
printf("-");
}

如果没有,那么您需要向我们提供有关您想要做什么的更多信息。

int dist=distance(lat_2, long_2, LAT_1, LONG_1); 
for(int i=0; i<dist;i++){ 
printf("%c", (dist % 5 == 0) ? '+' : '-'); 
}

将其简化为一个简单的行,使用模 (%( 和一个三元运算符:

printf("%c", distance(lat_2, long_2, LAT_1, LONG_1)%5 ? '-' : '+');

解释:

printf("%c",...);

将从参数中打印一个字符。 这最终要么是'-'要么是'+'

当值为 5、10、15、20 等时,表达式distance(lat_2, long_2, LAT_1, LONG_1) % 5将被false,并且对于所有其他值将true表达式。

您实际上无法像以前那样检查 5、10 或 15 的距离。

需要的是不断减小距离,直到它小于零。并每 5 次打印+一次,否则打印-

下面是一个示例代码。

int count = 0;
double distance;
...
while (distance >= 0)
{
distance -= 1;
count++;
if (count%5 == 0)
printf ("+");
else
printf ("-");
}

您应该注意,由于使用了double,因此总是有可能由于浮点运算而引入错误。对于像您的示例那样的小值和精度,我认为应该没有任何问题。

相关内容

  • 没有找到相关文章

最新更新