为什么用c语言求余求模来把两位数分离,和赋定时初值

为什么用c语言求余求模来把两位数分离,和赋定时初值,第1张

求余和求模 *** 作,在C语言中实际上是同一个 *** 作,即模除运算,符号为%

a%b其含义为:求a除以b所得余数

在C语言中,可以使用整型模除和除法配合,来获取两位数的个位和十位。

其原理为如下。

对于两位数x,如果其个位数为b,十位数为a,(0<=a,b<=9)写成ab的形式,其真值为10a+b。

于是求x的个位数的表达式可以写成x%10,是因为

x%10 = (10a+b)%10=10a%10+b%10=0+b=b

这里用到了模除相关知识。

对于10a,一定是a的倍数,所以,10a对10取余一定为0。

而b为0到9的数字,比10小,对10取余时值为本身。

x/10 = (10a+b)/10 = 10a/10 +b/10=a+0 = a

这里用到的是整型除法的知识。

10a/10=a和b/10=0

其中,b<10,对于整型,除法结果只取整数部分,于是b/10=0

通过以上推理,可以得到,对于10进制二进制数x,x/10为十位数,而x%10为个位数。

至于提问中的赋定时初值,这个没有要求一定用模除或除法。但有时会要求分段做初始化。比较常见的有两种。

1 系统为提高效率,或其他的原因,对定时器接口做了分别的封装,而使其适用于不同量级的定时。比如分别封装为毫秒级别的和秒级别的。

这样对于一个超过一秒且带有毫秒数的定时,就需要分化为秒级和毫秒级两部分。比如2500毫秒,就需要分化成2秒+500毫秒的形式。

基于两位数取各个位的同样原理,对于时间x,可以得到计算秒的表达式为x/1000, 同时计算毫秒的表达式为x%1000。

2 系统对定时器的设置为寄存器形式,分为高位和低位。

以双字节16位寄存器为例,对于时间x,可以写成高位为x/256,和低位为x%256的格式。

事实上,这种写法是低效的,C语言提供的更高效的位 *** 作同样可以实现该目的,即

低位为x&0xFF, 高位为((unsigned short)x>>8)&0xFF。由于本项 *** 作与提问关系不大,所以不对其原理进行介绍了。

1、首先在打开的C语言软件中,一开始的头文件需要加入math,如下图所示。

2、之后定义一个int类型c,然后定义两个float类型b和c,如下图所示。

3、并且给a、b、c分别赋值,如下图所示。

4、接着用fmod函数计算c除以a的余数,最后用printf函数输出。

5、编译运行之后就可以看到结果,如下图所示就完成了。

int main()

{

    int n1 = 0, n2 = 1;

    

    printf("输入两个整数:");

    scanf("%d %d", &n1, &n2);

    

    if (n2 == 0)

    {

        printf("除数不能为0!\n");

        return -1;

    }

    

    printf("商:%d\n", n1/n2);

    printf("余数:%d\n", n1%n2);

    

    return 0;

}

以上就是关于为什么用c语言求余求模来把两位数分离,和赋定时初值全部的内容,包括:为什么用c语言求余求模来把两位数分离,和赋定时初值、C语言编写程序 a=150,b=20,c=45,编写求a/b,a/c的商和余数的程序、输入两个整数,求它们整除后的商与余数 麻烦用c语言编写。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9591360.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存