Ⅰ c語言程序,輸入年月日算出當天星期幾
先做一個函數,計算1900年1月1日到該天的天數,然後用膜除求出星期幾並輸出。
具體代碼如下:
#include<stdio.h>
#include<stdlib.h>
intDay(inty,intm,intd);
intmain(intargc,char*argv[]){
inti;//循環變數
intyear,month,day;//讀取用戶輸入的年月日
intdays;//儲存從1900-1-1到該天的天數
intweek=0;//儲存求余後的星期
//字元串組合輸出星期
charb[]={"星期"};
charc[7][4]={"日","一","二","三","四","五","六"};
loop:printf("請輸入年月日:(空格分隔) ");
scanf("%d%d%d",&year,&month,&day);
days=Day(year,month,day);
//增強程序的健壯性
if(days==-1)
{
printf("輸入格式有誤,");
fflush(stdin);//防止用戶輸入字母等其他非數字字元
gotoloop;
}
else
{
week=days%7;//用求余計算星期幾
printf("%d年%d月%d日是%s%s ",year,month,day,b,c[week]);
}
system("pause");
return0;
}
//函數功能:輸入年月日,輸出1900-1-1到該天的天數,-1位輸入不合法
intDay(inty,intm,intd)
{
inti;
intr=0;//儲存1900到該天的閏年個數
inta[]={31,28,31,30,31,30,31,31,30,31,30};//m給每出月的天數
if(y>=1900&&m>0&&m<13&&d>0&&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--;
return365*(y-1900)+r+d;
}
else
return-1;
}
Ⅱ C語言;輸入任意年月日,得出周幾
#include"stdio.h"
struct Date
{
int year;
int month;
int day;
};
int f(int x)
{
if(x%4==0&&x%100!=0||x%400==0) return 366;
else return 365;
}
int isleap(int x)
{
if(x%4==0&&x%100!=0||x%400==0) return 1;
else return 0;
}
int s(int a,int b,int c,int d,int year)
{
int array[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
int cha=0,i;
if(a<c||a==c&&b<d)
{
for(i=a;i<c;i++)
cha+=array[isleap(year)][i-1];
cha+=d-b;
return cha;
}
else
{
for(i=c;i<a;i++)
cha+=array[isleap(year)][i-1];
cha+=b-d;
return -cha;
}
}
int tianshu(struct Date a,struct Date b)//計算兩個日期相差的天數
{
int i,tian=0;
if(a.year<b.year)
{
for(i=a.year;i<b.year;i++)
tian+=f(i);
tian+=s(a.month,a.day,b.month,b.day,b.year);
}
else
{
for(i=a.year;i<b.year;i++)
tian-=f(i);
tian+=s(a.month,a.day,b.month,b.day,b.year);
}
return tian;
}
void jieguo(int a)
{
if(a==0) printf("這一天是星期天\n");
if(a==1) printf("這一天是星期一\n");
if(a==2) printf("這一天是星期二\n");
if(a==3) printf("這一天是星期三\n");
if(a==4) printf("這一天是星期四\n");
if(a==5) printf("這一天是星期五\n");
if(a==6) printf("這一天是星期六\n");
if(a==7) printf("這一天是星期天\n");
}
int main()
{
int tian;
struct Date now={2009,4,12};//選擇一天作為基準
struct Date chaxun;
printf("請輸入你想查詢的日期\n");
scanf("%d%d%d",&chaxun.year,&chaxun.month,&chaxun.day);
tian=tianshu(now,chaxun);
if(tian>=0)
{
jieguo(tian%7);
}
else
{
jieguo(7-((-tian)%7));
}
return 0;
}
Ⅲ c語言知道日期 算星期幾
這個是用於計算是周幾的公式
參見下鏈第一個公式
http://hi..com/greation/item/4e9615dedba8c94fdcf9be51
不過這個代碼寫的有點問題,應該是取整的
我個人比較喜歡用蔡勒公式或基姆拉爾森公式
Ⅳ c語言給一個日期求星期幾
#include<stdio.h>
voidmain(){
intdate;
charweek[7][3]={"六","天","一","二","三","四","五"};
scanf("%d",&date);
if(date>=1&&date<=30)
{
date-=11;
while(date<0)date+=7;
printf("星期%s",week[date%7]);
}
elseprintf("輸入日期有誤!");
}
//運行示例:
Ⅳ c語言知道日期求星期
這是根據蔡勒(Zeller)公式。
即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符號含義冊橡信如下,w:星期;c:世紀-1;y:年(兩位數);m:月(m大於等於3,小於等於14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算);d:日;[ ]代表取整,即只要整數部分。(C是世紀數減一,y是年份如辯後兩位,M是月份,d是日數。1月和2月要按上一年的13月和 14月來算,這時C和y均按上一年取值)
算出來的W除以7,余數是幾就是星期幾。如果余數是0,則為星期日.
以2049年州輪10月1日(100周年國慶)為例,用蔡勒(Zeller)公式進行計算,蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 =49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1 =49+[12.25]+5-40+[28.6] =49+12+5-40+28 =54 (除以7餘5) 即2049年10月1日(100周年國慶)是星期5。
Ⅵ c語言函數輸入xxxxxxxx日期date,計算當天是星期幾
#include <stdio.h>
#include <time.h>
int main() {
int year, month, day;
printf("Enter a date (yyyy-mm-dd): ");
scanf("%d-%d-%d", &year, &month, &握裂day);
struct tm tm = {0};
tm.tm_year = year - 1900;
tm.tm_mon = month - 1;
tm.tm_mday = day;
tm.tm_isdst = -1;
time_t t = mktime(&tm);
char* weekday[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
printf("%s ", weekday[localtime(&巧咐t)->tm_wday]);
return 0;
}
在這段代碼中,使用了 time 庫中的 mktime 函數和 localtime 函數來將日期轉換為時間戳,並使用 tm_wday 欄位來計算日期是孝皮純星期幾。
Ⅶ 用c語言輸入日期輸出星期幾
#include<stdio.h>
intmain(intargc,charconst*argv[])
{
intdata;
scanf("%d",&data);
printf("星期%d ",(data+1)%7+1);
return0;
}
Ⅷ C語言程序,輸入年月日算出當天星期幾
似乎是有時間函數,看看說明
其實弄個語言,主要的是使用中間的函數、工具、各種包,
語言本身比較簡單,相對的,而那是不夠的,
那些函數,也不都是語言本身寫的,