求C语言程序,我输入日期(年月日),然后输入前后加减多少天,得出那个日期是多少
#include
main()
{
int y,m,d,a[12],t=0,s,i;
printf("输入你要查询的年月日 空格隔开
");
lop:
scanf("%d%d%d",&y,&m,&d);
a[0]=0;
a[1]=31;
a[3]=31;
a[4]=30;
a[5]=31;
a[6]=30;
a[7]=31;
a[8]=31;
a[9]=30;
a[10]=31;
a[11]=30;
a[12]=31;
if(y%4==0&&y%100!=0) a[2]=29;
else if(y%100==0&&y%400==0) a[2]=29;
else
a[2]=28;
if(m>12||d>a[m]) {printf("错误日期 重新输入!
");
goto lop;}
else
{
for(i=0;i<=m-1;i++)
{
t=t+a[i];
}
s=t+d;
printf("%d年%d月%d号是%d年的第%d天
",y,m,d,y,s);
}
}
以前写的 可能不够简洁
这是阳历的常识:
阳历(即公历),是世界上多数国家通用的历法,由"儒略历"修订而成。儒略历
是公元前46年,古罗马统帅儒略、恺撒决定采用的历法。
阳历,是以地球绕太阳运动作为根据的历法。它以地球绕太阳一周(一回归年)为
一年。一回归年的长度是365.2422日,也就是365天5小时48分46秒,积累4年共有23小时
15分4秒,大约等于一天,所以每4年增加1天,加在2月的末尾,得366天,就是闰年。但
是4年加1天实际回归年多了44分56秒,积满128年左右就又多算了一天,也就是在400年中
约多算了3天。
阳历闰年规定:公元年数可用4整除的,就算闰年;为了要在400年减去多算的3天,
并规定公元世纪的整数,即公元年数是100的整数时,须用400来整除的才算闰年,如1600
年、2000年、2200年、2400年就是闰年。这样就巧妙地在400年中减去了3天,阳历规定每
年都是12个月,月份的大小完全是人为的规定,现在规定每年的1、3、5、7、8、10、12
月为大月,每月31天;4、6、9、11月为小月,每月30天;2月平年是28天,闰年是29天。
归纳上面的得出结论:
阳历:
闰年,2月29天,平年28天。
其它月,1、3、5、7、8、10、12为大月31天。
2、4、6、9、11为小月30天。
能被400整除的是闰年;
除能被100整除的不是闰年(能被400整除的除外)其余能被4整除的是闰年。
所以你只要计算是不是闰年,就可以识别2月份了,所以这个应该不是很难,关键
是闰年。
下面是我花了30分钟写的程序,我一直用C++,由于不知道C支不支持布尔型,所以两个判断的函数返回用整型。你看一下程序能不能运行。我在VC60下编译通过。
#include "stdio.h"
int IsLeapYear(int Year);//判断是不是闰年。
int IsCurrentDate(int Year,int Month,int Day);//是不是正确的日期。
int ReturnNextDay(int Year,int Month,int Day);//返回下一天,也有判断是不是正确的日期。
int LeapYear_Month_SumDay[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年数组,保存各月天数。
void main()
{
int Year=0,Month=0,Day=0,NextDay=0;
printf("pleace enter right Date(example:2005 6 27):
");
scanf("%d%d%d",&Year,&Month,&Day);
NextDay=ReturnNextDay(Year,Month,Day);
switch (NextDay)
{
case 0: printf("not a current date
");
break;
case 1:
if (Month==12)
{
Year++;
Month=1;
}
else
{
Month++;
}
break;
}
if (NextDay!=0) printf("The you input next date is %d-%d-%d.Thank use bye bye!
",Year,Month,NextDay);
}
int IsLeapYear(int Year)
{
if (Year%4==0)
{
if (Year%400) return 1;
else
{
if (Year%100==0) return 0;
else return 1;
}
}
else
{
return 0;
}
}
int IsCurrentDate(int Year,int Month,int Day)
{
if ((Year9999) && (Month>12) && (Month31) )return 0;
else return 1;
}
int ReturnNextDay(int Year,int Month,int Day)
{
int ThisMonthSumDay;
if (IsCurrentDate(Year,Month,Day)==1)
{
ThisMonthSumDay=LeapYear_Month_SumDay[Month-1];
if (Month==2)
{
if (IsLeapYear(Year)==0) ThisMonthSumDay--;
}
if (Day<ThisMonthSumDay)
{
return ++Day;
}
else
{
if (Day==ThisMonthSumDay)
{
return 1;
}
else
{
return 0;
}
}
}
else
{
return 0;
}
}
#include<conio.h>
#include<stdlib.h>
main()
{
int year,month,day;
int leapyear=0;//闰年时使用
int daytime=0;
int sum;
static int month_date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入日期:(例如:2010 5 27)");
scanf("%d%d%d",&year,&month,&day);
if(year<=0||month>12||month<1)//判断输入是否正确
{
printf("Error!\n");
getch();
exit(0);
}
if(year%400==0||(year%4==0&&year%100!=0))//判断是否为闰年
leapyear=1;//是就加1
if(month==2)//判断日是否输入正确,2月是特殊的因为分闰年和平年
{ if((month_date[month-1]+leapyear)<day||day<=0)
{
printf("Error!\n");
getch();
exit(0);
}
}
if(month!=2)//当输入不是2月时,判断输入
{
if(month_date[month-1]<day||day<=0)
{
printf("Error!\n");
getch();
exit(0);
}
}
printf("\n请输入天数:");
scanf("%d",&daytime);//输入第N天后
if(daytime<0)
{
printf("Error!\n");
getch();
exit(0);
}
sum=daytime+day;//当前日期与N天相加
do
{
if(month==2)//判断当月是不是二月份
month_date[month-1]+=leapyear;
if(sum>month_date[month-1])
{
sum-=month_date[month-1];
month++;//超过当月天数,加一个月
if(month==13)//当月份超过12月时,重新返到1月
{
year++;//加一年
if(year%400==0||(year%4==0&&year%100!=0))//判断加一年后是不是闰年
leapyear=1;
else
leapyear=0;//不是闰年则为0
month=1;//因为12月的下一个月是1月
}
}
}while(sum>month_date[month-1]);//当加起来的天数少于当月的天数就停止循环
day=sum;
printf("\n第%d天后是%d %d %d",daytime,year,month,day);//输出
getch();
}
要求能识别出无用的日期.比如有时2月有28天的.29天的.如2010年2月29日.是错误的.能提示出输入错误.还有日期有30天.31天.一旦错误.都能识别.
C语言输入N个整数并求和的程序怎么写?
以下是一个简单的C语言程序,用于输入N个整数并求和:在这个程序中,我们首先定义了两个整型变量num和N,用于存储用户输入的数和数的个数。然后,我们使用printf函数输出提示信息,使用scanf函数从用户处读取数的个数N。然后,我们使用if语句检查N是否在有效范围内(大于0且小于或等于100)。如果N不在有...
如何用c语言编写程序,输入一个数n不一定是整数,判定n是小于0,等于0还是...
```c include <stdio.h> int main() { double n;printf("请输入一个数:");scanf("%lf", &n);if (n < 0) { printf("输入的数是负数\\n");} else if (n == 0) { printf("输入的数是零\\n");} else { printf("输入的数是正数\\n");} return 0;} ```在程序中,首先定...
c语言从键盘输入字符串的步骤是什么?
1.首先我们新建一个dev C++的项目。2.接下来在项目中新建C语言程序文件。3.然后在C语言文件中声明一个字节数组。4.接下来我们通过printf函数提示用户输入字符串,通过scanf接收用户输入的字符串。5.接着在通过printf函数输出用户输入的内容。6.最后运行C语言程序,我们输入内容以后就可以输出了。这样就解...
编写一个C程序,输入(我是一名大学生,我喜爱C语言)
include <stdio.h>#include <string.h>#include <stdlib.h->int main(){\/\/我头像,惊喜 char str[100]=""; gets(str); \/\/输入字符串 puts(str); \/\/输出字符串 system("pause"); \/\/专业解答 return 0;}运行程序,窗口输入:我是一名大学生,我喜爱C语言 程序打印...
c语言程序,输入年月日,判断这一天是这一年的第几天,同时判断这一天是星...
cat ex1.c\/* 程序分析:以3月5日为例,应该先把前两个月的加起来, 然后再加上5天即本年的第几天,特殊情况,闰年且输入 月份大于3时需考虑多加一天。*\/#include<stdio.h>int main(){ int day, month, year, sum, leap; printf("\\nplease input year,month,day\\n")...
c语言程序设计问题 当我输入h=10,n=2时,输出的答案为30,但根据我的公式...
d=3*h-(2*h*pow(1\/2,n));修改为 d=3*h-(2*h*pow(1.0\/2,n));这是因为,1\/2时,编译器认为 1和2 为int,所以1\/2也为int型,为0.
用C语言编写程序,输入一个字符,输出它的字符值和ASCII值
1、计算机中的所有数据都是以二进制存储的,因此字符也是以二进制存储且占用一个字节,在c语言中可以把char型当作只有一个字节的有符号整数,8位有符号,最大正值就是127了。2、例如:可以这样使用循环的 include <stdio.h> include <stdlib.h> int main(){ char c;int i;printf("please input ...
c语言编写程序;输入一个摄氏温度,要求输出华氏温度。公式为f=9\/5*c+...
程序如下:include <stdio.h> int main(){ int f;float c;printf("请输入一个华氏温度\\n");scanf_s("%d", &f);c = (float)(f - 32) * 5 \/ 9;printf("它的摄氏温度为:%.2f", c);} 如图:调试通过:
用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制...
printf("请输入一个三位数:");scanf("%d",&num);printf("转换为几进制? 1--五进制 2--八进制 3--十五进制 0--退出\\t");scanf("%d",&choice);char *result = "";switch(choice){ case 1:result = toQuinary(num);printf("%s\\n",result);break;case 2:result = toOctonary(...
如何用C语言编程序:输入三个数,判断是否构成三角形
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:。int a, b, c;scanf("%d%d%d", &a, &b, &c);if ( a + b > c && a + c > b && b + c > a)printf("能");else printf("不能");return 0;3、编译器运行test....
闵绿安吉: 就这么写的,没调试,你自己调一下好吧#include <stdio.h> void main() {int year,month,date;scanf("%d-%d-%d",&year,&month,&date);printf("%d-%d-%d",year,month,date); if(year<0||year>3000)printf("Error!");if(month>12||month<1)...
南海区15936936513: C语言题目:设计一个程序输入年月日 输出下一天的年月日 - ?
闵绿安吉: #include using namespace std; struct date { int y; int m; int d; }; date tomorrow(date a); bool isleapyear(int year); int main() { date a; scanf("%d %d %d",&a.y,&a.m,&a.d); a=tomorrow(a); printf("%d %d %d",a.y,a.m,a.d); } date tomorrow(date a) ...
南海区15936936513: 求一个输入年月日,可以显示该月份日历的C语言程序! 求大神帮忙,谢谢! - ?
闵绿安吉: #include<stdio.h>/*得到所输入年月的第一天是星期几0~6*/ int getdate(int y,int m);/*判断所输入的是否是闰月,是则返回1,否则返回0*/ int leap(int y);/*打印输入月份月历表*/ void print(int y,int m);int main() {int y,m;printf("输入年份和月...
南海区15936936513: C语言输出用户输入的年月日 - ?
闵绿安吉: 就用1行字符串: main() { char str[200]; printf("input 16 Feb 2007 such date\n"); gets(str); printf("%s",str); return 0; }
南海区15936936513: 用c语言从键盘任意输入一个日期(年月日),输出第二天的日期(年月日). - ?
闵绿安吉: 源程序如下:#include "pch.h"#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;int main(){ int s[2][13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31, }; int year = ...
南海区15936936513: 怎样用C语言编写:输入年份、月份、日期,运行得到的是这一天是星期几 - ?
闵绿安吉: #include<stdio.h>#include<math.h>main(){int a,b,c,k,g;int x,y;printf("请输入年月日,年月日之间用逗号隔开:");scanf("%d,%d,%d",&a,&b,&c);x=a/100;//x代表这一年的前两位y=a%100;//y代表这一年的后两位k=x/4+y-x*2+y/4+(26*b+26*1)/10+c-1;g=k%7;printf("这一天是星期%d\n",g);}
南海区15936936513: 求一个C语言程序 输入年月日知道那天是星期几? 求比较简单点的新手能看懂的 - ?
闵绿安吉: 算法步骤: (1) 输入年份 year(2) 根据公式:d=year+(year-1)/4-(year-100)/100+(yrar-1)/400 ; d=d%7; d=0 则表示为Sunday,d=1 表示Monday 计算这一年的元旦是星期几;(3) 输入月份Month和日期day ,计算该日期是这个年份中的第几天...
南海区15936936513: 怎样用c语言求日期?
闵绿安吉: 注意:输入年月日之间要有空格 #include <stdio.h> void main() { int y,m,d,weekid; scanf("%d%d%d",&y,&m,&d); if(m<=2) {m+=12;y--;} weekid=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1; printf("%d\n",weekid); }
南海区15936936513: 编辑一个C语言程序:输入任意年月日,判断该天是这一年的第几天. - ?
闵绿安吉: 已经修改过了:#include "stdio.h" main() { int day,month,year,sum,leap; printf("please input year,month,day(like 2000 10 01):"); scanf("%d%d%d",&year,&month,&day); if( (month>12||day>31)||/*the day (month>12 or day>31) is not exist!*/ ...
南海区15936936513: C语言 输入年月日:知道它在一年中是哪一天.求每步的详细步骤(有代码) - ?
闵绿安吉: #include void main() { int a[12]={0,31,28,31,30,31,30,31,31,30,31,30}; //1~11月每月天数数组 int year,month,date,tot=0; scanf("%d%d%d",&year,&month,&date); //输入年月日 for(int i=0;i2)) //判断是否闰年和是否大于2月,如果是则加1天(因为2月29天了,前面数组里的是28天少加了一天) { tot++; } tot=tot+date; //加日的天数 printf("\n%d\n",tot); //打印出所在天数位置 }