C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出。
先做一个函数,计算1900年1月1日到该天的天数,然后用膜除求出星期几并输出。
具体代码如下:
#include #include int Day(int y,int m,int d);int main(int argc, char *argv[]) {int i; //循环变量int year,month,day; //读取用户输入的年月日int days; //储存从1900-1-1到该天的天数int week=0; //储存求余后的星期//字符串组合输出星期char b[]={"星期"};char c[7][4]={"日","一","二","三","四","五","六"};loop:printf("请输入年 月 日:(空格分隔)
");scanf(" %d%d%d",&year,&month,&day);days=Day(year,month,day);//增强程序的健壮性if(days==-1){printf("输入格式有误,");fflush(stdin); //防止用户输入字母等其他非数字字符goto loop;}else{week=days%7; //用求余计算星期几printf("%d年%d月%d日是%s%s
",year,month,day,b,c[week]);}system("pause");return 0;}//函数功能:输入年月日,输出1900-1-1到该天的天数,-1位输入不合法int Day(int y,int m,int d){int i;int r=0; //储存1900到该天的闰年个数int a[]={31,28,31,30,31,30,31,31,30,31,30}; //m给每出月的天数if(y>=1900 && m>0 && m0 && d<32){for(i=1900;i<=y;i++) //计算闰年的个数{if(i%400==0||i%100!=0&&i%4==0)r++;}for(i=0;i<m-1;i++) //统计当年1月1日到当月的天数{d+=a[i];}if((y%400==0||y%100!=0&&y%4==0)&&m<3) //如果当年是闰年但不到二月就不能算进去r--;return 365*(y-1900)+r+d;}elsereturn -1;}
用蔡勒公式即可:
#include
int main ()
{
int y, m, d, c, w;
printf ("输入年 月 日(空格间隔):");
scanf ("%d %d %d", &y, &m, &d);
if (m ==1 || m == 2)
{ //判断月份是否为1或2y--;m += 12;}
c = y / 100;
y = y - c * 100;
w = (c / 4) - 2 * c + (y + y / 4) + (13 * (m + 1) / 5) + d - 1;
while (w < 0) w += 7;
w %= 7;
if (w == 0) printf ("星期日");
else printf ("星期%d", w);
return 0;
}
方法二:
#include
void main ()
{
int y,m,d,c,s,w;
printf("请输入8位年月日,以空格隔开:");
scanf("%d%d%d",&y,&m,&d);
if (m==1) c=d;
else if (m==2) c=31 d;
else if (m==3) c=31 28 d;
else if (m==4) c=31 28 31 d;
else if (m==5) c=31 28 31 30 d;
else if (m==6) c=31 28 31 30 31 d;
else if (m==7) c=31 28 31 30 31 30 d;
else if (m==8) c=31 28 31 30 31 30 31 d;
else if (m==9) c=31 28 31 30 31 30 31 31 d;
else if (m==10) c=31 28 31 30 31 30 31 31 30 d;
else if (m==11) c=31 28 31 30 31 30 31 31 30 31 d;
else if (m==12) c=31 28 31 30 31 30 31 31 30 31 30 d;
if (m>2)
{if (y0==0) {if (y@0==0) c=c 1;}
else if (y%4==0) c=c 1;}
s=(y-1)*365 (y-1)/4-(y-1)/100 (y-1)/400 c;
w=s%7;
switch (w)
{
case 0: printf("星期日");break;
case 1: printf("星期一");break;
case 2: printf("星期二");break;
case 3: printf("星期三");break;
case 4: printf("星期四");break;
case 5: printf("星期五");break;
case 6: printf("星期六");break;
printf("");
}
}
扩展资料:
C语言日期函数,日期处理函数:
定义一个表示日期的结构体类型,再分别定义函数完成下列功能:计算某一天是对应年的第几天,这一年一共多少天;计算两个日期之间相隔的天数。两个日期由键盘输入。
算法思想:
设定结构体类型表示日期类型名为 Date,利用 typedef 将其定义为日期型类型名,有三个整型类型的成员分别表示年、月、日。
设定函数计算输入的日期是这一年的第几天。函数的形参为日期型变量,函数体中设定整型数组存放每个月的天数,二月份的天数为 28 天。
设定函数判断年份是否为闰年以决定二月份的天数。根据输入的日期月份,在数组中将相应的月份天数求和,假日曰期即为天数。
设定函数完成两个日期的比较,比较形参 d 和 s 两个日期的大小。首先比较年,同年的比较月,同月的比较日。变量 start 保存输入的小的日期年份,end 保存输入日期大的年份,然后计算两个日期之间的天数。
程序由 6 个函数构成,yearday() 函数计算某年的天数,monthday() 函数计算某年二月份的天数,dayofyeaK() 函数计算某日期是某年的第几天。
cmpdate() 函数比较两个日期的大小,interday() 函数计算两个日期之间的天数。
dayofyear() 函数调用 monthday() 函数,interday() 函数调用 cmpdate() 函数。
yearday() 函数、dayofyear() 函数;主函数调用 yearday() 函数、dayofyear() 函数、interday() 函数。
void main ()
{
int y,m,d,c,s,w;
printf("请输入8位年月日,以空格隔开:");
scanf("%d%d%d",&y,&m,&d);
if (m==1) c=d;
else if (m==2) c=31+d;
else if (m==3) c=31+28+d;
else if (m==4) c=31+28+31+d;
else if (m==5) c=31+28+31+30+d;
else if (m==6) c=31+28+31+30+31+d;
else if (m==7) c=31+28+31+30+31+30+d;
else if (m==8) c=31+28+31+30+31+30+31+d;
else if (m==9) c=31+28+31+30+31+30+31+31+d;
else if (m==10) c=31+28+31+30+31+30+31+31+30+d;
else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;
else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;
if (m>2)
{if (y%100==0) {if (y%400==0) c=c+1;}
else if (y%4==0) c=c+1;}
s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;
w=s%7;
switch (w)
{
case 0: printf("星期日");break;
case 1: printf("星期一");break;
case 2: printf("星期二");break;
case 3: printf("星期三");break;
case 4: printf("星期四");break;
case 5: printf("星期五");break;
case 6: printf("星期六");break;
printf("\n");
}
}
void main( )
{
int year=2006,month=1,day=28,total,week,i;
bool leap=0;
leap = (year%400==0)| (year%100!=0) & (year%4==0);
week =1; //起始日 1979-12-31是星期一
total = year-1980+(year-1980+3)/4; //求平(闰)年累计的总天数
for (i=1;i<=month-1;i++) //当年的累计天数
switch (i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: total+=31;
break;
case 4:
case 6:
case 9:
case 11: total+=30;
break;
case 2: if (leap)
total+=29;
else
total+=28;
break;
}
total = total+day; //当月的天数
week = (week+total) % 7; //求得星期几
switch (week)
{
case 0: System.out.println("Sunday"); break;
case 1: System.out.println("Monday"); break;
case 2: System.out.println("Tuesday"); break;
case 3: System.out.println("Wednesday");break;
case 4: System.out.println("Thursday"); break;
case 5: System.out.println("Friday"); break;
case 6: System.out.println("Saturday"); break;
}
}
如何用C语言编写程序实现程序自动排序输出?
C语言程序如下:include<stdio.h> intmain(){ inta,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("从小到大的顺序是:%d %d %d\\n",a,b,c);return0;} ...
用c语言编写一程序实现如下功能:输入1、2、3、4、5、6、70(分别对应星 ...
,输入... 2014-07-14 C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,... 88 2010-04-14 怎么用C语言编写程序“输入一个正整数n,计算1-2\/3+3\/... 10 2011-10-26 用c语言编写程序,实现单链表的建立(数据元素为1,2,3,4... 1 2011-02-20 用C语言编写一个程序实现输入一个...
编写一个完整的程序,实现如下功能
代码如下:include <stdio.h>#include <stdlib.h>#define N 10void input(int data[], int n){int i;printf("请输入%d个整数:\\n", n);for (i = 0; i < n; i++) {scanf("%d", &data[i]);}}void sort(int data[], int n){int i, j, temp;for (i = 0; i < n -...
用c语言编写一个程序,输入10个数求平均值。
C语言编程,从键盘输入10个学生的成绩,试统计出他们的成绩总和及平均值...1、请输入第7个学生的成绩:76 请输入第8个学生的成绩:84 请输入第9个学生的成绩:87 请输入第10个学生的成绩:79 10名学生的平均成绩为:830 ```希望这个代码可以帮助你实现你所需的功能。2、C语言:编写程序,输入10...
用c语言编写程序,如何实现获取键盘按下的字符?
代码如下:include<stdio.h> include<ctype.h> int main(void){ char ch;int index;ch = getchar(); \/\/读入一个字符存入ch ch = tolower(ch); \/\/转换为小写字母 index = ch - 'a' + 1; \/\/计算序号 printf("%d\\n", index);return 0;} ...
用C语言编写程序,完成如下功能
include<stdio.h>#include<Windows.h>struct STU{ long sno; char sname[8]; int sage; int sclass; struct STU *next;};int *pi;void Print_slist_no(struct STU *h){struct STU *p;p=h->next;if(p=='\\0'){printf("Linklist is null!\\n");}else{\/\/printf("...
用JAVA语言编写一个程序,要求如下:
import java.util.Random;import java.util.Scanner;public class T {public static void main(String[] args) throws Exception {Scanner in = new Scanner(System.in);int difficulty;\/\/难度int mode;\/\/运算类型int answer;\/\/答案int amount;\/\/挑战题目数量int score = 0;\/\/得分System.out....
用c语言编写一程序实现以下功能
main(){ int i=0,a=0,b=0,c=0,d=0,e=0,f=0;float grade;printf("请输入成绩,以-1结束\\n");do{ scanf("%f",&grade);if(grade==100)a++;else if(grade>=90)b++;else if(grade>=80)c++;else if(grade>=70)d++;else if (grade>=60)e++;else f++;i++;}while(grade...
用C语言编写一个计算最大值的程序
C程序代码如下:解析:1、首先定义a,b,c,max四个整型变量,并输入a,b,c三个数;2、定义最大值为a,if循环体还是对b和c进行循环;3、根据循环体判断最大的值,最后输出结果。
用c语言编程:编写一个程序,输入4个数,求其平均值
程序代码如下:直接编译,程序输出结果中任意输入4个数字,程序执行结果如下图所示:
布诚儿感: #include<stdio.h> int Month[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; int print_month[7][8]; bool leap_year(int year) {return year%4==0&&year%100!=0||year%400==0; } int get_days(int year,int month,int day) {//返回从公元1年1月1日到该日期...
邵阳市13261306939: C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出. - ?
布诚儿感: #include void main () {int y,m,d,c,s,w;printf("请输入8位年月日,以空格隔开:");scanf("%d%d%d",&y,&m,&d);if (m==1) c=d;else if (m==2) c=31+d;else if (m==3) c=31+28+d;else if (m==4) c=31+28+31+d;else if (m==5) ...
邵阳市13261306939: C语言编程序实现如下功能:输入任意一个年份的值,按以下格式输出该年份一月份的公历日历:?
布诚儿感: #include <stdio.h> int main() { int x,S,i,n=0; puts("Enter year:"); scanf("%d",&x); S=x-1+(int)((x-1)/4)-(int)((x-1)/100)+(int)((x-1)/400);printf("日\t一\t二\t三\t四\t五\t六\n"); for (i=0;i<=S%7;++i) { if (S%7!=6) printf(" \t"); ++n; } if (n==7) n=0; ...
邵阳市13261306939: 编一C语言程序,实现如下功能:输入任意一个年份的值,输出该年份的日历.要求将12个月自上而下排成一列. - ?
布诚儿感: #include <stdio.h> long int f(int year,int month) {if(month<3) return year-1;else return year; } long int g(int month) {if(month<3) return month+13;else return month+1; }long int n(int year,int month,int day) {return 1461L*f(year,month)/4+153L*g(...
邵阳市13261306939: 用C语言编写程序,完成如下功能 - ?
布诚儿感: #include<stdio.h>#include<Windows.h> struct STU{ long sno; char sname[8]; int sage; int sclass; struct STU *next; }; int *pi; void Print_slist_no(struct STU *h) { struct STU *p; p=h->next; if(p=='\0') { printf("Linklist is null!\n"); } else { // printf("heead...
邵阳市13261306939: C语言基础,编写一个程序,实现以下功能: - ?
布诚儿感: #include “stdio.h” int main() {static int a[10],b[10];int i,j=0,count=0,aver,count2=0;for(i=0;i<10;i++){printf("请输入第%d个同学的成绩:",i+1);scanf("%d",&a[i]);count+=a[i];}aver=count/10;printf("10个同学的平均成绩是:%d...
邵阳市13261306939: C语言编程1、编写一个程序实现如下功能:输入10个学生5门课程的成绩,分别用函数求:①每个学生的平均分;②每门课程的平均分;③找出最高的分数所... - ?
布诚儿感:[答案] 第一题:#include #include #define STUDENT_NUM 2 //学生数量,修改成10即可#define COURSE_NUM 5 //课程数量,为5typedef struct { float course[COURSE_NUM]; float ave;} student;void main(){ student s...
邵阳市13261306939: 用C语言如何实现以下功能程序. - ?
布诚儿感: 根据你的要求,只要将以下代码写入程序即可实现你说的功能,具体如下:#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define LIST_INIT_SIZE 20#define LISTINCREMENT 10 struct myList { int elem; int length; int listsize; }; int InitList(...
邵阳市13261306939: 用C语言实现下面的功能 1、用户输入长度不超过50的任意整型数据并将其保存并在屏幕上显示一遍 2、删除用户 - ?
布诚儿感: #include #define OVERFLOW -1#define OK 1#define ERROR 0 typedef int Status; typedef char TElemType; typedef struct BiTNode { TElemType data; struct BiTNode *lchild;//左孩子指针struct BiTNode *rchild;// 右孩子指针 }BiTNode; typedef ...
邵阳市13261306939: 用c语言编写一个程序实现以下功能 - ?
布诚儿感: 12345678910 #include "stdio.h" intmain(intargc,char*argv[]){ 5261int a,b; doublex,y; charch1,ch2; printf("Please enter the data...\n"); scanf("%d%d%lf%lf %c%c",&a,&b,&x,&y,&ch1,&ch2); printf("\na=%d,b=%d\nx=%f,y=%f\nch1=%c,ch2=%c\n",a,b,x,y,ch1,ch2); return0; } 运行样例: