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

用蔡勒公式即可:

#include <stdio.h>

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>

int main ()

{

  int y, m, d, c, w;

  printf ("输入年 月 日(空格间隔):");

  scanf ("%d %d %d", &y, &m, &d);

  if (m ==1 || m == 2) { //判断月份是否为1或2

    y--;

    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 <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("
");
    }
}


实现以下功能:
第一任意一年有多少天。
第二,任意的日期是当年的第几天
第三,0年1月1日是星期几,或者其他的一个固定日期你必须确定是星期几。这里比如0年1月1日是星期一。
第四,根据1,2可以知道给定的日期对0年1月一日来说是第几天。这样直接除以7,可以知道该天比“星期一”大几天。直接求出来该日期是星期几即可。

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
#define SIZE 31
void inputCheck(int,int,int);
int leaYear(int);

main()
{
int year,month,day,d1,result,sum=0;
scanf("%d%d%d",&year,&month,&day);
inputCheck(year,month,day);

for(;year>1; year--)
{
if((year%4==0 && year%100!=0)||(year%400==0))
sum+=366;
else
sum+=365;
}
d1=leaYear(month);
if((year%4==0 && year%100!=0) || (year%400==0))
{
result=(sum+d1+day)%7;}
else
{ if(month>2)
result=(sum+d1+day-1)%7;
else result=(sum+d1+day)%7;
}

switch(result)
{
case 1:printf("Monday
");break;
case 2:printf("Tuesday
");break;
case 3:printf("Wedensday
");break;
case 4:printf("Thurfay
");break;
case 5:printf("Friday
");break;
case 6:printf("Saturday
");break;
case 7:printf("Sunday
");break;
}
return 0;
}

int leaYear(int m)
{
int t=0;

for(; m>1;m--)
{
switch(m)
{
case 2:
t+=29;
break;
case 4:
case 6:
case 9:
case 11:

t+=30;
break;

case 3:
case 5:
case 7:
case 8:
case 10:
case 12:

t+=31;break;
}
}

return t;

}






void inputCheck(int year,int month,int day)
{
if(year<0)

printf("input is wrong!
");
else
{
switch(month)
{
case 2:
if(day>28 && (!((year%4==0 && year%100!=0) || (year%400==0))))
printf("input is wrong!
");
if(day>29 && ((year%4==0 && year%100!=0) || (year%400==0)))
printf("input is wrong!
");break;
case 4:
case 6:
case 9:
case 11:
if(day>30)
printf("input is wrong!
");break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day>31)
printf("input is wrong!
");
}
}
}


感觉应该加上判断输入数据是否合格的函数,即便没这个要求,我用测试数据1900 1 1试了试,我的结果是星期一,你的错误你来找吧

#13235418328# 编写C程序,实现如下功能: - ******
#韩世# 根据你的提问,代码如下:(如有不明白可追问) #include <stdio.h>#include <string.h> int main() { int a,b; while(1) { printf("Please input the score 1-100:"); scanf("%d",&a); b=a/10; if(b<6) puts("不及格"); else if(b==6) puts("及格"); else if(b==7) puts("中"); else if(b==8) puts("良"); else puts("优"); } } 当然也可以有swith case来完成.

#13235418328# 用C语言编程实现以下功能: - ******
#韩世# 用C++帮你做了一个,觉得还可以的话就采纳吧.#include<iostream.h>#include<stdlib.h> typedef struct { int *elem; int length; int listsize; }SqList; int InitList_sq(SqList *L,int n) { int i; L->elem=(int*)malloc(100*sizeof(int)); if(!L->elem) return 0; else ...

#13235418328# 用C语言编程 编写一个程序实现下面的功能? ******
#韩世# #include <stdlib.h> #include <stdio.h> #include <math.h> bool smaller(char* word1, char* word2) { int i; bool ret = false; int size1 = strlen(word1); int size2 = strlen(word2); int step = size1 < size2 ? size1 : size2; if(size1 > size2) { return false; } else if(...

#13235418328# 用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; } 运行样例:

#13235418328# 1.编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历. - ******
#韩世# #include main(){ int year,monthmax,m,i,j,d; printf("请输入年份:\n"); scanf("%d",...

#13235418328# C语言编写一个相当计算机功能的程序,用户输入任意两个数,可计算出加减乘除的结果, - ******
#韩世# 展开全部/*超经典的计算器*/#include int main() { int a,b,d; char c; printf("请输入计算式(如:3 + 2 ):"); scanf("%d%c%d",&a,&c,&b); c=='+'?d=a+b:(c=='-'?d=a-b:(c=='*'?d=a*b:(c=='/'?d=a/b:d=99999))); if(d==99999) printf("字符输入错误!"); else printf("%d%c%d=%d",a,c,b,d); fflush(stdin); getchar(); return 0; }

#13235418328# 编程序实现如下功能:1.输入任意一个年份的值,输出该年份的日历.要求将12个月自上而下排成一列. - ******
#韩世# 呵呵~~~c++也可以编译C语言吧,你可没说不能用C语言喔~~~ 西西~~~所以给你C语言啦~~~#include int num[13]={0}; void main() { void prit(void); int firstday(int,int); void pailie(int,int); int year,moon; int week_day; int i; printf("enter the ...

#13235418328# C语言问题 ******
#韩世# 首先你要一次输入任意长度的字符,那么必须用程序运行时的参数来搞定,所以main函数的参数至关重要.然后,需要对字符串中的字符进行处理,因为只有10个数,所以用switch或者用if来判断都可以.以下是答案:#include <stdio.h>int main...

#13235418328# 如何用C语言编写一个计算机程序,实现任意输入三个数a,b,c,将他们按照从大到小的顺序输出 - ******
#韩世# 给你点思路自己去想代码 设3个数分别为abc,开始拿a和b比,比较如果a比b大就拉倒,否则交换,保证比较以后的结果是第一个数大于第二个数.然后拿c和a比,和前面一样比较.再然后是c和b比.说的比较难懂,看你悟性了.

#13235418328# c语言程序设计上机实验 ******
#韩世# #include <iostream> using namespace std; int main(){ int day; int timeOfMon[] = {31,29,31,30,31,30,31,31,30,31,30,31}; printf("2012年日历 ==========\n"); int sumOfMon[13]; sumOfMon[0] = 0; for ( int i = 1; i<12; i++){ sumOfMon[i] = ...

  • C语言编程:输入任意一个年份和月份,按格式输出该月份的公历日历_百度知 ...
  • 答:if(month==4||6||9||11)if(month==1||3||5||7||8||10||12)这种写法是错误的。应该这样写 if(month==4||month==6||month==9||month==11)if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)另外,其实你可以不这么写,太多了,可以用 switc...

  • 求山东理工大学C语言实验答案(在线等、求速度)
  • 答:2.(拓展题,选做)编程序实现如下功能:输入任意一个年份的值,输出该年份全年的公历日历。#include <stdio.h>void main(){int year,days,i,m,n,k=0,j,day,month; printf("please enter a year:"); scanf("%d",&year);printf("%d年日历\n",year); days=365*(year-1)+97*((year-1)/400)+24*...

  • C语言程序设计功能从键盘输入任意实数,求出其所对应的函数值。_百度知...
  • 答:include using namespace std;int main(){ int a,b,c;int max;cout max)max = c;} cout<<"最大值是"<<c<<endl;return 0;}

  • 通过键盘往单片机中输入任意数字的C语言程序?
  • 答:我玩的pic相信51应该也差不多我整理一下发 #include <> unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f, //0123 0x66,0x6d,0x7d,0x07, //4567 0x7f,0x6f,0x77,0x7c, //89ab 0x39,0x5e,0x79,0x71}; //cdef unsigned char temp;unsigned char key;unsigned char i,j; ...

  • 想请问一下,用c语言编一个程序输入任意表达式可以计算结果
  • 答:大一时候写的,你看行不 include<stdio.h> include<math.h> include<ctype.h> include<conio.h> /*#include"stack.c"include"box.c"*/ define MAXLEN1 100 /* 定义栈1的最大长度 */ define MAXLEN2 100 /* 定义栈2的最大长度 */ define NULL 0 ...

  • 用c语言编写一程序实现如下功能:输入1、2、3、4、5、6、70(分别对应星 ...
  • 答:2019-03-18 c语言编写程序如何实现输入1 2,会输出3 4 5……,输入... 2014-07-14 C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,... 88 2010-04-14 怎么用C语言编写程序“输入一个正整数n,计算1-2/3+3/... 10 2011-10-26 用c语言编写程序,实现单链表的建立(数据元素为1,2...

  • 用C语言编写程序实现从键盘上任意输入两个整数,输出两个整数的乘积...
  • 答:代码刚刚写的, 你看下 include(stdio.h)main(){ printf("shu ru shu zi:\n");int i,j,s;scanf("%d,%d",&i,&j);s=i*j;printf("i*j=%d",s);}

  • 用C语言写一段,可以计算任意两个输入数的和的程序
  • 答:C语言任意两个数字的求和程序设计如下:include <stdlib.h> intmain(){ inta,b,sum;printf("请输入两个整数:");scanf("%d %d",&a,&b);sum=a+b;printf("这两个数的和是:%d\n",sum);printf("计算完成,谢谢使用!");return0;} C语言指定两个数字的求和程序设计如下:include<stdio.h...

  • C语言编写一个程序,实现如下功能:从键盘输入一个三位数,求各位数字之...
  • 答:include "stdio.h"void main(){ int n,sum=0;printf("请输入一个三位数:");scanf("%d",&n);sum=n/100+n%100/10+n%10;//百位数+十位数+个位数 printf("这个三位数各位数字之和是%d\n",sum);} 结果:

  • 在C语言中如何实现按任意键继续?
  • 答:1、直接调用系统函数 system("pause"):system()会调用fork()产生子进程, 由子进程来调用/bin/sh-c string 来执行参数string 字符串所代表的命令, 此命令执行完后随即返回原调用的进程。system("pause")可以实现冻结屏幕,便于观察程序的执行结果。如下:2、调用getch()函数:此函数是一个不回显函数...

    为传递更多家电数码信息,若有事情请联系
    数码大全网