问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用c语言确定某一年一月一日是星期几

发布网友 发布时间:2022-05-18 23:25

我来回答

4个回答

热心网友 时间:2023-11-20 05:56

1900年1月1日为星期一:
#include<stdio.h>

int test(int year) {//闰年返回1

    if((year%400==0)||(year%4==0&&year%100!=0))  return 1;

   return 0;

}  

   void main(){

  int  year,i;

  long  sum=0;// 计算1900到你输进的年的总天数 

 printf("\nInput year(year>=1900):");

  scanf("%d",&year);        

  for(i=1900;i<year;i++){

    sum+=365 ;

    if(test(year)==1) sum+=1; 

  } 

  printf("\n%d-1-1: ",year);

  int fg=sum%7; 

  switch(fg) {

   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\n\t");

}   
//测试通过,望采纳追问如果输入的年份在1900以前呢?

热心网友 时间:2023-11-20 05:56

#include <stdio.h> 
int dysforcompeleteyears(int startyear,int endyear){   //星期几
int sum=0;
for(int i=startyear;i<endyear;i++)
if(i%400==0||i%4==0&&i%100!=0)
sum+=366;
else
sum+=365;
return sum;
}
int daysforcurrentyear(int year,int month,int day){
int ss[13]={31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=0;i<month-1;i++)
day+=ss[i];
if((year%400==0||(year%4==0&&year%100!=0))&&month>2)
day++;
return day;
}
int main(){
int year,month,day;
scanf("%d-%d-%d",&year,&month,&day);  
int sum=0;
sum+=dysforcompeleteyears(1900,year);
sum+=daysforcurrentyear(year,month,day);
sum%=7;
if(sum==0)
printf("星期日\n");
else
printf("星期%d\n",sum);
return 0;

}

//输入格式 如:2014-5-17   这样输入才是对的 

追问你这个也是以1900年作基准的吗?如果输入年份在1900以前怎么办呢?

追答#include <stdio.h> 
int dysforcompeleteyears(int startyear,int endyear){   //星期几
    int sum=0;
    for(int i=startyear;i<endyear;i++)
        if(i%400==0||i%4==0&&i%100!=0)
            sum+=366;
        else
            sum+=365;
    return sum;
}
int daysforcurrentyear(int year,int month,int day){
    int ss[13]={31,28,31,30,31,30,31,31,30,31,30,31};
    for(int i=0;i<month-1;i++)
        day+=ss[i];
    if((year%400==0||(year%4==0&&year%100!=0))&&month>2)
        day++;
    return day;
}
int main(){
    int year,month,day;
while(1){
    scanf("%d-%d-%d",&year,&month,&day);  
    int sum=0;
    sum+=dysforcompeleteyears(1,year);
    sum+=daysforcurrentyear(year,month,day);
    sum%=7;
    if(sum==0)
        printf("星期日\n");
    else
        printf("星期%d\n",sum);

}
return 0;
}

修改好了,,公元后的任何日期都行,,输入方式2014-5-18

while(1){} 是为了方便测试,如果你不需要可以删除 

热心网友 时间:2023-11-20 05:57

第四周编程作业第题确定母亲节
2
确定母亲节(10分)
题目内容:
母亲节是每年的五月第二个星期天,针对输入的年份,计算该年的哪一天是母亲节。

输入格式:

年份

输出格式:

日期(5月的哪一天)

输入样例:

2014

输出样例:

11

时间*:500ms内存*:32000kb
这道题目网上有两种方法,都可以通过,第一种方法

#include<stdio.h>
int main()
{
int year, n, week, total, day;
scanf("%d",&year);
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
week = (year + year / 4 + year / 400 - year / 100 - 1) % 7;
for(n = 0;n < 5; n++)
{
if(n == 0) total = 0;
if(n == 1 || n == 3) total += 31;
if(n == 2) total += 29;
if(n == 4) total += 30;
}
}
else
{
week = (year + year / 4 + year / 400 - year / 100) % 7;
for(n = 0; n < 5; n++)
{
if(n == 0) total = 0;
if(n == 1 || n == 3) total += 31;
if(n == 2) total += 28;
if(n == 4) total += 30;
}
}
week = (week + total) % 7;
if (week == 0) week = 7;
day = 7 - week + 8;
printf("%d\n",day);
return 0;
}
//程序里语句 week = (year + year / 4 + year / 400 - year / 100 - 1) % 7;
//及week = (week + total) % 7;
// day = 7 - week + 8;
//这三条语句应该如何理解?

第二种方法

#include <stdio.h> int main()
{int year,b,n;
scanf("%d",&year);
b=(year-1720)%28;
switch(b)
{case 0:n=14;break;case 1:n=13;break;case 2:n=12;break;case 3:n=11;break;case 4:n=9;break;case 5:n=8;break;case 6:n=14;break;case 7:n=13;break;case 8:n=11;break;case 9:n=10;break;case 10:n=9;break;case 11:n=8;break;case 12:n=13;break;case 13:n=12;break;case 14:n=11;break;case 15:n=10;break;case 16:n=8;break;case 17:n=14;break;case 18:n=13;break;case 19:n=12;break;case 20:n=10;break;case 21:n=9;break;case 22:n=8;break;case 23:n=14;break;case 24:n=12;break;case 25:n=11;break;case 26:n=10;break;case 27:n=9;break;
}
printf("%d\n",n);return 0;
}
//程序中语句b=(year-1720)%28; 应该如何理解?

第三题
计算星期(10分)
题目内容:
给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。

输入格式:

年 月 日

输出格式:

0~6。
星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。
假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?

输入样例:

2013 3 11
输出样例:

1

输入样例:

2013 13 15
输出样例:

month is error.

输入样例:

2013 3 32
输出样例:

day is error.
测试代码完全通过

#include <stdio.h>
int dysforcompeleteyears(int startyear,int endyear){ //星期几
int sum=0;
for(int i=startyear;i<endyear;i++)
if(i%400==0||i%4==0&&i%100!=0)
sum+=366;
else
sum+=365;
return sum;
}
int daysforcurrentyear(int year,int month,int day){
int ss[13]={31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=0;i<month-1;i++)
day+=ss[i];
if((year%400==0||(year%4==0&&year%100!=0))&&month>2)
day++;
return day;
}
int main(){
int year,month,day;
scanf("%d%d%d",&year,&month,&day);
if(year <= 1900 ){
printf("year is error.\n");
return 0;
}
if(month >= 13 || month < 1){
printf("month is error.\n");
return 0;
}
if(day < 0){
printf("day is error.\n");
return 0;
}
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day > 31){
printf("day is error.\n");
return 0;
}
break;
case 4:
case 6:
case 9:
case 11:
if(day > 30){
printf("day is error.\n");
return 0;
}
break;
case 2:
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
if(day > 29){
printf("day is error.\n");
return 0;
}
}
else{
if(day > 28){
printf("day is error.\n");
return 0;
}
}
break;
}
int sum=0;
sum+=dysforcompeleteyears(1900,year);
sum+=daysforcurrentyear(year,month,day);
sum%=7;
if(sum==0)
printf("0\n");
else
printf("%d\n",sum);
return 0;
}

测试代码只是依据1900年1月1日为星期一,当然也可依据公元元年1月1日(即1年1月1日)为星期一件题目要求的1900年扩充至公元后的任何日期,说明第二题确定母亲代码的疑问均属于公式,有大神有公式的推导证明分享下,吾等必将感激不尽

热心网友 时间:2023-11-20 05:57

#include <string.h>
#include <time.h>
int get_week(int);
int get_week(int year)
{
struct tm tm;
if (year < 1970 || year>3000)return -1;
memset(&tm, 0, sizeof tm);
tm.tm_year = year - 1900;
tm.tm_mday = 1;
mktime(&tm);
return tm.tm_wday;
}

星期日为0,星期一--星期六为1--6
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑音乐怎样保存到文件中怎样把歌曲放到文件夹里 电脑上如何把歌曲做成文件夹怎么把歌曲转化为文件 如何把音频加入到电脑文件夹上怎么把歌曲放到文件夹中 海参是不是吃多长时间以后可以不用在吃了 梦见一半黑色 电吉他买了音箱还要买效果器吗 有人去过资和信百货吗? 资和信百货企业理念 资和信百货家庭季家庭季简介 资和信是什么 VC++打印日历中某月第一天是星期几的问题 已知1900年1月1日为星期一 每年一月一日是星期几?为什么每年都不同?怎么判断某年的一月一日是星期几(方法)? 请问各位大哥:汇编指令里 DIV BL,是对的,那DIV AX,BL 对不对? 这个是已经1900年1月1日星期一 然后输入年月日 算出 输入的这个年,月,日是星期几 C语言的一道题 知道1900年1月1日是星期一,设计一个程序,输入年月日,输出星期几 1900年的第一天是星期几 如何用汇编语句div完成 1234/3 求pascal编程:已知1900年一月一日为星期一,输入任意一天,判断星期几? 已知道1900年1月1日是星期一,请输入一具体的日期,如何判断此日期是星期几?请利用C语言来进行编程 1900年1月1号是周一,n年后1月1号是周几,c语言 你的父母给你最好的礼物是什么? 1900年1月1日农历是多少? 父母送给你最珍贵的礼物是什么? 8086汇编语言DIV指令的问题 js怎么实现购买商品数量的加减效果 汇编中DIV指令的除法怎么计算? 父母给的爱真的就合适吗? 1900年1月1日是星期几? 冬瓜鲤鱼汤有没有护肤 我的父母给了我什么 Java实现以1900年1月1日是给定一个年月日,然后显示对应星期几,要求使用基本语法,大体程序我都弄出来了 c语言求某年的一天是星期几 问:编写 万年历java代码例如1900年一月一日是星期一。用for if 语句 pascal编程:1900年1月1日(星期一)的n年当中,每个月的13号这一天的星期一星期二...星期天次数分别是多少 绑定QQ号,在用QQ号登陆不了,怎么办? 物联卡怎么用,有没有知道的人给我介绍下 ( )的世界 填上形容词 IBM-PC汇编语言程序设计第二版(清华大学的) 下班的搞笑心情说说心情短语 天拖1304拖拉机离合器怎么调证 谁知道《微机原理与接*术》和《计算机组成原理》和《IBM—PC汇编语言程序设计》的区别吗? 英语必修四单词表? &lt;IBM-PC汇编语言程序设计&gt;这本书有几个版本,哪个版的比较好?谢谢 求《IBM-PC汇编语言程序设计》电子书下载 谢谢 急求《IBM-PC汇编语言程序设计》(沈美明,温冬婵)第一版书源,电子版或者购买渠道 上海移动套餐,谢谢大家帮忙推荐个适合自己的 谁有IBM-PC汇编语言程序设计(第2版)-沈美明-清华大学出版社 的课件? 求IBM PC汇编语言程序设计的答案 (第二版) (清华大学出版社) IBM PC汇编语言题 汇编语言 音乐动画程序设计(急用)