扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
C语言中没有mod函数,mod在matlab中有,是取余的意思,跟C语言中运算符%的功能相似。
公司主营业务:做网站、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出缙云免费做网站回馈大家。
在C语言中mod可能是用户自定义的一个函数。如:
int mod(int a, int b) // 运算符%左右操作数必须为int型
{
return a%b; // 返回a/b的余数
}
从上面的例子可以看出来,mod函数的本质还是取余。
这个程序很简单,下面我们来一步一步看
char s1[5]="ABCD",s2[5]; 定义了两个字符数组,其中一个赋值为ABCD
然后转到函数fun的分析
其中最关键的一句话就是
for(k=0;kn;k++) a2[k]=(a1[k]-'A'-3+26)%26+'A';
这句话是遍历指针a1所指向的字符数组,然后对每一位做处理
具体的处理过程如下
a1[k]-'A'-3+26这句话相当于是将a1[k]中字符向前数3位,计算出其相对于字符‘A’的偏移量,其中有一个+26,这个是必须的,因为前一步-3可能出现负数,负数在C程序的求模运算中是得不到我们想要的整数结果的。然而,+26后可能超出了我们的偏移量范围,所以在括号外有一个%26,而后+‘A’将新求出的字符赋值给a2的相应位置。
其实上面这个功能说白了,就是每一位的字符都向前数3位,将'A'~'Z'视为一个圈。所以‘A’向前3为就是X,‘B’向前3为就是Y,依次类推。
所以结果是XYZA
至于你所说的2%3为1,这是不可能的,可能是你看错了。2%3=2
模运算就是取余运算,余数一定要小于除数,并且要大于等于0,所以对于模运算来说,结果是唯一的。
至于程序中,负数对正数取余时会出现负结果的情况,是因为,C语言中对于模运算来说,符号位不参与运算,所以就会得到负数的结果,所以在写程序的时候,我们要对此类情况做判断,并加以特殊处理,就像此例中-3后+26一样,就是为了避免出现负数结果的情况。
它不是说得很详细了么, 向负无穷方向舍入(floor()函数 (又称为地板函数, 与之相对还有天花板函数)--往小方向取整,即向负无穷方向取整), 8/3=2.67的地板为2(即模为2), -8/3=-2.67的地板为-3(即模为-3)
mod的原理就是求余数。
比如:10除以3,商是3,余数是1
在c++里面,用'/'表示求商,而用%表示秋余数
所以10/3=3,10%3=1。
扩展资料:
语法:
MOD(number,divisor)
参数:
Number 为被除数。
Divisor 为除数。
在Oracle中,如果 divisor 为0,则函数直接返回number。
说明:
函数MOD可以借用函数 INT 来表示:
MOD(n, d) = n - d*INT(n/d)
示例:
MOD(3, 2) 等于 1
MOD(-3, 2) 等于1
MOD(3, -2) 等于-1
MOD(-3, -2) 等于-1
MOD(-3, 0) 等于-3
MOD(3, 0) 等于3
MOD(2, 0) 等于2
MOD(4, 3) 等于1
而在Excel中,除数不能为0,否则会报错。
MOD(3, -2) 等于-1(与后面的数符号相同)
MOD(3, 0) 报错,输出结果为#DIV/0!
参考资料:
百度百科-MOD函数
C语言提供了一个取余数的运算符%,称之为“模”运算符,只有两个整数之间才可以进行模运算。
a % b 表示 用b来整除a,商整数,得到余数。
如:
5%3 = 2
4%3 =1
3%3 =0
扩展资料:
数学函数
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回x^y的值
double pow10(int p) 返回10^p的值
double sqrt(double x) 返回+√x的值
double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度
double atan(double x) 返回x的反正切tan-1(x)值,x为弧度
double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数
double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数
char *ecvt(double value,int ndigit,int *decpt,int *sign),将浮点数value转换成字符串并返回该字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign),将浮点数value转换成字符串并返回该字符串
参考资料来源:百度百科-C语言函数
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流