C++编程问题,程序能成功编译,但是不出结果

这是我们学校期末的课程设计,题目要求是:由键盘输入一个日期,求出所对应的星期。
以下是我写的程序,能编译出来,但是我不知道哪里出问题了……求教!

#include<iostream.h>
int LeapYearNumber(int a);
int month_day_run(int month_day);
int month_day_ping(int month_day);

int LeapYearNumber(int a)
{
int i=0,j,k;
for(j=1;j<a;j++)
{
{
if((j%4==0)&&(j%100!=0)||(j%400==0)) //判断从0001年至所输入年份中的闰年
i++; //将所有闰年的个数累加
}
k=i; //k为从0001年至所输入年份中的闰年个数
return k;
}
}

int month_day_run(int month_day)
{
int b,B;
{
switch(b)
{
//此段代码的意义是计算输入年份中,当年的月份所对应的天数
case 1:B=0;break;
case 2:B=31;break;
case 3:B=60;break;
case 4:B=91;break;
case 5:B=121;break;
case 6:B=152;break;
case 7:B=182;break;
case 8:B=213;break;
case 9:B=244;break;
case 10:B=274;break;
case 11:B=305;break;
case 12:B=335;break;
}
}
month_day=B;
return month_day;
}

int month_day_ping(int month_day)
{
int b,B;
{
switch(b)
{
//此段代码的意义是计算输入年份中,当年的月份所对应的天数
case 1:B=0;break;
case 2:B=31;break;
case 3:B=59;break;
case 4:B=90;break;
case 5:B=120;break;
case 6:B=151;break;
case 7:B=181;break;
case 8:B=212;break;
case 9:B=243;break;
case 10:B=273;break;
case 11:B=304;break;
case 12:B=334;break;
}
}
month_day=B;
return month_day;
}

void main()
{
int a,b,c,month_day,k; //输入数据
cout<<"请输入年月日(空格分隔):";
cin>>a>>b>>c;
if((a%4!=0)&&(a%100!=0)||(a%400!=0)) //若所输入的年份是平年
{
month_day_ping(month_day);
}
if((a%4==0)&&(a%100!=0)||(a%400==0)) //若所输入的年份是闰年
{
month_day_run(month_day);
}
LeapYearNumber(a);
int total_day,date;
total_day=k*366+((a-k)*365)+month_day+c-1; //计算从基准点开始,到所输入年份一共所经历的天数
date=total_day%7; //对总天数进行求余
switch(date)
{
//通过余数判断星期几
case 0:cout<<"这天是星期日!"<<endl;break;
case 1:cout<<"这天是星期一!"<<endl;break;
case 2:cout<<"这天是星期二!"<<endl;break;
case 3:cout<<"这天是星期三!"<<endl;break;
case 4:cout<<"这天是星期四!"<<endl;break;
case 5:cout<<"这天是星期五!"<<endl;break;
case 6:cout<<"这天是星期六!"<<endl;break;
}
}
vbtraz大哥,我错了,我实在不知道该怎么办了,能不能给点详细的改进方案……~

整体思路没有错,但是LeapYearNumber函数错误,FOR循环下多了套大括号,而且你参数的传递方法和返回值的传递方法弄错了,兄弟,基础要打牢呀,正确的应该如下:(我编译运行测试过了,你的注释我去掉了,因为改的地方我加了注释,你注意比较)

#include<iostream.h>
int LeapYearNumber(int a);
int month_day_run(int month_day);
int month_day_ping(int month_day);

int LeapYearNumber(int a)
{
int i=0,j,k;
for(j=1;j<a;j++)//循环去掉一层大括号,不然第一次循环就return了
{
if((j%4==0)&&(j%100!=0)||(j%400==0))
i++;
}
k=i;
return k;
}

int month_day_run(int month_day)
{
int b,B;
{
switch(month_day)//使用传入的参数进行switch
{
case 1:B=0;break;
case 2:B=31;break;
case 3:B=60;break;
case 4:B=91;break;
case 5:B=121;break;
case 6:B=152;break;
case 7:B=182;break;
case 8:B=213;break;
case 9:B=244;break;
case 10:B=274;break;
case 11:B=305;break;
case 12:B=335;break;
}
}
month_day=B;
return month_day;
}

int month_day_ping(int month_day)
{
int b,B;
{
switch(month_day)//使用传入的参数进行switch
{
case 1:B=0;break;
case 2:B=31;break;
case 3:B=59;break;
case 4:B=90;break;
case 5:B=120;break;
case 6:B=151;break;
case 7:B=181;break;
case 8:B=212;break;
case 9:B=243;break;
case 10:B=273;break;
case 11:B=304;break;
case 12:B=334;break;
}
}
month_day=B;
return month_day;
}

void main()
{
int a,b,c,month_day,k; //输入数据
cout<<"请输入年月日(空格分隔):";
cin>>a>>b>>c;
if((a%4!=0)&&(a%100!=0)||(a%400!=0))
{
month_day=month_day_ping(b);//注意参数和返回值的传递
}
if((a%4==0)&&(a%100!=0)||(a%400==0))
{
month_day=month_day_run(b);//注意参数和返回值的传递
}
k=LeapYearNumber(a);//注意参数和返回值的传递
int total_day,date;
total_day=k*366+((a-k)*365)+month_day+c-1;
date=total_day%7;
switch(date)
{
case 0:cout<<"这天是星期日!"<<endl;break;
case 1:cout<<"这天是星期一!"<<endl;break;
case 2:cout<<"这天是星期二!"<<endl;break;
case 3:cout<<"这天是星期三!"<<endl;break;
case 4:cout<<"这天是星期四!"<<endl;break;
case 5:cout<<"这天是星期五!"<<endl;break;
case 6:cout<<"这天是星期六!"<<endl;break;
}
cin>>a;//为了暂停好查看结果
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-24
在最后加上个接受字符语句试一下,一般都是运行出来结果了,但是没有停留又返回设计界面.或者ALT+F5看结果
第2个回答  2010-06-24
int month_day_run(int month_day)
{
int b,B;
{
switch(b)
{
//此段代码的意义是计算输入年份中,当年的月份所对应的天数

b连个初值都没有就开始switch, 唯一的参数置之不理, 这代码写的完全不靠谱啊
第3个回答  2019-01-31
#include
using namespace std;
int main()
{
double result = 0;//共经历的距离
double height = 0;//第十次下落的高度
int firstheight = 100;//初始高度
double temp = 100;//中间变量,存储每次高度
int n = 10;//下落次数
int i;//计数器
for(i=0;i
评论
0
0
加载更多
第4个回答  2010-06-24
顶阳光满窗

不过还有很多需要考虑的问题,比如异常处理,输入不符合规范的数据怎么办等等,也要进行判断,不过针对你的源代码阳光满窗那样修改就可以出来正确结果了(就输入正常数值而言)
相似回答