先做一個函數,計算1900年1月1日到該天的天數,然后用膜除求出星期幾并輸出。
創(chuàng)新互聯公司是一家專注于成都網站制作、成都網站建設與策劃設計,扎囊網站建設哪家好?創(chuàng)新互聯公司做網站,專注于網站建設十余年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:扎囊等地區(qū)。扎囊做網站價格咨詢:13518219792
具體代碼如下:
#include?stdio.h
#include?stdlib.h
int?Day(int?y,int?m,int?d);
int?main(int?argc,?char?*argv[])?{
int?i;??//循環(huán)變量
int?year,month,day;??//讀取用戶輸入的年月日
int?days;??//儲存從1900-1-1到該天的天數
int?week=0;??//儲存求余后的星期
//字符串組合輸出星期
char?b[]={"星期"};
char?c[7][4]={"日","一","二","三","四","五","六"};
loop:printf("請輸入年?月?日:(空格分隔)\n");
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\n",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??m0??m13??d0??d32)
{
for(i=1900;i=y;i++)??//計算閏年的個數
{
if(i%400==0||i%100!=0i%4==0)
r++;
}
for(i=0;im-1;i++)??//統計當年1月1日到當月的天數
{
d+=a[i];
}
if((y%400==0||y%100!=0y%4==0)m3)??//如果當年是閏年但不到二月就不能算進去
r--;
return?365*(y-1900)+r+d;
}
else
return?-1;
}
#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\n", weekday[localtime(t)-tm_wday]);
return 0;
}
在這段代碼中,使用了 time 庫中的 mktime 函數和 localtime 函數來將日期轉換為時間戳,并使用 tm_wday 字段來計算日期是星期幾。
#includestdio.h
#includestring.h
int main()
{
int i;
char *day[7]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
scanf("%d", i);
if(i0||i6)
{printf("error");}
else
{printf("%s", day[i]); }
retunr 0;
}