所以,我制作了这个简单的C程序来给出输出,所以它对正整数和零整数值是正确的,但对负偶数和奇数是错误的

  • 本文关键字:整数 错误 简单 输出 所以 程序 c if-statement
  • 更新时间 :
  • 英文 :


如何摆脱第一个if-else构造,因为当我输入负值时,因为这里的条件被检查,然后它转到最后一个else语句,在那里它只打印零

#include<stdio.h>
int main() {
int x;
scanf("%d", &x);
if(x>0)
{
printf("Positive");
{
if(x%2==0)
{
printf("Even");
}
else
{
printf("Odd");
}
}

我希望在输入负值时执行此操作,但无法执行

if(x<0)
{

printf("Negative");
{
if(x%2==0) {
printf("Even");
}
else {
printf("Odd");
}

}

}
}
else {
printf("Zero");
}
return 0;
}

只要重新生成代码,就会发现奇怪的{,就像printf("Positive");之后的那个

只需删除这个奇怪的{并修复您的编码风格即可:

#include<stdio.h>
int main() {
int x;
scanf("%d", &x);
if ( x > 0 ) {
printf("Positive");
if ( x % 2 == 0 ) {
printf("Even");

} else {
printf("Odd");
}
} else if( x < 0 ) {
printf("Negative");
if( x % 2 == 0 ) {
printf("Even");
} else {
printf("Odd");
}
}   
else {
printf("Zero");
}   
return 0;
} 

更容易阅读,更容易调试

问题似乎是复合语句的嵌套不正确。

我可以提出以下解决方案。

#include <stdio.h>
int main( void )
{
enum { Negative = -1, Zero = 0, Positive = 1};
printf( "Enter a number: " );

int x = 0;
scanf( "%d", &x );
int sign = ( 0 < x ) - ( x < 0 );
switch (sign)
{
case Negative:
printf( "Negative " );
break;
case Zero:
puts( "Zero" );
break;
case Positive:
printf( "Positive " );
break;
}
if (sign != 0)
{
puts( x % 2 == 0 ? "even." : "odd." );
}
}

程序输出可能看起来像

Enter a number: 10
Positive even.

最新更新