C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出。

来自:    更新日期:早些时候
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() 函数。

#include <stdio.h>
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语言编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出。视频

相关评论:
  • 15573863236用c语言编写一个程序实现以下功能
    徐宜乳include "stdio.h"int main(int argc,char *argv[]){int a,b;double x,y;char ch1,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);return ...

  • 15573863236请用c语言编写完成如下功能的程序:
    徐宜乳include <stdio.h> include <stdlib.h> include <ctype.h> void input(int arr[], int *length);void output(int *arr, int length);void sort(int *arr, int length);int search(int *arr, int length);int main(int argc, char* argv[]){ int score[50] = {100, 89, 86, 90,...

  • 15573863236c语言问题 1.编写一个程序,完成以下功能: (1)输入10个学生的单科成绩...
    徐宜乳include <stdio.h> void sort(int c[], int n){ int i, j, buf;for(i = 0; i < n; i++){ for(j = i + 1; j < n; j++){ if(c[i] > c[j]){ buf = c[i];c[i] = c[j];c[j] = buf;} } } } void display(int c[], int n){ int i;printf("output...

  • 15573863236c语言编写程序完成以下功能:在主函数中通过键盘输入10个互不相等的整 ...
    徐宜乳include <stdio.h>#define N 10void delete_max(int a[]){ int i, m; m = 0; for(i=1;i<N;i++) { if(a[m] < a[i]) m = i; } printf("the max is : %d\\n", a[m]); for(i=m+1;i<N;i++) { a[i-1]=a[i]; } ...

  • 15573863236怎么用C语言编写一个程序,完成如下功能:定义一个结构数组,输入5种商品...
    徐宜乳新鲜出炉,还有些BUG,可以自行修改。include<stdio.h> int main(){ double rental;\/\/rental销售总额 double pri[5]={2.46,4.95,9.12,4.35,6.66};\/\/pri[]零售价格 int i,num[5],count[5];\/\/num[]名字,sale[]销售数量 for (i=1;i<6;i++){ printf ("输入第%d种商品名字和...

  • 15573863236用C语言编写程序,完成以下功能: (1) 有5个学生,每个学生的数据包括学号...
    徐宜乳include <stdio.h> define STUDENT 2 typedef struct tagSTU { char name[11] ;char stunum[11] ;float score1,score2,score3 ;float total,aver ;} STU;void input(STU *stu, int num) \/\/stu为学生数组的首地址,num为数组长度 { int i ;printf("请输入%d个学生的基本情况: \\n",num...

  • 15573863236编写程序,实现如下功能:从键盘输入C语言,英语和数学成绩,如果有且只有...
    徐宜乳include <stdio.h> void main(){ int i,j,k,o=1,p=0;printf("请输入数学成绩");scanf("%d",&i);printf("请输入英语成绩");scanf("%d",&j);printf("请输入C语言成绩");scanf("%d",&k);if(i>=60 && j>=60)printf("%d",o);else printf("%d",p);if(i>=60 && k>=60)...

  • 15573863236c语言实现如下功能。
    徐宜乳我帮你写了一个可以直接用的,你看一下,不懂追问:include<stdio.h> int main(){ int i,j,l;int k = 0;int n = 0;char a[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','...

  • 155738632361. 下面程序功能是:计算输出5 + 10 + 15 + … + 100。 运行程序的步骤...
    徐宜乳用C语言程序实现如下:include<stdio.h> int main(){int i,s=0;for(i=5;i<101;i+=5)s+=i;printf("%d\\n",s);getchar();return 0;} 编写源代码完成后,编译程序,成功后再运行程序。

  • 15573863236如何用C语言实现输入输出功能?
    徐宜乳下面是一个C语言程序的例子,它能够实现输入五个整数,计算其中正整数的累加和sum以及正整数的平均值ave,并输出结果。程序中,我们使用了一个for循环,循环五次来读取输入的五个整数x。如果读入的x是正整数,则将它累加到sum中,并且计数器count加1。最后,我们计算正整数的平均值ave,并使用printf函数...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网