coolman
精灵王
精灵王
  • 注册日期2013-03-17
  • 发帖数215
  • QQ
  • 火币958枚
  • 粉丝4
  • 关注3
  • 忠实会员
  • 最爱沙发
阅读:6539回复:3

一段C程序,编译不能通过(error C2106: '=' : left operand must be l-value),求解!!

楼主#
更多 发布于:2014-02-23 20:56
#include"stdio.h"
void main()
{   
    int year,month,day,days;
    int flag=1;
    do
    {   
        printf("请输入一个日期,格式为2008-08-08:\n");
        scanf("%d-%d-%d",&year,&month,&day);
        if((year<=0||month<=0||month>=12||day<=0))
            flag=0;
        else
        {   
            switch(month)
            {
            case 1:days=31;break;
            case 2:((year%4==0&&year%100!=0)||(year%400==0))==1?days=29:days=28;break;
            case 3:days=31;break;
            case 4:days=30;break;
            case 5:days=31;break;
            case 6:days=30;break;
            case 7:days=31;break;
            case 8:days=31;break;
            case 9:days=30;break;
            case 10:days=31;break;
            case 11:days=30;break;
            case 12:days=31;break;
            }
            if(day>days)
                flag=0;
            else
                flag=1;
        }
        if(flag==0) printf("日期输入格式有误!\n");
    }
        while(flag==0);
        printf("%d-%d-%d是一个有效的日期!\n",year,month,day);
}

喜欢0 评分0
coolman
精灵王
精灵王
  • 注册日期2013-03-17
  • 发帖数215
  • QQ
  • 火币958枚
  • 粉丝4
  • 关注3
  • 忠实会员
  • 最爱沙发
沙发#
发布于:2014-02-23 21:01
(17) : error C2106: '=' : left operand must be l-value

回复(0) 喜欢(0)     评分
万俟宇轩
风云使者
风云使者
  • 注册日期2014-04-11
  • 发帖数14
  • QQ1073704575
  • 火币9084枚
  • 粉丝0
  • 关注0
板凳#
发布于:2014-04-16 08:25
if语句改为if((year<=0||month<=0||day<=0))
case2语句改为case 2:days=((year%4==0&&year%100!=0)||(year%400==0))==1?29:28;break;
最好也把main函数改为int 再加个return 1;

回复(1) 喜欢(0)     评分
coolman
精灵王
精灵王
  • 注册日期2013-03-17
  • 发帖数215
  • QQ
  • 火币958枚
  • 粉丝4
  • 关注3
  • 忠实会员
  • 最爱沙发
地板#
发布于:2014-04-16 14:21
万俟宇轩:if语句改为if((year<=0||month<=0||day<=0))
case2语句改为case 2:days=((year%4==0&&year%100!=0)||(year%400==0))==1?29:28;break;
最好也...
回到原帖
谢谢啦,改完case 2语句就好了

回复(0) 喜欢(0)     评分
游客

返回顶部