大一新生初学c语言,要编写一个输入年月日输出这是今年多少天的程序,想问问为什么输出全错? - 爱问答

(爱问答)

大一新生初学c语言,要编写一个输入年月日输出这是今年多少天的程序,想问问为什么输出全错?

#include <iostream>

#include <stdio.h>

using namespace std;

int main()

{

    int ys,ms,m1,m2,m4,ds,day;

    scanf ("%d %d %d",&ys,&ms,&ds);

    if 

(((ys%4==0)&&(ys%100!=0))||ys%400==0)

   {

 m2=29;

}

    else

{

    m2=28;

}

 

    m1=31;

    m4=30;

 

    switch (ms)

    {

    case '1':

    day=ds;

    break;

 

    case '2':

    day=m1+ds;

    break;

 

    case '3':

    day=m1+m2+ds;

    break;

 

    case '4':

    day=m1*2+m2+ds;

    break;

 

    case '5':

    day=m1*2+m2+m4+ds;

    break;

 

    case '6':

    day=m1*3+m2+m4+ds;

    break;

 

    case '7':

    day=m1*3+m2+m4*2+ds;

    break;

 

    case '8':

    day=m1*4+m2+m4*2+ds;

    break;

 

    case '9':

    day=m1*5+m2+m4*2+ds;

    break;

 

    case '10':

    day=m1*5+m2+m4*3+ds;

    break;

 

    case '11':

    day=m1*7+m2+m4*2+ds;

    break;

 

    case '12':

    day=m1*7+m2+m4*3+ds;

    break;

    }

    printf("%d",day);

 

    return 0;

    }


你好,楼上的说得很对.你主要的错误就在 case 后面的数字加了 单引号,你一位数字加单引号可以理解,两位数加单引号是什么意思???两个数加单引号会出现警告: [Warning] multi-character character constant [-Wmultichar]   所以不对!   单引号只能加单个字符.


根据你的意思,ms是个整形范围为1-12,你输入的是1-12的整数,case判断也应该是1-12,当1-9加上单引号就不再是1-9了,而是字符1-9,电脑中值就是1-9的ASCII码了.


还有就是一般case要写上default语句,如:

default:
  printf("月份输入出错! ");
  break;


这样明显可以判断程序的错误.假如按你的程序加上上面这句,输入2018 1 1 就会出现:月份输入出错!

这样很容易判断.

相关标签:c语言

下一篇:为什么不用matlab搭建自编码器

上一篇:用C#编程基础循环完成

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?