c语言闰年
- 格式:docx
- 大小:13.10 KB
- 文档页数:1
两个日期之间天数的计算C语言程序以下是一个计算两个日期之间天数的C语言程序示例:```c#include <stdio.h>//检查是否为闰年int isLeapYear(int year)if (year % 400 == 0 , (year % 4 == 0 && year % 100 != 0)) return 1; // 是闰年} elsereturn 0; // 不是闰年}//计算2024年6月的天数int getDaysOfMonth(int year, int month)int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (month == 2 && isLeapYear(year))return 29; // 闰年2月} elsereturn days[month - 1];}//计算从公元第一年到指定年份的天数int getYearDays(int year)int sum = 0;for (int i = 1; i < year; i++)if (isLeapYear(i))sum += 366; // 闰年366天} elsesum += 365; // 平年365天}}return sum;//计算两个日期之间的天数int getDaysBetweenDates(int year1, int month1, int day1, int year2, int month2, int day2)int days = 0;//计算第一个日期到年底的天数days += getDaysOfMonth(year1, month1) - day1;for (int i = month1 + 1; i <= 12; i++)days += getDaysOfMonth(year1, i);}//计算第二个日期到年初的天数for (int i = 1; i < month2; i++)days += getDaysOfMonth(year2, i);}days += day2;//计算两个年份之间的天数if (year1 != year2)days += getYearDays(year2) - getYearDays(year1 + 1); }return days;int maiint year1, month1, day1;int year2, month2, day2;printf("请输入第一个日期(年月日):");scanf("%d %d %d", &year1, &month1, &day1);printf("请输入第二个日期(年月日):");scanf("%d %d %d", &year2, &month2, &day2);int days = getDaysBetweenDates(year1, month1, day1, year2, month2, day2);printf("两个日期之间相差 %d 天\n", days);return 0;```这个程序采用了分函数的方式来计算闰年、2024年6月的天数、从公元第一年到指定年份的天数,以及两个日期之间的天数。
闰年算法:
必备的基础知识:一年中1、3、5、7、8、10、12月都是31天,4、6、9、11月都是30天,2月闰年29天,不闰年28天,闰年一年366天,不闰年一年365天。
(偶然发现有些人不太了解一年中各个月份有多少天,有必要讲清楚,不然这类题没办法做)
判断闰年:一种是能被4整除同时不能被100整除的年份,或者能被400整除的年份。
if(((year%4 == 0)&&(year%100 != 0)) || (year%400 == 0))
例题:
从键盘上输入一个表示年份的整数,判断该年份是否是闰年,判断后的结果显示在屏幕上。
程序:
void main()
{
int year;
printf(“请输入年份:\n”);
scanf(“%d”,&year);
if(((year%4 == 0)&&(year%100 != 0)) || (year%400 == 0))
printf(“%d是闰年\n”,year);
else
printf(“%d不是闰年\n”,year);
}。
如何判断闰年c语言在C语言中,可以通过编写一个函数来判断一个年份是否是闰年。
闰年的判断规则是:如果一个年份能被4整除,但不能被100整除,或者能被400整除,那么这个年份就是闰年。
以下是一个简单的C语言函数,用于判断给定的年份是否是闰年:c复制代码#include<stdio.h>int is_leap_year(int year) {if (year % 4 == 0) {if (year % 100 == 0) {if (year % 400 == 0) {return1; // 是闰年} else {return0; // 不是闰年}} else {return1; // 是闰年}} else {return0; // 不是闰年}}int main() {int year;printf("请输入一个年份:");scanf("%d", &year);if (is_leap_year(year)) {printf("%d年是闰年。
\n",year);} else {printf("%d年不是闰年。
\n",year);}return0;}在这个程序中,我们首先定义了一个函数is_leap_year(),它接受一个整数参数year,表示要判断的年份。
函数内部使用了嵌套的if语句来判断这个年份是否是闰年,并返回相应的结果。
在main()函数中,我们使用scanf()函数从用户输入中读取一个年份,然后调用is_leap_year()函数来判断这个年份是否是闰年,并输出相应的结果。
计算天数c语言计算天数的C语言代码如下:```c#include <stdio.h>int main() {int year, month, day;int days = 0;printf("请输入年份:" scanf("d" &year);printf("请输入月份:" scanf("d" &month);printf("请输入日期:" scanf("d" &day);// 计算年份之前的天数for (int i = 1; i < year; i++) {if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {days += 366; // 闰年} else {days += 365; // 平年}}// 计算当年之前的月份天数int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){daysInMonth[1] = 29; // 闰年2月有29天}for (int i = 0; i < month - 1; i++) {days += daysInMonth[i];}// 加上当月的天数days += day;printf("从公元元年1月1日到%d年%d月%d日共有%d天"" year, month, day, days);return 0;}```该程序通过用户输入的年、月、日来计算从公元元年1月1日到指定日期的天数。
首先使用循环计算出指定年份之前的天数,再根据指定年份是否是闰年来计算当年之前的月份天数。
一,闰年问题#include<stdio.h>void main(){int a;printf("please input the data of years:");scanf("%d",&a);if(a%400==0||(a%4==0&&a%100!=0))printf("\n闰年:%d",a);}二,数字整除问题#include<stdio.h>void main(){int a=1,i=0;printf("能被7整除的数:\n");while(a<=100){if(a%7==0){printf("%4d",a);i++;if(i%5==0)printf("\n");}a++;}}三,五层递加三角#include<stdio.h>void main(){int a,b,n=1;while(n<=5){a=1,b=1;while(a<=5-n){printf(" ");a++;}while(b<=2*n-1){printf("*");b++;}printf("\n");n++;}}四,水仙花数#include<stdio.h>void main(){int a,m,n,q,p=1;a=100;while(a<1000){m=a/100;n=a/10-m*10;q=a-m*100-n*10;if(a==m*m*m+n*n*n+q*q*q){printf("%5d",a);if(p%2==0)printf("\n");p++;}a++;}}五,最小公倍数#include<stdio.h>int gy(int x,int y){int r;if(x<y){r=x;x=y;y=r;}r=x%y;while(r!=0){x=y;y=r;r=x%y;}return (y);}int gb(int m,int n){int p;p=m*n/gy(m,n);return (p);}void main(){int a,b,c;printf("please enter the data you want to handle:");scanf("%d,%d",&a,&b);c=gb(a,b);printf("%d",c);}六,1+1/3+1/5.....#include<stdio.h>void main(){int n,i;float sum=0.0;scanf("%d",&n);i=1;while(i<=n){sum +=___1.0/(2*i-1);i++;}printf("%.3f",sum);}七,1+1/(1+2)+1/(1+2+3).....#include<stdio.h>void main(){int a,b,c=0;float d=0.0;a=1;scanf("%d",&b);while(a<=b){c+=a;a++;d+=1.0/c;}printf("%d\n",c);printf("%.3f",d);}八,1/(1*2*3*4....*b)#include<stdio.h>void main(){int a,b,c=1;float d;scanf("%d",&b);a=1;while(a<=b){c*=a;a++;d=1.0/c;}printf("%d\n",c);printf("%.3f\n",d);}九,从大到小排列数组,求和,取极差#include<stdio.h>void main(){int a[10],m=0,i,j,t,c;float d=0.0;while(m<10){scanf("%d",&a[m]);m++;}for(i=0;i<10;i++)printf("%3d",a[9-i]);printf("\n");for(i=0;i<10;i++)for(j=0;j<9-i;j++){if(a[j]<a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}for(i=0;i<10;i++)printf("%3d",a[i]);c=a[0]-a[9];printf("\n%d",c);for(i=0;i<10;i++)d+=a[i];printf("\n%.3f",d/10.0);}十,矩阵转置及其元素最大值#include<stdio.h>void main(){int i,j,a[2][3],b[3][2],max;for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<2;i++){for(j=0;j<3;j++)printf("a[%d][%d]=%d ",i,j,a[i][j]);printf("\n");}for(i=0;i<2;i++){for(j=0;j<3;j++){b[j][i]=a[i][j];}}for(i=0;i<3;i++){for(j=0;j<2;j++)printf("b[%d][%d]=%2d ",i,j,b[i][j]);printf("\n");}max=a[0][0];for(i=0;i<2;i++)for(j=0;j<3;j++){if(max<a[i][j])max=a[i][j];}printf("max=%d",max);}十一,矩阵对角线元素和#include<stdio.h>void main(){int i,j,m=0,a[3][3];for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("a[%d][%d]=%2d ",i,j,a[i][j]);printf("\n");}printf("对角线之和为:");for(i=0;i<3;i++)m+=a[i][i];printf("%d",m);}十二,斐波那契数列#include<stdio.h>void main(){int fib[20]={1,1};int i;for(i=2;i<20;i++)fib[i]=fib[i-1]+fib[i-2];for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%5d",fib[i]);}}十三,杨辉三角#include<stdio.h>void main(){int a[10][10],i,j;for(i=0;i<10;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<10;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}}十四,101-200之间的素数#include<stdio.h>void main(){int sum,num,i;for(num=101;num<=200;num++){sum=0;for(i=2;i<num;i++){if(num%i==0)sum++;}if(sum==0)printf("%5d",num);}}#include<stdio.h>void main(){int i,j,k;for(i=0;i<=20;i++)for(j=0;j<=33;j++)for(k=0;k<=99;k=k+3)if((i+j+k==100)&&(15*i+9*j+k==300))printf("i=%d j=%d k=%d\n",i,j,k);}十六,猴子吃桃#include<stdio.h>void main(){int x1,x2=1,day;for(day=9;day>0;day--){x1=2*(x2+1);x2=x1;}printf("第一天的桃子数:%d\n",x1);5.1 用π/4≈1-1/3+1/5-1/7+…公式求π的值,直到某一项的绝对值小于10-6为止。
C语言第二次作业1.某年如果能被4整除,但不能被100整除,或者能被400整除的年是闰年。
判断从键盘输入的年份是否为闰年。
一、实验目的:掌握if else选择结构二、实验容:#include<stdio.h>int main(){int x;printf("请输入年份:\n");scanf("%d",&x);if(x%4==0&&x%100!=0||x%400==0)printf("是闰年.\n");elseprintf("不是闰年.\n");return 0;}三:调试结果:2、某个自动加油站有‘a’,‘b’,‘c’三种汽油品种,单价分别为6.92,7.37,7.64(元/公升),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠,请编程序针对用户输入加油量m,汽油品种y和服务类型z(‘f’—自动加,‘m’—自己加,‘e’—协助加),(注:‘f’—自动加无优惠),计算应付款pay。
(请用多分支选择switch语句)。
一、实验目的:掌握switch语句二、实验容:#include<stdio.h>#include<math.h>int main(){float p,q,m,pay;char y,z;printf("请输入汽油品种(y),服务类型(z),加油量(m)\n");scanf("%c,%c,%f",&y,&z,&m);switch(y){case'a':p=6.92;break;case'b':p=7.37;break;case'c':p=7.64;break;}switch(z){case'f':q=1;break;case'm':q=0.95;break;case'e':q=0.9;break;}pay=p*q*m;printf("pay=%.2f\n",pay);return 0;}三:调试结果:3、输入三角形三边,判断该三角形是什么三角形(等边,等腰,普通和直角)一、实验目的:掌握switch语句二、实验容:#include<stdio.h>int main(){int a,b,c;printf("请输入三角形的三边长:\n");scanf("%d,%d,%d",&a,&b,&c);if(a==b&&b==c)printf("此三角形是等边三角形");else if(a==b||b==c||a==c)printf("此三角形是等腰三角形");else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)printf("此三角形是直角三角形");elseprintf("此三角形是普通三角形");return 0;}三、调试结果4. 编写一个菜单程序,输入1~3以进入相应的选择项。
C语⾔实现⽇期转换问题(要求考虑闰年的问题)按如下函数原型⽤函数编程解决如下的⽇期转换问题(要求考虑闰年的问题):/* 函数功能:对给定的某年某⽉某⽇,计算它是这⼀年的第⼏天函数参数:整型变量year、month、day,分别代表年、⽉、⽇函数返回值:这⼀年的第⼏天 */int DayofYear(int year, int month, int day);/* 函数功能:对给定的某⼀年的第⼏天,计算它是这⼀年的第⼏⽉第⼏⽇函数⼊⼝参数:整型变量year,存储年整型变量yearDay,存储这⼀年的第⼏天函数出⼝参数:整型指针pMonth,指向存储这⼀年第⼏⽉的整型变量整型指针pDay,指向存储第⼏⽇的整型变量函数返回值:⽆ */void MonthDay(int year, int yearDay, int *pMonth, int *pDay);输出如下菜单,⽤switch语句实现根据⽤户输⼊的选择执⾏相应的操作。
1. year/month/day -> yearDay2. yearDay -> year/month/day3. ExitPlease enter your choice:输⼊提⽰信息:"Please enter year, month, day:""Please enter year, yearDay:"输⼊格式:"%d,%d,%d""%d,%d"输出提⽰信息和格式:"yearDay = %d\n""month = %d, day = %d\n"1 #include <stdio.h>2 #include <stdlib.h>3int DayofYear(int year, int month, int day);4void MonthDay(int year, int yearDay, int *pMonth, int *pDay);5void Menu(void);6int dayTab[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}};7int main()8 {9int year, month, day, yearDay;10char c;11 Menu(); /* 调⽤Menu函数显⽰⼀个固定式菜单 */12 c = getchar(); /* 输⼊选择 */13switch (c) /* 判断选择的是何种操作 */14 {15case'1':16 printf("Please enter year, month, day:");17 scanf("%d,%d,%d", &year, &month, &day);18 yearDay = DayofYear(year, month, day);19 printf("yearDay = %d\n", yearDay);20break;21case'2':22 printf("Please enter year, yearDay:");23 scanf("%d,%d", &year, &yearDay);24 MonthDay(year, yearDay, &month, &day);25 printf("month = %d,day = %d\n", month, day);26break;27case'3':28 exit(0); /* 退出程序的运⾏ */29default:30 printf("Input error!");31 }32return0;33 }34/* 函数功能:对给定的某年某⽉某⽇,计算并返回它是这⼀年的第⼏天 */35int DayofYear(int year, int month, int day)36 {37int i, leap;38/* 若year为闰年,即leap值为1,则⽤第1⾏元素dayTab[1][i]计算;39否则leap值为0,⽤第0⾏dayTab[0][i]计算 */40 leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);41for (i = 1; i < month; i++)42 {43 day = day + dayTab[leap][i];44 }45return day; /* 返回计算出的day的值 */46 }47/* 函数功能:对给定的某⼀年的第⼏天,计算它是这⼀年的第⼏⽉第⼏⽇ */48void MonthDay(int year, int yearDay, int *pMonth, int *pDay)49 {50int i, leap;51 leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0); 52for (i = 1; yearDay > dayTab[leap][i]; i++)53 {54 yearDay = yearDay - dayTab[leap][i];55 }56 *pMonth = i; /* 将计算出的⽉份值赋值给pMonth所指向的变量 */57 *pDay = yearDay; /* 将计算出的⽇号赋值给pDay所指向的变量 */58 }59/* 函数功能:显⽰菜单 */60void Menu(void)61 {62 printf("1. year/month/day -> yearDay\n");63 printf("2. yearDay -> year/month/day\n");64 printf("3. Exit\n");65 printf("Please enter your choice:");66 }⽅法⼀1 #include<stdio.h>2int DayofYear(int year, int month, int day);3void MonthDay(int year, int yearDay, int *pMonth, int *pDay);4 main()5 {6int n,year, yearDay, month, day,Month, Day;7do8 {9 printf("1. year/month/day -> yearDay\n");10 printf("2. yearDay -> year/month/day\n");11 printf("3. Exit\n");12 printf("Please enter your choice:");13 scanf("%d", &n);14switch (n)15 {16case1:17 {18 yearDay = DayofYear(year, month, day);19 printf("yearDay = %d\n", yearDay);20break;21 }22case2:23 {24 MonthDay(year, yearDay, &Month, &Day);25break;26 }27 }28 }while(n!=3);29 }30int DayofYear(int year, int month, int day)31 {32int yearDay = 0, i;33int days[12];34 printf("Please enter year, month, day:");35 scanf("%d,%d,%d", &year, &month, &day);36if ((year % 4 == 0&&year%100!=0)||(year%100==0&&year%400==0))37 {38 days[0]=31;39 days[1]=29;40 days[2]=31;41 days[3]=30;42 days[4]=31;43 days[5]=30;44 days[6]=31;45 days[7]=31;46 days[8]=30;47 days[9]=31;48 days[10]=30;49 days[11]=31;50 }51else52 {53 days[0]=31;54 days[1]=28;55 days[2]=31;56 days[3]=30;57 days[4]=31;58 days[5]=30;59 days[6]=31;60 days[7]=31;61 days[8]=30;62 days[9]=31;63 days[10]=30;64 days[11]=31;65 }66for (i = 0; i < month - 1; i++)67 {68 yearDay += days[i];69 }70 yearDay += day;71return yearDay;72 }73void MonthDay(int year, int yearDay, int *pMonth, int *pDay)74 {75int month = 0, day;76int days[12];77 printf("Please enter year, yearDay:");78 scanf("%d,%d", &year, &yearDay);79if ((year % 4 == 0&&year%100!=0)||(year%100==0&&year%400==0))80 {81 days[0]=31;82 days[1]=29;83 days[2]=31;84 days[3]=30;85 days[4]=31;86 days[5]=30;87 days[6]=31;88 days[7]=31;89 days[8]=30;90 days[9]=31;91 days[10]=30;92 days[11]=31;93 }94else95 {96 days[0]=31;97 days[1]=28;98 days[2]=31;99 days[3]=30;100 days[4]=31;101 days[5]=30;102 days[6]=31;103 days[7]=31;104 days[8]=30;105 days[9]=31;106 days[10]=30;107 days[11]=31;108 }109do110 {111 yearDay -= days[month];112 month++;113 }114while (yearDay >= days[month]);115 day = yearDay;116 printf("month = %d, day = %d\n", month+1, day);117 }⽅法⼆。
c语言的条件判断摘要:一、条件判断概述二、C 语言条件判断的语法1.关系运算符2.逻辑运算符三、if-else 语句1.单分支if 语句2.双分支if-else 语句3.多分支if-else if 语句四、switch 语句五、条件运算符六、实战案例1.计算阶乘2.判断闰年正文:C 语言是一种功能强大的编程语言,条件判断是其中重要的编程技巧之一。
本文将详细介绍C 语言的条件判断。
一、条件判断概述条件判断是编程中的一种逻辑控制结构,根据给定的条件执行不同的代码块。
C 语言提供了多种条件判断语句,如if-else 语句、switch 语句和条件运算符等。
二、C 语言条件判断的语法1.关系运算符在C 语言中,关系运算符用于比较两个值的大小。
主要包括以下几种:- == 等于- != 不等于- > 大于- < 小于- >= 大于等于- <= 小于等于2.逻辑运算符逻辑运算符用于组合多个条件,主要包括以下几种:- && 逻辑与- || 逻辑或- ! 逻辑非三、if-else 语句if-else 语句是C 语言中最常用的条件判断语句。
根据给定的条件执行相应的代码块。
1.单分支if 语句```cif (条件) {代码块;}```2.双分支if-else 语句```cif (条件) {代码块1;} else {代码块2;}```3.多分支if-else if 语句```cif (条件1) {代码块1;} else if (条件2) {代码块2;} else {代码块n;}```四、switch 语句switch 语句是一种简洁的条件判断语句,适用于需要判断多个条件的情况。
```cswitch (变量) {case 条件1:代码块1;break;case 条件2:代码块2;break;...default:代码块n;break;}```五、条件运算符条件运算符是一种简化的if-else 语句,主要用于简化代码。
c语言判断是否为闰年
c语言判断是否为闰年:第一种:条件嵌套语句(三个if…else…) 如果普通年能被4整除但不能被100整除,则为闰年,例如2020年为闰年
如果世纪年可被400整除,则为闰年,例如2000年为闰年
c语言判断是否为闰年:第二种则是直接条件判断,if…else if…else if…else
c语言判断是否为闰年:第三种则是如果能被4整除但不能被100整除或者能被400整除两个条件满足其中一个则为闰年闰年(leap year),在公历(格里历)或夏历中有闰日的年份,以及在中国旧历农历中有闰月的年份。
地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。
公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,于第四年加于2月,使当年的历年长度为366日,这一年就为闰年。
闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。
补上时间差的年份为闰年。
闰年包括在公历(格里历)或夏历中有闰日或闰月的年份。
闰年有366天。
地球绕太阳一圈需要:365天5小时48分46秒,因为365天5小时48分46秒=365天6小时,为了方便,平年365天,所以为了补时间的差异,每隔4年有闰年,闰年366天,闰年的2月29天。