为了账号安全,请及时绑定邮箱和手机立即绑定

为什么运行出来结果不对啊,求指点...还是不太懂switch语句怎么用...

#include<stdio.h>

int main() 

    /* 定义需要计算的日期 */

    int year = 2008;

    int month = 8;

    int day = 8;

    int i,flag;

    switch(month)

{

case 1:i=0;break;

case 2:i=i+31;break;

case 3:i=i+28;break;

case 4:i=i+31;break;

case 5:i=i+30;break;

case 6:i=i+31;break;

case 7:i=i+30;break;

case 8:i=i+31;break;

case 9:i=i+31;break;

case 10:i=i+30;break;

case 11:i=i+31;break;

case 12:i=i+30;break;

default:printf("一年只有12个月");break;

}

i=i+day;

if(year%400==0||(year%4==0 && year%100!=0))

flag=1;

else

flag=0;

if(flag=1&&month>=2)

i++;

    printf("%d年%d月%d日是这一年的第%d天\n",year,month,day,i);

    return 0;

}


正在回答

4 回答

最后那个if的控制表达式中,应该是 flag == 1 吧,你写成了给flag赋值1。

0 回复 有任何疑惑可以回复我~
#1

菠萝不困 提问者

改了唉,改完结果还是不对,是不是那个算法有问题啊
2015-08-02 回复 有任何疑惑可以回复我~
#2

onemoo 回复 菠萝不困 提问者

在定义i的时候,应赋予初值0,不然i的值是随机的。
2015-08-04 回复 有任何疑惑可以回复我~
#3

菠萝不困 提问者 回复 onemoo

我,,,,改了,,,,结果,,,还是不对,,,额0.0,,,会不会是我的算法的问题..
2015-08-05 回复 有任何疑惑可以回复我~
#4

onemoo 回复 菠萝不困 提问者

你的month定义为8,在switch中会直接跳到case 8处,假设你的i初值为0,那么这样i就是31(只是七月的天数),然后就跳出了switch语句... 这样加不到前几个月的天数,应该是算法有问题。
2015-08-05 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

为什么运行出来结果不对啊,求指点...还是不太懂switch语句怎么用...

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信