当前位置: 代码迷 >> C语言 >> 菜菜鸟 新问题求助..提示if else 没有匹配..!
  详细解决方案

菜菜鸟 新问题求助..提示if else 没有匹配..!

热度:296   发布时间:2008-05-03 01:08:23.0
菜菜鸟 新问题求助..提示if else 没有匹配..!
想写一个判断 生日是否输入正确的函数 带闰年

代码如下 但是不能运行 不知道错在哪里 括号都括正确 对称了

请老鸟指教

#include <stdio.h>


void main()
{
    int year=0;
    int monch=0;
    int day=0;

    printf("请输入生日(格式1988-06-18):");
    scanf("%d-%d-%d",&year,&monch,&day);
    fflush(stdin);
    for(;(year>=1900 && year<=2000);)
    {
        {
        if((year%4)==0)
           
            {
            if((year%100)!=0)
                printf("输入的是闰年\n");
                    {
                    if(monch>=1&&monch<=12)
                        printf("月输入正确\n");
                    else
                        printf("月输入错误\n");
                    }
            else
                {
                if((year%400)==0)
                    printf("输入的是闰年\n");
                else
                    printf("你输入的不是闰年\n");
                }    
                    
            }
        else
            printf("你输入的不是闰年\n");
        }    
    }
    printf("年输入错误,请重新输入(格式1988-06-18):");
}
搜索更多相关的解决方案: 菜菜  else  提示  

----------------解决方案--------------------------------------------------------
  我是新手 希望大家发现我书写的代码有什么问题 或者书写规范有待改进

麻烦大家指出来,谢谢大家了
----------------解决方案--------------------------------------------------------
同时也希望大家给个好点的思路..我觉得我思路有点乱
----------------解决方案--------------------------------------------------------
if((year%4==0&&year%100!=0)||year%400==0)
        printf("%d是闰年",year);
else
        printf("%d不是闰年",year);

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    这样判断好象更加简洁一些?如有不对,请指正。
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]广陵绝唱[/un] 在 2008-5-3 01:29 的发言:[/bo]

if((year%4==0&&year%100!=0)||year%400==0)
        printf("%d是闰年",year);
else
        printf("%d不是闰年",year);

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    这样判断好象更加简洁一些?如有不对,请指正。 ...

我试试 理论上说没问题  好像不只简洁一点点 多谢了
----------------解决方案--------------------------------------------------------
修改成:
#include <stdio.h>


void main()
{
    int year=0;
    int monch=0;
    int day=0;

    while(1)
    {
    printf("请输入生日(格式1988-06-18):");
    scanf("%d-%d-%d",&year,&monch,&day);
    fflush(stdin);

    if((year>=1900 && year<=2000))
            if((year%4==0&&year%100!=0)||year%400==0)
                if(monch<=12&&monch>=1)
                    printf("输入的月份正确\n");
                        
                else
                    printf("输入的月份错误\n");
            else
                printf("你输入的不是闰年\n");    
    else
        printf("你输入的年份错误\n");
    }
}

问题解决 慢慢完善中 谢谢 广陵绝唱
----------------解决方案--------------------------------------------------------
if else的语法是
if exp;
if exp; else exp;
exp={exp;}
所以呢,if exp; {exp} else exp是不合乎要求的……
这里exp表示任何表达式。这种格式的语法说明应该习惯,因为这是标准和文档中的默认表达方式。

另:我的实现和建议见你发的另一个帖子……
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
    int year=0;
    int monch=0;
    int day=0;
    while(1)
    {
    printf("请输入生日(格式1988-06-18):");
    scanf("%d-%d-%d",&year,&monch,&day);
    fflush(stdin);

    if((year>=1900 && year<=2000))
      printf("你输入的年份正确\n");
    else
        printf("你输入的年份错误\n");
            if((year%4==0&&year%100!=0)||year%400==0)
               printf("你输入的是闰年\n");
            else
                printf("你输入的不是闰年\n");
                if(monch<=12&&monch>=1)
                    printf("输入的月份正确\n");

                else
                    printf("输入的月份错误\n");


    }
}
这样应该可以吧
----------------解决方案--------------------------------------------------------
  相关解决方案