读书人

小弟我写的程序哪有有关问题?请解答一

发布时间: 2012-03-06 20:47:55 作者: rapoo

我写的程序哪有问题?请解答一下!
当输入月份和年时 输出该月天数
int year,mouth;
printf("请在键盘上输入一个月份和一个年份");
scanf("%d%d",&mouth,&year);
if(year%4==0&&year%100!=0||year%400==0)
if(mouth==2)
printf("本月为28天");
else
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;
case 2:printf("本月为29天\n");break;
case 4: case 6: case 9:case 11:printf("本月为30天\n");break;
default:printf("输出错误信息\n");break;
}
}


[解决办法]
你判断了年份是否是闰年等于没有判断了啊。那个if语句没有了用处啊!
#include"stdio.h"
void main()
{
int year,mouth;
printf("请在键盘上输入一个月份和一个年份");
scanf("%d%d",&mouth,&year);
if(year%4==0&&year%100!=0||year%400==0)
{
if(mouth==2)
printf("本月为28天");
else
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;
case 2:printf("本月为29天\n");break;
case 4: case 6: case 9:case 11:printf("本月为30天\n");break;
default:printf("输出错误信息\n");break;
}
}
else
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;
case 2:printf("本月为29天\n");break;
case 4: case 6: case 9:case 11:printf("本月为30天\n");break;
default:printf("输出错误信息\n");break;
}

}
这个是我稍微改了下的。我也不是很懂得啊@但是这样之后就可以了!
那个if语句后也要加上花括号的!
[解决办法]
这个你的if语句有问题;

C/C++ code
#define TRUE 1 #define FAlSE 0int isLeap(int year){    if(year%4==0 && year%100==0 && year%400 == 0)    {         return TRUE;    }    return FALSE;}void MonthDays(int year,int month){   switch(month)   {       case 1:       case 3:       case 5:       case 7:       case 8:       case 10:       case 12:               printf("本月31天\n");               break;      case 2:             if(isLeap(year))                  printf("本月29天\n");              else printf("本月28天\n");              break;     case 4:     case 6:     case 9:     case 11:            printf("本月30天\n");            break;   }}
[解决办法]
支持lS
[解决办法]
C/C++ code
#include<iostream>using namespace std;int main(){    int year,mouth;    printf("请在键盘上输入一个月份和一个年份");    scanf("%d%d",&mouth,&year);    if(year%4==0&&year%100!=0||year%400==0)    {        if(mouth==2)            printf("本月为28天");        else              switch(mouth)        {            case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;                            case 4: case 6: case 9:case 11:printf("本月为30天\n");break;            default:printf("输出错误信息\n");break;        }    }else    {        switch(mouth)        {        case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;        case 2:printf("本月为29天\n");break;        case 4: case 6: case 9:case 11:printf("本月为30天\n");break;        default:printf("输出错误信息\n");break;        }    }    return 1;}
[解决办法]
第一个if后面少一对大括号
[解决办法]

C/C++ code

int year,mouth;printf("请在键盘上输入一个月份和一个年份");scanf("%d%d",&mouth,&year);// if(year%4==0&&year%100!=0||year%400==0)// if(mouth==2)// printf("本月为28天");// else switch(mouth){case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;case 2:if(year%4==0&&year%100!=0||year%400==0) printf("本月为29天\n"); else       printf("本月为28天"); break;case 4: case 6: case 9:case 11:printf("本月为30天\n");break;default:printf("输出错误信息\n");break;}}
[解决办法]
scanf 可以这样用吗?
[解决办法]
后面的else lz本想与第一个if对应的..但却和 第二个if 对上了.. 要记住else是和他前一个if对应的 如果楼主想和第一if对应 可用{} 把第二个if和else给括起来.
[解决办法]
你的if和else不对吧,if和else有就近原则啊,你的else跟的第二个if,建议你Debug跟着跑下就知道了,嘿嘿
[解决办法]
大家都说了,那我就不说了
[解决办法]
int year,mouth;
printf("请在键盘上输入一个月份和一个年份");
scanf("%d%d",&mouth,&year);
if(year%4==0&&year%100!=0||year%400==0)
{
if(mouth==2)
printf("本月为28天");
}
else
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:printf("本月为31天\n");break;
case 2:printf("本月为29天\n");break;
case 4: case 6: case 9:case 11:printf("本月为30天\n");break;
default:printf("输出错误信息\n");break;
}
}
[解决办法]
探讨
if(year%4==0&&year%100!=0||year%400==0)
if(mouth==2)
printf("本月为28天"); // 这里应该是闰年,输出28
else // 这里的else与if(mouth==2)匹配,那以,当不是闰年是,就没有输出.

读书人网 >C++

热点推荐