鱼C论坛

 找回密码
 立即注册
查看: 4483|回复: 8

if 语句嵌套runtime error

[复制链接]
发表于 2013-6-24 16:04:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
void main()
{
int y,m,d,t,mt,a;
printf("please input the date:year month day: \n");
scanf("%d%d%d",&y,&m,&d);
t=(m-1)*31;
if(y%100==0&&y%400==0)
     {
    if(t>31&&t<=93)mt=t-2;
    if(t>93&&t<=155)mt=t-3;
    if(t>155&&t<=248)mt=t-4;
    if(t>248&&t<=310)mt=t-5;
    if(t>310&&t<=372)mt=t-6;
     }
if(y%100==0&&y%400!=0)
   {
   if(t>31&&t<=93)mt=t-3;
   if(t>93&&t<=155)mt=t-4;
   if(t>155&&t<=248)mt=t-5;
   if(t>248&&t<=310)mt=t-6;
   if(t>310&&t<=372)mt=t-7;
  }
if(y%100!=0&&y%4==0)
   {
    if(t>31&&t<=93)mt=t-2;
    if(t>93&&t<=155)mt=t-3;
    if(t>155&&t<=248)mt=t-4;
    if(t>248&&t<=310)mt=t-5;
    if(t>310&&t<=372)mt=t-6;
   }
if(y%100!=0&&y%4!=0)
  {
   if(t>31&&t<=93)mt=t-3;
   if(t>93&&t<=155)mt=t-4;
   if(t>155&&t<=248)mt=t-5;
   if(t>248&&t<=310)mt=t-6;
   if(t>310&&t<=372)mt=t-7;
  }
a=mt+d;
printf("it is the %f day in the year\n",a);
}
俺自己想的输出一年中第几天的程序,但总是出现runtime error 提示,自己觉得应该是if嵌套用得不对。求指教if 后面嵌套多个if语句格式是怎样的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-24 17:42:42 | 显示全部楼层
在C++中,一个=是赋值运算符,==才是关系运算符。if条件语句里要注意。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-24 19:41:07 | 显示全部楼层
同上:lol:lol:lol:lol
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-24 20:47:43 | 显示全部楼层
其实前面都没有什么问题~~逻辑没有怎么看~~应该对吧~~
主要是输出哪里~~
vc建议不要用%f 和 float
而且你这里没有吖~~ a的类型是整型,整形用%d
小数用double ----- %lf 或者%lg %g
整形用int   --------- %d
希望你可以调通,对你有帮助。
加油吖!!{:7_175:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-24 21:06:05 | 显示全部楼层
用 switch 加 if 实现不是更好,哪么多 if 看着就不爽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-24 22:12:54 | 显示全部楼层

之前出问题,调试的时候把int 换成double但还是不成,后来想改回来又没改彻底,所以留了个%f ,很神奇的是把f换回d竟然可以用了.....虽然不知道逻辑有没错,感谢查错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-24 22:27:57 | 显示全部楼层
潜行者 发表于 2013-6-24 21:06
用 switch 加 if 实现不是更好,哪么多 if 看着就不爽

case后面只能跟常量,这样的话,这里至少要要用到2个switch(),4个case。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-24 22:29:24 | 显示全部楼层
勉强幸福。 发表于 2013-6-24 17:42
在C++中,一个=是赋值运算符,==才是关系运算符。if条件语句里要注意。

我好像没发现有这样的问题..{:7_154:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-25 00:00:14 | 显示全部楼层
Jan 发表于 2013-6-24 22:12
之前出问题,调试的时候把int 换成double但还是不成,后来想改回来又没改彻底,所以留了个%f ,很神奇的是 ...

帮到你就好~~{:7_175:}
一起努力学习~~嘻嘻~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-22 05:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表