当前位置: 代码迷 >> C语言 >> [求助]简单奇妙的问题
  详细解决方案

[求助]简单奇妙的问题

热度:285   发布时间:2006-08-14 22:05:09.0
[求助]简单奇妙的问题

输入月份数字,输出相应英文名字

#include"stdio.h"
#include"conio.h"
main()
{
int i,n ;
static char a[][11]=
{
"invalid","january","february","march","april","may","june",
"july","august","september","october","november","december"
}
;
printf("input the month\n");
scanf("%d",&n);
printf("it's %s\n",(0<n<13)?a[n]:a[0]);
return(0);
}
输入15就完蛋
printf("it's %s\n",(a<1||a>12)?a[0]:a[n]);
然后就OK
有什么区别???




----------------解决方案--------------------------------------------------------
因为C里面没有这种0<n<13的表达方法,
在C语言中,条件的并列只能用&&和||实现。
您还可以改成:
printf("it's %s\n",n>0&&n<13?a[n]:a[0]);
----------------解决方案--------------------------------------------------------
但注意0<n<13编译器之所以不报错,是因为它把这条件解释成(由左往右):
0<n真否,真则为1,否则为0,而不管真假,都是小于13,所以都只打印a[n],
----------------解决方案--------------------------------------------------------

要细心


----------------解决方案--------------------------------------------------------


按楼主说的

printf("it's %s\n",(0<n<13)?a[n]:a[0]);

替换printf("it's %s\n",(0<n<13)?a[n]:a[0]);  //0<n<13改为n>0&&n<13

编译根本就不能通过阿


----------------解决方案--------------------------------------------------------
谢谢斑竹
----------------解决方案--------------------------------------------------------
  相关解决方案