2 lvyouzi lvyouzi 于 2016.04.16 14:47 提问

求帮助!任意一个年月日,求公元1年1月1日到该日期前一年末总共多少天?

本人C语言初学者,学找些题做,见到这个题编了如下代码,不知道正确的该如何编,求高手帮助!!!

输入任意一个年,月,日,求出公元1年1月1日到该日期前一年的年末总共有多少天?到该日期前一个月的月末总共有多少天,到这一天共有多少天?并求出这一天是星期几?
#include
main()
{
int a,b,c,d,e,s,w,y1,y2,y3,year;
printf("请输入任意年、月、日(以空格隔开)\n");
scanf("%d%d%d",&a,&b,&c);
if((year%4==0 && year%100==0) || year%400==0)
{
s=a-1;
y1=s/4;
y2=s/100;
y3=s/400;
w=(s-y1+y2-y3)*365+(y1-y2+y3)*366+1;
if(b==1)
{c=31;

e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==2)
{c=28;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==3)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==4)
{c=30;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==5)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==6)
{c=30;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==7)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==8)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==9)
{c=30;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==10)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==11)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==12)
{c=30;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }

  }
  else 

{
s=a-1;
y1=s/4;
y2=s/100;
y3=s/400;
w=(s-y1+y2-y3)*365+(y1-y2+y3)*366+1;
printf("请输入月份:");
scanf("%d",&b);
if(b==1)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==2)
{c=29;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==3)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==4)
{c=30;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==5)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==6)
{c=30;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==7)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==8)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==9)
{c=30;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==10)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==11)
{c=31;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }
if(b==12)
{c=30;
printf("请输入日期:");
scanf("%d",&c);
e=w+b+c;
printf("俩年份之间差%d天",&e); }

      }

}

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.16 15:12

看了四行发现一个小错误
if((year%4==0 && year%100==0) || year%400==0) 应该改成if((year%4==0 && year%100!=0) || year%400==0)

qq423399099
qq423399099 printf("俩年份之间差%d天",&e);应该是printf("俩年份之间差%d天",e);
2 年多之前 回复
u012155923
u012155923   2016.04.16 16:19

楼上的很细心啊,判断是否为闰年错了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言实验:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。
要求:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。 简单的循环结构,并结合基姆拉尔森公式,注意月份转换。 下面是源码,仅供参考: #include using namespace std; void month1(int i, int &count) { switch (i) { cas
16.根据输入的日期输出星期几(已知公元1年1月1日星期一)
#include #include using namespace std; int months[]={31,28,31,30,31,30,31,31,30,31,30,31}; int IsLeap( int year) { if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0)) { return 1;//闰年
C 已知1900年1月1日是星期一,输入某年某月某日,求星期几
#include void main() { int y,m,d,n; int a[13],i,sum1,sum2,sum; scanf("%d%d%d",&y,&m,&d); sum1=0;sum2=d;sum=0; for(i=1900;i { if(i%4==0&&i%100!=0||i%400==0) n=366; else n=365; sum1=su
从2000年一月一日算,给一个天数,算出它是多少年月日 星期几
/#include   #include   using namespace std;  bool isLeapYear(int year)                            //判断是否为闰年  { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);  }  int main()
ural1759_计算从公元元年1月1日到某年某月某日的天数
<br />#include <iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; struct node { int y,m,d; }; struct live { node birth,death; }p[101]; int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; bool leap(int y) /
c++实现万年历,从公元1年1月1日开始,这一天是星期一
//从公元元年一月一日是星期一开始计算 //用类实现求万年历的算法 #include #include #include using namespace std; class Calendar { private: int month; int date; string Day[7];//char Day[7][10];//私有成员不能初始化,而且字符数组要想
已知1900年1月1日是星期一,写一个万年历
#include int main() {     int year=0,month=0,weekday=0,sum=0;     printf("请输入年和月:\n");     scanf("%d %d",&year,&month);     for(int y=1900;y         if((y%4==0 && y%100!=0)||y%40
2. 计算出1900年1月1日至当前日期之间总共间隔多少天,将其除以7取余数,该结果即为当月第一天是星期几,按日历格式输出
//输入一个日期,2010-10 输出该月的月历: //********************************** // 10月 //********************************** //日 一 二 三 四 五 六 // 1 2 //3 4 5 6 7 8 9 //10 11 12 13 14 15 16 //17 18 19 20 21 22 23 /
JAVA代码计算1900年到所求年份共多少天。
import java.util.Scanner;public class test11{public static void main(String[]args){ Scanner in=new Scanner(System.in); System.out.println(&quot;请输入所查找的年份:&quot;); int year=in.nextInt(); int sum=0; for(int i =1...
Java实现1900年1月1日到2016年5月7日一共多少天?
public class Date2 { public static void main(String[] args){ int sum=0; for(int year=1900;year<=2015;year++){ if(year%4==0 && year%100!=0 || year%400==0){