某天是星期几 + 三目运算符的一些错误操作解释

某天是星期几 + 三目运算符的一些错误操作解释

泽勒一致性是由克里斯汀·泽勒开发的用于计算某天是星期几的算法。

​ 其中:

​ 一、h 是一个星期中的某一天(0 为星期六,1 为星期天,2 为星期一……6 为星期五)

​ 二、q 是某月的第几天

​ 三、m 是月份(3 为三月,4 为 四月……)。一月和二月分别记为上一年的 13 和 14 月

​ 四、j 是世纪数 -1,(即为 year÷100)

​ 五、k 是该世纪的第几年(即 year%100)

​ 注意,公式中的除法是整除。编写程序,输入年月日,输出它是一周中的星期几。

​ 一月和二月在公式里是用 13 和 14 表示的,所以需要将用户输入的月份 1 转换为 13,2 转换为 14,同时将年份改为前一年。

#include <stdio.h>
int main ()
{
	int y,m,d;
	int k,j,h;
	scanf("%d%d%d",&y,&m,&d);
	m == 1 ? m = 13  : m == 2 ? m=14 : 0 ;
	m == 13 ? y-- : m == 14 ? y -- : 0;
	k = y%100;
	j = y/100 ;
	h = (d + 26*(m+1)/10 + k + k/4 +j/4 +5*j )%7;

	h = h == 0 ?  6 : h == 1 ?  7 : h - 1;

	printf("%d",h);
	return 0;
}
输入:
2015 4 25
输出:
6

以上就是使用泽勒一致性的计算星期几的算法了。

------------------------------下面解释三目运算符的一些错误操作-------------------------------

1、 判断的值不能进行表达示运算h = h - 2,但可以直接赋值: h = 6
在这里插入图片描述
在这里插入图片描述

2、 会出现警告,NULL是指针类型,跟int类型不一样,

在这里插入图片描述
解决:将NULL改成 0 也可以 掠过,并且不出现警告

3、 这种表达式,会把m归零,而不是掠过
在这里插入图片描述

4. 三目运算符内,连续进行多个表达式计算会出现的错误

错误:

m == 1 ? {m = 13;y–} : m == 2 ? {m=14;y–} : 0 ;
error: expected expression before ‘{’ token m == 1 ? {m = 13;y–} : m == 2 ? {m=14;y–} : 0 ;

正确: 将 {} 去掉,换成, 就可以进行多个表达式输出了

m == 1 ? m = 13,y-- : m == 2 ? m=14,y-- : 0 ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值