C语言的abs()函数和div()函数你了解吗

C语言库中提供了许多函数,这样需要计算的时候,可以直接借助库函数,而不用自己重新编写函数。今天就来看一下C语言标准库函数里面的整型函数。

  int __cdecl abs(int _X);
  long __cdecl labs(long _X);
  div_t __cdecl div(int _Numerator,int _Denominator);
  ldiv_t __cdecl ldiv(long _Numerator,long _Denominator);

abs函数用来计算整数的绝对值,它的参数就是待计算的整数,返回值是计算后的绝对值。编写一段简单的代码,演示一下这个函数的用法。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
	int x1 = 56,x2 = -89;
	int y1,y2;
	y1 = abs(x1);
	y2 = abs(x2);
	printf("%d %d",y1,y2);
	return 0;
}

定义一个正整数,一个负整数,然后用abs函数分别求绝对值,然后将计算的结果打印出来。

如果传递进去的数字不是整数的话,输出的结果是什么呢?

abs函数里面分别传入一个正的浮点数和一个负的浮点数,计算出来的结果依然是正整数,说明传递参数后,abs函数会将传入的参强制转换为整数,然后在进行计算。

labs函数的功能和abs函数的功能是一样的,不过它主要用来计算长整数的绝对值。

div函数用来计算两个数字相除的商和余数,它有两个参数,用第一个参数(分子)除以第二个参数(分母),然后将商和余数存放在结构体中,返回的结果是一个结构体。它的结构体定义如下:

  typedef struct _div_t {
    int quot;
    int rem;
  } div_t;
  typedef struct _ldiv_t {
    long quot;
    long rem;
  } ldiv_t;

quot 是商,rem 是余数。下面通过一段代码来,来演示一下这个函数的用法。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
	int x1 = 10,x2 =3;
	div_t ret;
	ret = div(x1,x2);
	printf("%d %d",ret.quot,ret.rem);
	return 0;
}

计算10 / 3的商和余数,输出结果如下:

同样负整数也可以使用这个函数进行计算。

ldiv函数的功能和div函数的功能一样,不过它主要用来计算长整数的除法。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • C语言中的abs()函数和exp()函数的用法

    C语言abs()函数:求绝对值(整数) 头文件: #include <stdlib.h> 定义函数: int abs (int j); 函数说明:abs()用来计算参数j 的绝对值,然后将结果返回. 返回值:返回参数j 的绝对值结果. 范例 #ingclude <stdlib.h> main(){ int ansert; answer = abs(-12); printf("|-12| = %d\n", answer); } 执行 |-12| = 12 C语言e

  • python 中的divmod数字处理函数浅析

    divmod(a,b)函数 中文说明: divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数 返回结果类型为tuple 参数: a,b可以为数字(包括复数) 版本: 在python2.3版本之前不允许处理复数,这个大家要注意一下 英文说明: Take two (non complex) numbers as arguments and return a pair of numbers consisting of their quotient and remainder when

  • Vue render函数实战之实现tabs选项卡组件

    用过Element ui库的童鞋肯定知道<el-tabs>组件,简单.好用.可以自定义标签页,不知道广大童鞋们在刚开始使用<el-tabs>组件的时候有没有想过它是如何实现的?我咋刚开始使用<el-tabs>组件的时候就有去想过,也想去实现一个超级简单的tabs选项卡组件,无奈当时功力不够,未能实现.最近的一个简单项目中正好要用到选项卡组件,由于项目简单也就没有使用任何第三方库,于是就自己动手写了个选项卡组件. 1.实现tabs选项卡组件的思考 <el-tabs

  • php bcdiv和bcmul 函数的怪异现象

    一.简介 我要实现这样一个表达式 z=总奖金 n=总名数 i=自己的排民 ((n-i+1)/(1+2+3+-n))*z 这是一个分配奖金的式子.我试着用php的bc函数进行操作发现以下两种写法得出不一样的结果 表达式1: a r r [ arr[ arr[i]=bcmul(bcdiv((51- i ) , i), i),num,2), r e w a r d [ ′ L e a d e r b o a r d ′ ] , 0 ) ; 表 达 式 2 : reward['Leaderboard']

  • 实例讲解Python3中abs()函数

    Python3 abs() 函数 描述 abs() 函数返回数字的绝对值. 语法 以下是 abs() 方法的语法: abs( x ) 参数 x-- 数值表达式,可以是整数,浮点数,复数. 返回值 函数返回 x(数字)的绝对值,如果参数是一个复数,则返回它的大小. 实例 以下展示了使用 abs() 方法的实例: #!/usr/bin/python3 print ("abs(-40) : ", abs(-40)) print ("abs(100.10) : ", abs

  • C语言的abs()函数和div()函数你了解吗

    C语言库中提供了许多函数,这样需要计算的时候,可以直接借助库函数,而不用自己重新编写函数.今天就来看一下C语言标准库函数里面的整型函数. int __cdecl abs(int _X); long __cdecl labs(long _X); div_t __cdecl div(int _Numerator,int _Denominator); ldiv_t __cdecl ldiv(long _Numerator,long _Denominator); abs函数用来计算整数的绝对值,它的参数

  • C语言中回调函数和qsort函数的用法详解

    目录 回调函数 指向函数指针数组的指针 qsort(qulick sort)-库函数 回调函数 通过函数指针调用的函数,如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数. 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 举例: #include<stdio.h> void menu() { printf("*************************

  • Go语言中的流程控制结构和函数详解

    这小节我们要介绍Go里面的流程控制以及函数操作. 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.Go中流程控制分三大类:条件判断,循环控制和无条件跳转. if if也许是各种编程语言中最常见的了,它的语法概括起来就是:如果满足条件就做某事,否则做另一件事. Go里面if条件判断语句中不需要括号,如下代码所示: 复制代码 代码如下: if x > 10 {     fmt.Println("x is greater than 10&

  • C语言中利用封装好的函数实现英文字母的大小写转换

    在C语言中,利用tolower和toupper两个函数实现英文字母的大小写之间的转换 范例1:将s字符串内的小写字母转换成大写字母 #include <ctype.h> int main() { char s[] = "aBcDeFgH"; int i; printf("before toupper() : %s\n", s); for(i = 0; i < sizeof(s); i++) s[i] = toupper(s[i]); printf(

  • C语言中用于产生随机数的函数使用方法总结

    在UNIX操作系统和window的操作系统上,我们知道有一个函数rand,它就是用来产生随机数的函数API接口,那么它的原理如何实现? 如果约定a1=f(seed),an+1=f(an),那么可以得到一个序列a1,a2,a3..an,那么要制作一个伪随机函数rand,只需要让它每调用一次就返回序列的下一个元素就行.其实就是相当于第1次调用rand返回a1,第2次返回a2,-,第n次返回an,这样每次返回的数值都不一样,也就是相当于随机数了.但是其实不是真正的随机数,真正的随机数是使用物理现象产生

  • C语言文件操作中 fgets与fputs 函数详解

    C语言文件操作中 fgets.fputs 函数详解 先给出api fgets 语法: #include <stdio.h> char *fgets( char *str, int num, FILE *stream ); 函数fgets()从给出的文件流中读取[num - 1]个字符并且把它们转储到str(字符串)中. fgets()在到达行末时停止,在这种情况下,str(字符串)将会被一个新行符结束. 如果fgets()达到[num - 1]个字符或者遇到EOF, str(字符串)将会以nu

  • C语言中求字符串长度的函数的几种实现方法

    1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { assert(str != NULL); int count = 0; while (*str != '\0') { count++; str++; } return count; } 2.不创建计数器,从前向后遍历一遍,没有遇到'\0'就让指针向后加一,找到最后一个字符,记下来地址,然后用最后一个字符的地址减去起始地址,就得到了字符串的长度.

  • 详解C语言常用的一些转换工具函数

    1.字符串转十六进制 代码实现: 2.十六进制转字符串 代码实现: 或者 效果:十六进制:0x13 0xAA 0x02转为字符串:"13AAA2" 3.字符串转十进制 代码实现: 第一种,如果带负号 这个就是atoi函数的实现: 效果:字符串:"-123" 转为 -123 第二种,如果不带负号: 效果:字符串:"123" 转为 123 第三种:包含转为浮点数: 效果:字符串:"123.456" 先转为 123456,然后除以1

  • C语言字符函数、内存函数功能及实现代码

    C语言字符函数.内存函数 功能及实现 strlen函数(求字符串长度)注意点模拟实现 strcpy函数(字符串拷贝函数)注意点模拟实现 strcat函数(字符串衔接函数)注意点模拟实现 strcmp函数注意点模拟实现 strstr函数模拟实现 strtok函数使用 strerror函数使用 memcpy函数注意点模拟实现 memmove函数注意点模拟实现 memset函数注意点 strlen函数(求字符串长度) 统计字符串长度直到\0为止 注意点 1.属于<string.h>库 2.参数为字符

  • R语言dplyr包之高效数据处理函数(filter、group_by、mutate、summarise)详解

    R语言dplyr包的数据整理.分析函数用法文章连载NO.01 在日常数据处理过程中难免会遇到些难处理的,选取更适合的函数分割.筛选.合并等实在是大快人心! 利用dplyr包中的函数更高效的数据清洗.数据分析,及为后续数据建模创造环境:本篇涉及到的函数为filter.filter_all().filter_if().filter_at().mutate.group_by.select.summarise. 1.数据筛选函数: #可使用filter()函数筛选/查找特定条件的行或者样本 #filte

随机推荐