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

有没有大神看一下这段代码输出为什么是211,而不是正确答案221

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

     * 请使用switch语句,if...else语句完成本题

     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”

     * 小编还是希望大家独立完成哦~

     */

    int i;

    int sum=0;

    for(i=1;i<month;i++)

    {

        if(i==1&&i==3&&i==5&&i==7&&i==8&&i==10&&i==12)

           { 

               sum=sum+31;

           }

            else if(i==4&&i==6&&i==9&&i==11)

                {

                    sum=sum+30;

                }

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

                    {

                        sum=sum+29;

                    }

                    else

                        sum=sum+28;

    }

    sum=sum+day;

    printf("2008年8月8日这一天,是该年中的第%d天 ",sum);

    return 0;

             


正在回答

6 回答


#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

     int sum=0;

    for(int i=1;i<month;i++){

        if(i==2){

            sum+=28;

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

                sum++;

            }

        }else if(i%2==0){

            sum+=30;

        }else{

            sum+=31;

        }

    }

    sum+=day;

    printf("2008年8月8日是该年的第%d天",sum);


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

for if...else 写法简单点

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

     int sum=0;

    for(int i=1;i<month;i++){

        if(i==2){

            sum+=28;

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

                sum++;

            }

        }else if(i%2==0){

            sum+=30;

        }else{

            sum+=31;

        }

    }

    sum+=day;

    printf("2008年8月8日是该年的第%d天",sum);


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


#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

     int sum=0;

    for(int i=1;i<month;i++){

        if(i==2){

            sum+=28;

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

                sum++;

            }

        }else if(i%2==0){

            sum+=30;

        }else{

            sum+=31;

        }

    }

    sum+=day;

    printf("2008年8月8日是该年的第%d天",sum);


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

&&是并且  换成 |  |或

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

把&& 换成 ||

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

计算月份对应天数的逻辑判断有误:

if(i==1&&i==3&&i==5&&i==7&&i==8&&i==10&&i==12)           
{                
sum=sum+31;           
} 
else if(i==4&&i==6&&i==9&&i==11)                
{                    
sum=sum+30;                
}


修改后:

 if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)        
 {             
 sum=sum+31;         
 } 
 else if(i==4||i==6||i==9||i==11)            
 {            
 sum=sum+30;            
 }

       

&&是逻辑与,||是逻辑或。你自己再多琢磨一下。

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

举报

0/150
提交
取消

有没有大神看一下这段代码输出为什么是211,而不是正确答案221

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