搜档网
当前位置:搜档网 › C语言根据日期求星期(分段计算方式)

C语言根据日期求星期(分段计算方式)

C语言根据日期求星期(分段计算方式)
C语言根据日期求星期(分段计算方式)

C语言根据日期求星期

今天是2007年10月17日,星期六. 现在告诉你一个日期,你能回答今天是星期几吗?

输入描述:

输入数据有多组,每组占一行,输入三个整数year(0

输出描述:

对于每组输入数据,输出一行,表示星期几,如果不合法输出“illegal”。

以下为代码:

1 #include

2 char date[7][7] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

3 //判断年份是否为闰年

4 int isLeap(int year)

5 {

6 if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

7 return 1;

8 return 0;

9 }

10

11 int main()

12 {

13 int year,month,day;

14 //平年各个月的天数

15 int year1[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

16 //闰年各个月的天数

17 int year2[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};

18 //days为距离公元第一天的天数

19 int days = 0, k = 0, j = 0;

20 char *getDate;

21 while(scanf("%d %d %d", &year,&month,&day) != EOF)

22 {

23 if(year<= 0 || year >= 10000 || month < 0 || month >= 13 || day < 0 || day >= 32)

24 {

25 printf("illegal\n");

26 continue;

27 }

28 if(month == 2)

29 {

30 if(isLeap(year))

31 {

32 if(day > year2[month])

33 {

34 printf("illegal\n");

35 continue;

36 }

37 }

38 else

39 {

40 if(day > year1[month])

41 {

42 printf("illegal\n");

43 continue;

44 }

45 }

46

47 }

48 //现在的日期与公元第一天开始相隔的天数

49

50 for(k = 1;k < year;k++)

51 {

52 if(isLeap(k))

53 days = days + 366;

54 else

55 days = days + 365;

56 }

57

58 for(j = 0; j < month; j++)

59 {

60 if(isLeap(year))

61 days = days + year2[j];

62 else

63 days = days + year1[j];

64 }

65 days = days + day;

66 //除以7求余就可以求出星期

67 getDate = date[days % 7];

68 printf("%s\n", getDate);

69 //数据清零

70 days = 0;

71 }

72 }

测试数据:

在这个测试中遇到了一些问题,在C语言中,While循环里面的for循环不能再声明变量,否则会报错。

周期问题——《巧算“星期几”》

周期问题——《巧算“星期几”》 教学目标: 1、根据时间、日期的知识,解决一些时间问题。 2、掌握计算共经过的天数: 从头到尾总天数除以7得出的余数是几,就从第一周期第一项开始数几,即可推知是星期几。算头不算尾、算尾不算头的总天数除以7得出的余数是几,就从第一周期第一项的下一项开始数几,推知是星期几。 教学过程: 一、实践畅销 1、探究1: 平南小学从2011年12月1日到2011年12月20日举行第三届英语节活动,活动一共举行了多少天? T::请独立思考,比一比谁能快速得出结果? S1:20天S2:19天 T:谁的想法对?用什么方法验证? S:可以将日期列一列。 S:可以列算式20-1=19 19+1=20 T:为什么要加1?(头尾都要算,所以要加1) 小结:计算从某年(月日)起到某年(月、日)共经过的天数,一般要连头带尾算,也就是经过的年数(天数)=结尾数-开始数+1。 板书:经过的年数(天数)=结尾数-开始数+1 2、试一试:根据上面的方法,算算经过的天数。 2012年的春节从2012年1月22日到2012年1月31日,经过了()天。 2008年3月10日到2008年4月10日,经过了()天。 T:先独立思考,再将你的想法和同桌交流。 反馈:1)31-22+1=10天2)31-10+10+1=32天 3、探究2: 2012年第二学期从2月7日开学到2012年6月25日放假,一共有()天。 T:这道题的天数较多,你准备用什么办法解决? 先试一试,填一填,再集体反馈 反馈:可以用分段推算的方法。 注意考虑2012年是闰年,注意考虑到2月份有29天。 可以将这些天分段如下: 第一段:2月7日到2月29日,共23天。 第二段:3月共31天。 第三段:4月共30天 第四段:5月共31天 第五段:6月1日到6月25日共25天。 合计天数:23+31+30+31+25=140天 追问:如果开学那天是周二,放假那天是周几? S1:140/7=20,没有余数,所以是周二 S2:应该是周一。 T:有两种意见,哪一种对呢? 我们以一个周期来观察,可以发现第八天时,会与第一天的周几重复,也就是说当余数为1

小学趣味数学——根据年、月、日推算是星期几的公式

小学趣味数学——根据年、月、日推算是星期几的公式 有时候,想知道公元某年某月某日是星期几,可以用下面的公式算出来: 这里的方括号表示只取商的整数部分。式中: x :这一年是公元多少年。 y :这一天是这一年的第几天。 s :星期几。不过要先除以7,再取余数。没有余数是星期日,余数是1、2、3、4、5、6,分别是星期一、星期二、星期三、星期四、星期五、星期六。 比如,2010年国庆节(10月1日)是星期几? x =2010。 y =31+28+31+30+31+30+31+31+30+1=31×5+30×3+28+1=274。 s =2010-1+502-20+5+274=2770,2770÷7余5。 所以,2010年国庆节是星期五。 y x x x x s +?? ????-+??????--??????-+-=40011001411

如果,你只想知道这个公式怎样用,到这儿就可以了。而要想知道这个公式的道理是什么,那可就说来话长了。 “星期制”是公元321年3月7日,古罗马皇帝君士坦丁宣布开始实行的,并且规定这一天为星期一。实际上,就是把公元元年元旦(公元1年1月1日)规定为星期一。(相当于公式中的x=1,y=1,所以s=1。) 通常1年有365天,365÷7=52……1,就是说比52个星期多1天。所以,同一个日期,下一年是星期几,就要比上一年向后推1天。比如,上一年元旦是星期三,下一年元旦就是星期四。 “通常每过1年,把同一日期是星期几向后推1天”,是理解这个公式的关键。 要想知道某年某月某日是星期几,首先,要知道这一年元旦以公元元年元旦是星期一为起点,已经把星期几向后推了多少天,还要知道这一天是这一年的第几天。而要知道这一年元旦已经把星期几向后推了多少天,可以从公元元年到这一年已经过了多少年算起,先按1年向后推1天计算,再根据闰年的规定进行调整。 闰年的规定是:年份是4的倍数的一般都是闰年,其中,年份是整百数的一般不是闰年,只有年份是400的倍数的才

二级C语言-运算符与表达式

二级C语言-运算符与表达式 (总分:60.00,做题时间:90分钟) 一、{{B}}选择题{{/B}}(总题数:38,分数:38.00) 1.设变量已正确定义并赋值,以下合法的C语言赋值语句是______。 ? A.x=y==5 ? B.x=n%2.5 ? C.x+n=i ? D.x=5=4+1 (分数:1.00) A. √ B. C. D. 解析:[解析] 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C和D错误。“%”运算符两侧都应当是整型数据,选项B错误。 2.在x值处于-2~2、4~8时值为“真”,否则为“假”的表达式是______。 ? A.(2>x>-2)||(4>x>8) ? B.!(((x<-2)||(x>2))&&((x<=4)||(x>8))) ? C.(x<2)&&(x>=-2)&&(x>4)&&(x<8) ? D.(x>-2)&&(x>4)||(x<8)&&(x<2) (分数:1.00) A. B. √ C. D. 解析:[解析] 本题是考查关系运算和逻辑运算的混合运算。要给出此题的正确答案,首先需要了解数学上的区间在C语言中的表示方法,如x在[a, b]区间,其含义是x既大于等于a又小于等于b,相应的C语言表达式是x>=a&&x<=b。本例中给出了两个区间,一个数只要属于其中一个区间即可,这是“逻辑或”的关系。在选项A中,区间的描述不正确。选项B把“!”去掉,剩下的表达式描述的是原题中给定的两个区间之外的部分,加上“!”否定正好是题中的两个区间的部分,是正确的。选项C是恒假的,因为它的含义是x同时处于两个不同的区间内。选项D所表达的也不是题中的区间。 3.sizeof(double)是______。 ? A.一种函数调用 ? B.一个整型表达式 ? C.一个双精度表达式 ? D.一个不合法的表达式 (分数:1.00)

(完整word版)C语言运算符与表达式的练习题答案

C语言运算符与表达式的练习题 单项选择题 (1)以下选项中,正确的 C 语言整型常量是(D)。 A. 32L B. 510000 C. -1.00 D. 567 (2)以下选项中,(D)是不正确的 C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" (3)字符串的结束标志是(C)。 A. 0 B. '0' C. '\0' D. "0" (4)算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 (5)逻辑运算符中,运算优先级按从高到低依次为(D)。 A. && ! || B. || && ! C. && || ! D. ! && || (6)表达式!x||a==b 等效于(D)。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) (7)设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是(A)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 *(8)设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是(B)。 A. 3 B. 0 C. 9 D. -12 (9)在以下一组运算符中,优先级最低的运算符是(D)。 A. * B. != C. + D. = (10)设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是(B,上机13)。 A. 6 B. 12 C. 15 D. 表达式出错 (11)若已定义 x 和 y为double 类型,则表达式的值是(D)。

C实现的根据日期得到今天是星期几

算法如下: 基姆拉尔森计算公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方: 把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。 但是在测试的时候发现有点出入,就是公式存在一点问题,得稍做修改: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 +1 代码如下: #region根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);) ///

///根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);) /// ///年 ///月 ///日 /// public static string CaculateWeekDay(int y,int m, int d) { if(m==1) m=13; if(m==2) m=14; int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1; string weekstr=""; switch(week) { case 1: weekstr="星期一"; break; case 2: weekstr="星期二"; break; case 3: weekstr="星期三"; break; case 4: weekstr="星期四"; break; case 5: weekstr="星期五"; break; case 6: weekstr="星期六"; break; case 7: weekstr="星期日"; break; }

C语言中条件运算符的语法为

条件运算符的语法为: (条件表达式)?(条件为真时的表达式):(条件为假时的表达式) 例如: x=ay?"greater than":x==y?"equal to":"less than" 它等价于: (x>y)?"greater than":((x==y)?"equal to":"less than") 当x>y时,值为"greater than",x==y时,值为"equal to",否则,值为"less than"。条件运算符的嵌套可读性不够好。 在一个条件运算符的表达式中,如果后面两个表达式的值类型相同,均为左值,则该条件运算符表达式的值为左值表达式。例如: int x=5; long a,b; (x?a:b)=1;//ok:因为a和b都是左值 (x?x:a)=2;//error:x和a不同类型。编译器将其解释为(1ong)x和a (x==271:a)=3;//error:1非左值 "(x?a:b)=1"表示当x为0时,b=1,否则a=1。这里的括号是必须的,否则将被看作x?a:(b=1)。"(x?x:a)=2”中,尽管x是左值,a也是左值,但x与a不同类型,条件运算符要对其进行操作数的隐式转换,使之成为相同的类型。任何被转换的变量都不是左值。 ->在C中,条件运算符是不能作左值的,所以"(x?a:b)=1;"将通不过编译。 getchar 函数名: getchar 功能: 从stdio流中读字符 用法: int getchar(void); 注解:

C语言数据类型和运算符及表达式复习题

数据类型、运算符和表达式复习题.选择题 1. 以下不合法的用户标识符是: ( ) a) f2_G3 b) If c) 4d d) _8 2. 以下选项中合法的用户标识符是: ( ) a) long b) _2Test c) 3Dmax d) A.dat 3. 以下可用作用户标识符的是: ( ) a) 12_a b) signed c) t-o d) _if 4. 以下不是关键字的标识符是: ( ) a) continue b) char c) If d) default 5. C 语言提供的合法的关键字是: ( ) a) swicth b) cher c) Case d) void 6. 以下选项中不合法的int 整型常数是( ) a) 32768 b) -56 c) 03 d) 0xAF 7. 以下合法的长整型常量是( ) a) 2L b) 49627 c) d) 213& 8. 以下正确的实型常量是( ) a) 1.2E b) . c) 1.2e0.6 d) 8 9. 以下选项中合法的实型常数是( ) a) 5E2.0 b) E-3 c) .2E0 d) 1.3E 10. 以下合法的八进制数是( ) a) 0135 b) 068 c) 013.54 d) o7

11. 以下合法的十六进制数是( ) a) 0x b) 0x4de c) 0x1h d) ox77 12. 以下选项中非法的数值常量是( ) a) 019 b) 0L c) 0xff d) 1e1 13. 若变量已正确定 以下合法的赋值表达式是( ) 义, a) a=1/b=2 b) ++(a+b) c) a=a/(b=5) d) y=int(a)+b 14. 若变量已正确定 以下非法的表达式是( ) 义, a) a/=b+c b) a%(4.0) c) a=1/2*(x=y=20,x*3) d) a=b=c 15. 设x为int 类型,其值为11,则表达式( x++*1/3 )的值是: a) 3 b) 4 c) 11 d) 12 16.设a,b 均为double 型,且 a=5.5;b=2.5; 则表达式 (int)a+b/b 的值是( ) a) 6. b) 6 c) 5. d) 6. 17.若a为int型,且其值为3,则执行完表达式: a+=a-=a*a 后,a 的值是( ) a) -3 b) 9 c) -12 d) 6 18.设k 和x 均为int 型变量,且k=7 ;x=12;则能使值为 3 的表达式是( )

(完整word版)三年级奥数年月日(时钟问题)

思维拓展四:年月日问题 一、知识要点 (一)天数的计算方法:(1)数天数(2)用加减法计算。所求的天数经过不同的月份时,要采用分段计算的方法。 (二)求某个月份中的一段时间的总天数方法:“尾日期-首日期+1” (三)周期问题的解题方法: (1)找出排列规律,确定排列周期。 (2)确定排列周期后,用总数除以周期。 ①如果没有余数,正好有整数个周期,那么结果为周期里的最后一个 ②如果有余数,即比整数个周期多n个,那么结果为下一个周期的第n个。 二、典型例题 例【2】2008年元旦是星期二,那么,2012年元旦是星期几? 分析:从2008年元旦到2012年元旦这四年中,2008年是闰年,其余三年是平年.四年的天数加上2012年元旦这一天,共有 366+365×3+1=1462(天) 一共是1462÷7=208(周)……6(天) 从星期二开始算,第六天是星期日.所以,2012年元旦是星期日.

注:一个星期有7天一个月最少有28天,最多有31天,是4个星期零3天(31÷7=4……3)。也就是说,一个月中无论是星期几,最少有4个,最多有5个。

例【6】镜子里的时间 前几天,我对着镜子整理衣服的时候,意外的发现,镜子里闹钟的指针竟然与桌上闹钟的指针正好相反。我睁大眼睛看了好一会。之后,我拨弄着闹钟发现:当我把时间拨到了3时的时候,镜子里反射出的时间不是3时而是9时!我很好奇,又把时间拨到1时,发现镜子里的时间指向11时;然后把时间拨到3时30分,镜子里的时间是8时30分。我又这样反复试验,观察了好几次,惊喜的发现了一个规律,那就是: 每次实际时间和镜子里的时间,相加都是12时! 【巩固】 (1)小亮要画一幅画,刚开始画时,他从镜子中看到钟面上的时刻是6时45分,当他画完时,看真正的时钟也是6时45分,小亮画画用了多长时间? (2)早上醒来,明明从镜子里看到钟面上的时刻是6:30.你知道钟面上的实际时刻是多少吗? 【练习】 1.在一年里连续两个月共有60日的是哪两个月? 2.如果今天是星期二,那么从明天开始,第32天是星期几? 3.昨天是9日,今天是星期三,29日是星期几

C语言程序设计实验报告实验数据类型运算符和表达式

凯里学院C 语言程序设计实验报告 ×××××专业××年级××班,学号××××××姓名××成绩 合作者实验日期年月日 指导教师评阅日期年月日 实验二数据类型、运算符和表达式 一、实验目的: (1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 (2)学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C 语言的输入和输出函数的使用 (4)进一步熟悉C 程序的编辑、编译、连接和运行的过程,学会使用stepbystep 功能。 (5)认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。 二、实验内容: (1)输人并运行下面的程序 #include voidmain() { charc1,c2; c1='a'; c2='b'; 装 订 线 装 订 线

printf("%c%c\n",c1,c2); } (2)按习题3.7的要求编程序并上机运行 该题的要求是: 要将“China”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。 例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre"。 请编一程序,用赋初值的方法使。cl,c2,c3,c4,c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使cl,c2,c3,c4,c5分别变为‘G’、‘l’、‘m’、‘r’、‘e’,并输出。 三、实验步骤: (1)输人并运行下面的程序 #include voidmain() { charc1,c2; c1='a'; c2='b'; printf("%c%c\n",c1,c2); } ①运行此程序。 程序结果为:

四年级奥数日期和时间地计算含问题详解

日期和时间的计算 一、学习目标 1.学会在日期的计算中发现和识别呈周期性变化的规律,并能列式解答. 2.学会时间计算的一般方法,能说明解答的基本依据. 3.感受简单的分析、推理等方法. 二、内容提要与方法点拨 1.被除数=商×除数+余数,余数要小于除数. 2.找准有一定变化规律的周期,如1年有12个月,1周有7天,1小时是60分,1分是60秒等. 三、例题选讲 例12008年元旦是星期二,那么,2012年元旦是星期几? 解:从2008年元旦到2012年元旦这四年中,2008年是闰年,其余三年是平年.四年的天数加上2012年元旦这一天,共有 366+365×3+1=1462(天) (或365×4+1+1) 一共是1462÷7=208(周)……6(天) 从星期二开始算,第六天是星期日.所以,2012年元旦是星期日. 这道题还可以这样算: 365÷7=52……1,平年有52周余1天,闰年就有52周余2天. 直接算出每一年的天数除以7的余数的和 2+1×3+1=6,从星期二开始算,第六天是星期日. 有一类数学问题是围绕每月天数、日期数和星期几的天数等关系展开的.解答这类问题的焦点往往在它的余数上. 我们知道,在一年的12个月中,每个月最少有28天,最多有31天,一个星期有7天.而 一个月的天数÷7 = 4……(余数),余数可以是0、1、2、3. 下面,我们根据这个除法算式进一步弄清有关的几个数量之间的关系. (1)由上式知,一个月的星期几的个数最少有4个,最多有5个. (2)当余数为0时,即这个月只有28天(平年的2月),那么,这个月所

有的星期几分别有4个.同时,这个月的第一天是星期几,最后一天就是星期几 的前一天.例如,2月1日是星期二,2月28日就是星期一. (3)当余数为1、2、3时,即这个月多于28天.多出了几天,就有几个星 期几是5个的,而且是连续的.例如,7月有31天,当7月1日是星期二时,7 月28日是星期一,7月29日、30日、31日就分别是星期二、三、四,则这个 月的星期二、三、四各有5个. 多出的几天及对应是星期几也可以放到月头考虑,在此不一一分述. 想一想:某年的六月一日是星期五,这个月有5个星期()和星期(). 例2某年的3月份正好有4个星期三和4个星期六,那么这个月的1日是星期几? 有4个星期还多3天。这3天是连续的而 且不能是星期三和星期六,因此,也不可 能是在星期三和星期六之间的星期四和星 期五。这样,只能是星期一、星期二和星 期日。 即这3天按顺序是星期日、一、二(29日、30日、31日)。所以,三月一 日是星期日(如图)。 例3有一个月,星期四的天数比星期三多,星期日的天数比星期六少,这个月的20日是星期几? 解:要求某月某日是星期几,一般可以由这个月的第一日或最后一日是星期 几推出. 由条件“星期四的天数比星期三多,星期日的天数比星期六少”可知这个月 的星期三、星期日只有4个,而星期四、星期六都有5个.从而推知在星期四和 星期六之间的星期五也应有5个.这个月有31天,31÷7=4…3,而且1日是星期 四,31日是星期六. 再由1日是星期四知,8日、15日、22日也是星期四,得知20日就是星期 二.或由31日是星期六,31-20-7=4,推算出20日是星期二(如图).

C语言运算符与表达式的练习题

C语言运算符与表达式的练习题 (作业写到纸质作业本上,在规定时间内交给助教批阅,不要 再网上提交) 一、单项选择题 (1) 以下选项中,正确的C 语言整型常量是。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中,是不正确的C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" (3) 在C 语言中,字符型数据在计算机内存中,以字符 的形式存储。 A. 原码 B. 反码 C. ASCII 码 D. BCD码 (4) 字符串的结束标志是。 A. 0 B. '0' C. '\0' D. "0" (5) 算术运算符、赋值运算符和关系运算符的运算优先级按 从高到低依次为。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运 算、赋值运算

C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 (6) 逻辑运算符中,运算优先级按从高到低依次为。 A. &&,!,|| B. ||,&&,! C. &&,||,! D. !,&&,|| (7) 表达式!x||a==b 等效于。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) (8) 设整型变量m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 (9) int b=0,x=1;执行语句if(x++) b=x+1; 后,x,b 的值依次为。 A. 2,3 B. 2,0 C. 3,0 D. 3,2 (10) 设有语句int a=3;,则执行了语句a+=a-=a*=a; 后,变量 a 的值是。 A. 3 B. 0 C. 9 D. -12 (11) 在以下一组运算符中,优先级最低的运算符是。 A. * B. != C. + D. =

最新数学运算之星期日期问题

数学运算之星期日期问题 华图教育左宏帅 谈到星期日期问题,就涉及到大、小年和大、小月,大、小年也就是平年和闰年,大家都知道四年一闰、百年不闰、四百年闰,3200年不闰。大、小月的来历呢?就是公元前46年,罗马统帅儒略凯撒制定历法。由于他出生在7月,为了表示他的伟大,决定将7月改为“儒略月”,连同所有的单月都规定为31天,双月为30天。这样一年多出一天,2月是古罗马处死犯人的月份,为了减少处死的人数,将2月减少1天,为29天。 凯撒的继承人奥古斯都出生在8月,他仿照恺撒的做法,把8月增加1天,定为“奥古斯都月”,并把10月、12月也改为31天,将9月、11月改为30天。全年又多出1天,他又从2月减少了1天,于是2月变成了28天,到闰年才29天。这样沿袭下来,就有7月前单月为大月,7月后双月为大月,二月28天。 这里常见的题目就是告诉我们某年某月某日是周几,过几年后的同样的月日是周几?我们都知道平年365天,除以7商是52余数为1,一个季度是几周呢?这样不好记得话,扑克牌我们都很熟悉吧,除了大小王一共也是52张,4个花色正好对应4个季度。 例如:2008年8月21日星期四 2009年8月21日星期几? 2011年8月21日星期几? 2015年8月21日星期几? 2075年8月21日星期几? 2079年8月21日星期几? 2009年8月21日经过一年,没有2月29日,加1,则为星期五。 注意1:计算时不是加闰年,而是加2月29日,因此做题时关键是看有无2月29日。 2011年8月21日经过三年,其中无2月29日,故为星期日。 2015年8月21日在2011年8月21日的基础上又经过四年,必然有一2月29日,故加5,为星期五。 2075年8月21日在2015年8月21日的基础上又经过60年,必然有60÷4=15个2月

逻辑运算符和表达式(c语言)

南京高等职业技术学校 课堂教学设计 授课时间:2014年11月6日第11周星期四教学目标教学准备 授课教师课时课程通过本节课的学习,学生能够: 1.清晰地说出各种逻辑运算符; 2.正确运算出逻辑表达式的值,并 通过程序验证结果; 重点教案□√ 马丽娟 1 C语言多媒体课件□√班级授课地点课题教学讲义□ 512212 机房4.2逻辑运算符与逻辑表达 式 1.逻辑表达式的求值运算; 2.逻辑表达式的求值优化。 学生工作页□ 课堂特殊要求(指教师、学生的课前准备活动等) 教师:安装Win-TC程序难点 教具□√ 逻辑表达式的求值优化授课形式 理论讲授课 教学环节时间分配教师活动学生活动教学方法媒体手段导入新课 5 提出问题,并举例说明听讲、思考、回答讲授法PPT 新课讲授20 讲授、分析听讲、讨论并记录讲授法PPT 巩固练习15 布置任务、巡视、答疑思考、编程并回答问题练习法Win-TC 课堂小结 3 归纳、总结听讲、回答问题讲授法PPT 布置作业 2 布置作业记录讲授法PPT 板书设计 §4.2 逻辑运算符与逻辑表达式 ?逻辑运算符:&&、||、! ?逻辑表达式的值:非0即1 ?逻辑运算的求值优化工作任务/教学情境设置 无课后作业 书面作业:P52 随堂练习 课后反思

教案纸 教学内容 4.2 逻辑运算符与逻辑表达式 一、复习导入(5min) 1. 复习:请学生说出关系运算符有哪些? 请学生回答关系运算表达式的值? 教师进行补充。 2.导入新课: 1、学生参加技能大赛培训的条件? ?扎实的专业知识与较高的实践能力 教师强调与的关系 2、参加技能大赛集训而停课的条件? ?移动互联或智能家居 教师强调或的关系 3、学生回答引入禁烟区的条件? ?没有吸烟非 教师强调非的关系 二、新课讲授(20min) 逻辑运算符 1.教师根据逻辑关系给出三种逻辑运算符的表示形式: &&、||、! 2.教师利用具体的表达式关系分析各种逻辑运算符的作用: 逻辑与相当于英语中的and; 逻辑或相当于英语中的or; 逻辑非相当于英语中的no; 3.教师根据具体的逻辑关系引出逻辑表达式的概念及表示形式: 表达式1&&表达式2 a&&b 表达式1||表达式2 a || b !表达式!a

三年级下册数学素材-根据年、月、日推算是星期几的公式 人教新课标(2014秋)

人教版小学三年级数学下册根据年、月、日推算是星期几的公式 有时候,想知道公元某年某月某日是星期几,可以用下面的公式算出来: 这里的方括号表示只取商的整数部分。式中: x :这一年是公元多少年。 y :这一天是这一年的第几天。 s :星期几。不过要先除以7,再取余数。没有余数是星期日,余数是1、2、3、4、5、6,分别是星期一、星期二、星期三、星期四、星期五、星期六。 比如,2010年国庆节(10月1日)是星期几? x =2010。 y =31+28+31+30+31+30+31+31+30+1=31×5+30×3+28+1=274。 s =2010-1+502-20+5+274=2770,2770÷7余5。 所以,2010年国庆节是星期五。 如果,你只想知道这个公式怎样用,到这儿就可以了。y x x x x s +?? ????-+??????--??????-+-=40011001411

而要想知道这个公式的道理是什么,那可就说来话长了。 “星期制”是公元321年3月7日,古罗马皇帝君士坦丁宣布开始实行的,并且规定这一天为星期一。实际上,就是把公元元年元旦(公元1年1月1日)规定为星期一。(相当于公式中的x=1,y=1,所以s=1。) 通常1年有365天,365÷7=52……1,就是说比52个星期多1天。所以,同一个日期,下一年是星期几,就要比上一年向后推1天。比如,上一年元旦是星期三,下一年元旦就是星期四。 “通常每过1年,把同一日期是星期几向后推1天”,是理解这个公式的关键。 要想知道某年某月某日是星期几,首先,要知道这一年元旦以公元元年元旦是星期一为起点,已经把星期几向后推了多少天,还要知道这一天是这一年的第几天。而要知道这一年元旦已经把星期几向后推了多少天,可以从公元元年到这一年已经过了多少年算起,先按1年向后推1天计算,再根据闰年的规定进行调整。 闰年的规定是:年份是4的倍数的一般都是闰年,其中,年份是整百数的一般不是闰年,只有年份是400的倍数的才是闰年。

C语言数据类型与表达式习题及答案

第一章数据类型,运算符与表达式 一.选择题 1.不合法的常量是A。 A)‘/2’B) “”C)‘’D)“483” 2. B 是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 3.在以下各组标识符中,合法的标识符是(1)A,(2) C ,(3) D 。 (1)A)B01 B)table_1 C)0_t D)k% Int t*.1 W10 point (2)A)Fast_ B)void C)pbl D) Fast+Big abs fabs beep (3)A)xy_ B)longdouble C)*p D)CHAR 变量1 signed history Flaut 4. 不属于合法的C语言长整型常量的是 C 。 A)5876273 B)0L C)2E10 D)(long)5876273 7.下面选项中,均是合法浮点数的是 B 。 A)+1e+1 B)-0.60 C)123e D)-e3 5e-9.4 12e-4 1.2e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0 8.在C语言中,要求参加运算的数必须是整数的运算符是 C 。 A)/ B)* C)% D) = 9.在C语言中,字符型数据在内存中以 D 形式存放。 A)原码B)BCD码C)反码D)ASCII码10.下列语句中,符合语法的赋值语句是 C 。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=7+b,b++,a+7;D)a=7+b = c=a+7; 11. B 是非法的C语言转义字符。 A)‘\b’B)‘\0xf’C)‘\037’D)‘\’’12.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中, B 是正确的。 A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 13.与代数式x y u v ? ? 不等价的C语言表达式是A。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 14.在C语言中,数字029是一个 D 。 A)八进制数B)十六进制数C)十进制数D)非法数 16.对于char cx=?\039?;语句,正确的是A。 A)不合法B)cx的值是?\03? C)cx的值为四个字符D)cx的值为三个字符 17.若int k=7,x=12;则能使值为3的表达式是 D 。 A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 18.为了计算s=10!(即10的阶乘),则s变量应定义为 C 。 A)int B)unsigned C)long D)以上三种类型均可

根据公历日期计算星期的公式

根据公历日期计算星期的公式 蔡勒(Zeller)公式:是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。 公式如下: W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1 公式中的符号含义如下: w:星期;(w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六) c:世纪(前两位数) y:年(后两位数) m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算) d:日 [ ]代表取整,即只要整数部分。 下面以中华人民共和国成立100周年纪念日那天(2049年10月1日)来计算是星期几,过程如下: 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周年国庆)是星期五。

再比如计算2006年4月4日,过程如下: w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 =6+[6/4]+[20/4]-2*20+[26*(4+1)/10]+4-1 =-12 (除以7余2,注意对负数的取模运算!) 不过,以上的公式都只适合于1582年(我国明朝万历十年)10月15日之后的情形。 罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。 后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。 若要计算1582年10月4日及之前的日期是星期几,则公式为: y+[y/4]+[c/4]-2c+[26(m+1)/10]+d+3

C语言题库第2章 数据类型运算符和表达式√

第二章数据类型运算符和表达式 一、单项选择 1.若有定义语句:int k1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为( B ) 2.下面四个选项中,均是不合法的用户标识符的选项是( B )。 3.判断字符型变量c1是否为数字字符的正确表达式为( A ) 4.在C语言中,要求运算数必须是整型的运算符是( A )

5.下面四个选项中,均是合法的用户标识符的选项是(A)。 6.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(B)。 7.若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为(B)。

8.表达式18/4*sqrt(4.0)/8值的数据类型为(B)。 9.若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( D ) 10.判断字符型变量c1是否为小写字母的正确表达式为(B)。

11.在C语言中,char型数据在内存中的存储形式是(C)。 12.以下选项中关于C语言常量的叙述错误的是:( D ) 13.下面正确的字符常量是(B)

14.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( D) 15.以下选项中,能表示逻辑值"假"的是( B ) 16.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为(C)

17.以下选项中非法的字符常量是( B ) 18.以下关于C语言数据类型使用的叙述中错误的是(B ) 19.设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为(C)。

C语言运算符大全资料

C语言运算符大全 C语言的内部运算符很丰富,运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言有三大运算符:算术、关系与逻辑、位操作。另外,C还有一些特殊的运算符,用于完成一些特殊的任务。 2.6.1算术运算符 表2-5列出了C语言中允许的算术运算符。在C语言中,运算符“+”、“-”、“*”和“/”的用法与大多数计算机语言的相同,几乎可用于所有C语言内定义的数据类型。当“/”被用于整数或字符时,结果取整。例如,在整数除法中,10/3=3。 一元减法的实际效果等于用-1乘单个操作数,即任何数值前放置减号将改变其符号。模运算符“%”在C语言中也同它在其它语言中的用法相同。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。 最后一行打印一个0和一个1,因为1/2整除时为0,余数为1,故1%2取余数1。 2.6.2自增和自减 C语言中有两个很有用的运算符,通常在其它计算机语言中是找不到它们的—自增和自减运算符,++和--。运算符“++”是操作数加1,而“--”是操作数减1,换句话说:x=x+1;同++x;x=x-1;同--x; 自增和自减运算符可用在操作数之前,也可放在其后,例如:x=x+1;可写成++x;或x++;但在表达式中这两种用法是有区别的。自增或自减运算符在操作数之前,C语言在引用操作数之前就先执行加1或减1操作;运算符在操作数之后,C语言就先引用操作数的值,而后再进行加1或减1操作。请看下例: x=10; ;y=++x; 此时,y=11。如果程序改为: x=10;y=x++; 则y=10。在这两种情况下,x都被置为11,但区别在于设置的时刻,这种对自增和自减发生时刻的控制是非常有用的。在大多数C编译程序中,为自增和自减操作生成的程序代码比等价的赋值语句生成的代码 要快得多,所以尽可能采用加1或减1运算符是一种好的选择。 。下面是算术运算符的优先级: :最高++、- -- -(一元减) *、/、%最低+、-编译程序对同级运算符按从左到右的顺序进行计算。当然,括号可改变计算顺序。C语言 处理括号的方法与几乎所有的计算机语言相同:强迫某个运算或某组运算的优先级升高。 2.6.3关系和逻辑运算符 关系运算符中的“关系”二字指的是一个值与另一个值之间的关系,逻辑运算符中的“逻辑”二字指的是连接关系的方式。因为关系和逻辑运算符常在一起使用,所以将它们放在一起讨论。关系和逻辑运算符概念中的关键是True(真)和Flase(假)。C语言中,非0为True,0为Flase。使用关系或逻辑运算符的表达式对Flase和Ture分别返回值0或1(见表2-6)。

C语言程序设计实验报告实验数据类型运算符和表达式

凯里学院C 语言程序设计实验报告 ×××××专业××年级××班,学号××××××姓名××成绩 合作者实验日期年月日 指导教师评阅日期年月日 实验二数据类型、运算符和表达式 一、实验目的: (1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 (2)学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C 语言的输入和输出函数的使用 (4)进一步熟悉C 程序的编辑、编译、连接和运行的过程,学会使用stepbystep 功能。 (5)认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。 二、实验内容: (1)输人并运行下面的程序 #include voidmain() { charc1,c2; c1='a'; c2='b'; printf("%c%c\n",c1,c2); } (2)按习题3.7的要求编程序并上机运行 该题的要求是: 要将“China ”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。 例如,字母“A ”后面第4个字母是“E ”,用“E ”代替“A ”。因此,“China ”应译为“Glmre"。 请编一程序,用赋初值的方法使。cl ,c2,c3,c4,c5五个变量的值分别为‘C ’、‘h ’、‘i ’、‘n ’、‘a ’,经过运算,使cl ,c2,c3,c4,c5分别变为‘G ’、‘l ’、‘m ’、‘r ’、‘e ’,并输出。 三、实验步骤: (1)输人并运行下面的程序 #include voidmain() { charc1,c2; c1='a'; c2='b'; 装 订 线 装 订 线

C语言程序设计实验报告实验数据类型运算符和表达式

C语言程序设计实验报告实验数据类型运算符和表 达式 This model paper was revised by the Standardization Office on December 10, 2020

凯里学院C 语言程序设计实验报告 ×××××专业××年级××班,学号××××××姓名××成绩 合作者实验日期年月日 指导教师评阅日期年月日 实验二数据类型、运算符和表达式 一、实验目的: (1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 (2)学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C 语言的输入和输出函数的使用 (4)进一步熟悉C 程序的编辑、编译、连接和运行的过程,学会使用stepbystep 功能。 (5)认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。 二、实验内容: (1)输人并运行下面的程序 #include voidmain() { charc1,c2; c1='a'; c2='b'; printf("%c%c\n",c1,c2); } (2)按习题3.7的要求编程序并上机运行 该题的要求是: 要将“China ”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。 例如,字母“A ”后面第4个字母是“E ”,用“E ”代替“A ”。因此,“China ”应译为“Glmre"。 请编一程序,用赋初值的方法使。cl ,c2,c3,c4,c5五个变量的值分别为‘C ’、‘h ’、‘i ’、‘n ’、‘a ’,经过运算,使cl ,c2,c3,c4,c5分别变为‘G ’、‘l ’、‘m ’、‘r ’、‘e ’,并输出。 三、实验步骤: (1)输人并运行下面的程序 #include voidmain() { charc1,c2; c1='a'; 装 订 线 装 订 线

相关主题