我套用了for语句为什么,什么都没输出来呢?
#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day = 8;
/*
* 请使用swtich语句,if...else语句完成本题
* 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
* 小编还是希望大家独立完成哦~
*/
int sum,m,i;
for(m=1;m<=month;m++)
{
if(m<8)
{
switch(m=m%2)
{
case 1:i=31;
break;
case 0:
if(m=2)
{
i=28;
}
else
{
i=30;
}
break;
}
}
if(8<=m<=12)
{
switch(m%=2)
{
case 1:i=30;
case 0:i=31;
}
}
else
{
printf("一年只有12个月");
}
sum=sum+i;
}
if(year%4=0)
{
sum++;
}
printf("%d",sum);
return 0;
}
if(8<=m<=12)你确定可以这样而不是8<=m && m<=12
case 1:i=30;
case 0:i=31; 这里的break去哪里了?
if(m=2) 、 if(year%4=0) 判断相等要用 == 这是我目测发现的问题,没有仔细看代码
如果只修正其他问题,不修正闰年问题,代码如下:
#include <stdio.h> int main() { int year=2008,month=8,day=8,sum=0,m,i=0,j=m%2; for(m=1;m<=month;m++) { if(m<8) { switch(j) { case 1:i=31;break; case 0: if(m=2) { i=28; } else { i=30; } break; } } if(m>=8 && m<=12) { switch(j) { case 1:i=30;break; case 0:i=31;break; } } else { printf("一年只有12个月\n"); } sum=sum+i; } if(year%4==0) { sum++; } printf("%d",sum); return 0; }
有结果,是:
一年只有12个月
一年只有12个月
一年只有12个月
一年只有12个月
一年只有12个月
一年只有12个月
一年只有12个月
248
依然不知道问题在哪儿!
除了楼上指出的问题,还有以下问题:
1、case0后的if(m=2)不正确。因为前面已经使用了switch(m=m%2),m有了新的值,非0即1,不会再等于2了。这也是switch后面可以使用case0、case1的基础。
如果想使用if(m=2),就必须在前面重新定义一个变量,来接收m%2的值。
比如,int j=m%2;
这样就可以用switch(j)来代替switch(m=m%2)
2、sum没有初始值,可能影响结果。(这一点我也不是很确定)
3、闰年的判定方法不正确。
闰年的要求是“四年一闰,百年不闰,四百年再闰”。
判断方法是:year%4==0&&year%100!=0||year%400==0
4、把以上问题修正后,代码依然无法执行,不知道问题在哪儿!!!