计算机控制结构应用案例

zhushican 2年前 (2022-06-09) 六六互联 437 0

word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255); line-height: 2;">从程序流程的角度来看,程序可以分为三种基本结构, 即顺序结构、分支结构、循环结构。 这三种基

word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255); line-height: 2;">本结构可以组成所有的各种复杂程序。C语言提供了多种语句来实现这些程序结构。

【案例描述】

编程实现:输入日期,输出该日期的星期。

输入:20201129

说明:前四位表示年,第5、6位表示月,第7、8位表示日。

输出:2020年11月29日是星期7

计算机控制结构应用案例

【案例分析】

1、利用Zeller(蔡勒)公式,可以根据日期直接计算出星期数。

Zeller公式为:w=[c/4]-2c+y+[y/4]+[26*(m+1)/10]+d-1

其中,c为年份的前二位数,y为年份的后二位数,m为月份,d为日。[ ]表示取整数部分。w除以7求得的余数即为星期数(0为星期日,1至6为星期一至星期六)。

注意: 1、2月需换算为上年的13、14月。这时年数也需要减去1。

2、可由输入格式符控制数据输入:

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

其中%4d表示输入一个整数,不能超过4位。如果输入20201129,则y=2020,m=11,d=29。

【参考代码】

main()

{ int y,m,d,c,x;

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

  m+=m<3?y--,12:0;

  c=y/100;

  x=y%100;

  c=(c/4-2*c+x+x/4+26*(m+1)/10+d-1)%7;

  printf("%d年%d月%d日是星期%d",y,m,d,c==0?7:c);

}