LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 869|回复: 6

大家看看这段C程序有什么问题

[复制链接]
发表于 2004-10-8 11:07:34 | 显示全部楼层 |阅读模式
大家看看这段程序有什么问题:
main()
{
  int month;
  int day;
  printf("please input the month number :");
  scanf("%d",&month);
  switch (month)
    {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12: day=31;
               break;
      case 4:
      case 6:
      case 9:
      case 11: day=30;
               break;
      case 2:  day=28;
               break;
      default: day=-1;
    }
    if (day=-1)
      printf("Invalid month input !\n");
    else
      printf("2004.%d has %d days \n",month,day);
}

本意是判断一年中每个月的天数的,但是结果太怪了
发表于 2004-10-8 11:20:25 | 显示全部楼层

回复: 大家看看这段C程序有什么问题

最初由 Vangzi 发表
大家看看这段程序有什么问题:
main()
{
  int month;
  int day;
  printf("please input the month number :");
  scanf("%d",&month);
  switch (month)
    {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12: day=31;
               break;
      case 4:
      case 6:
      case 9:
      case 11: day=30;
               break;
      case 2:  day=28;
               break;
      default: day=-1;
    }
    if (day=-1)
      printf("Invalid month input !\n");
    else
      printf("2004.%d has %d days \n",month,day);
}

本意是判断一年中每个月的天数的,但是结果太怪了



day=-1 ????
发表于 2004-10-8 11:29:26 | 显示全部楼层

  1. if (day=-1)
复制代码

问题在这里,你这句变成赋值了,不管前面怎么判断的,最后day永远等于-1
判断相等要用==
发表于 2004-10-8 12:30:21 | 显示全部楼层

回复: 大家看看这段C程序有什么问题

[php]
main()
{
  int month;
  int day;
  printf("please input the month number :");
  scanf("%d",&month);
  switch (month)
    {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12: day=31;
               break;
      case 4:
      case 6:
      case 9:
      case 11: day=30;
               break;
      case 2:  day=28;
               break;
      default: day=-1;
    }
    if (day==-1)
      printf("Invalid month input !\n");
    else
      printf("2004.%d has %d days \n",month,day);
}

[/php]

if (day==-1)


PS: 贴代码要放在 php 或 code 标签里
 楼主| 发表于 2004-10-8 14:25:16 | 显示全部楼层

回复: 回复: 大家看看这段C程序有什么问题

这段代码是书上抄来的,原来的是这样子的:
[php]
main()
{
  int month;
  int day;
  printf("please input the month number :");
  scanf("%d",&month);
  switch (month)
    {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12: day=31;
               break;
      case 4:
      case 6:
      case 9:
      case 11: day=30;
               break;
      case 2:  day=28;
               break;
      default: day=-1;
    }
    if day=-1
      printf("Invalid month input !\n");
    else
      printf("2004.%d has %d days \n",month,day);
}

[/php]

这里if day=-1肯定通不过了,我把它改成这样:
[php]
main()
{
  int month;
  int day;
  printf("please input the month number :");
  scanf("%d",&month);
  switch (month)
    {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12: day=31;
               break;
      case 4:
      case 6:
      case 9:
      case 11: day=30;
               break;
      case 2:  day=28;
               break;
    }
      printf("2004.%d has %d days \n",month,day);
}

[/php]
得出的结果是很奇怪的。
 楼主| 发表于 2004-10-8 14:28:45 | 显示全部楼层
刚才又试了一下,现在的结果正常了,不知道什么原因。

上午的时候不知道是什么鬼结果。
发表于 2004-10-8 15:52:25 | 显示全部楼层
什么破书阿。。。害人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表