条件运算符在每个输入上给出结果为28?

时间:2018-03-08 06:35:52

标签: c

短程序,根据是否是闰年,在没有使用控制结构分支语句的情况下查找2月份的天数

#include <stdio.h>
#include <stdlib.h>

int main()
{
  char a;
  int b;
  printf("Press 1 for leap year else Press any character:");
  scanf("%c",&a);
  (a==1)?(b=29):(b=28); 
  printf("Number of days in February=%d",b);
  return 0;
}

它给出了与答案相同的结果28?

3 个答案:

答案 0 :(得分:1)

这是因为a不等于1而是字符&#39; 1&#39;所以你必须写: (a == '1')?(b=29):(b=28);

答案 1 :(得分:1)

将变量a的数据类型更改为整数。试试这个它会正常工作。

 int main()
 {
  int a,b;
  printf("Press 1 for leap year else Press any character:");
  scanf("%d",&a);
  (a==1)?(b=29):(b=28); 
  printf("Number of days in February=%d",b);
  return 0;
}

答案 2 :(得分:0)

如果您将输入设为1。 您的代码将字符'1'与整数1.ascii值'1'进行比较为49。 所以,49!= 1 因此,您的代码执行false块。

因此,您必须将条件替换为(a=='1')?(b=29):(b=28);