首页 > 其他分享 >两数相除(c语言)

两数相除(c语言)

时间:2024-10-04 20:21:03浏览次数:10  
标签:count return 语言 int res 相除 dividend divisor

1.//给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。
//整数除法应该向零截断,也就是截去(truncate)其小数部分。
// 例如,8.345 将被截断为 8 , - 2.7335 将被截断至 - 2 。
//返回被除数 dividend 除以除数 divisor 得到的 商 。
//注意:假设我们的环境只能存储 32 位 有符号整数,其数值范围是[−231, 231 − 1] 。
// 本题中,如果商 严格大于 231 − 1 ,则返回 231 − 1 ;如果商 严格小于 - 231 ,则返回 - 231 。
//示例 1:
//输入: dividend = 10, divisor = 3
//输出 : 3
//解释 : 10 / 3 = 3.33333..,向零截断后得到 3 。
//示例 2 :
//    输入 : dividend = 7, divisor = -3
//    输出 : -2
//    解释 : 7 / -3 = -2.33333..,向零截断后得到 - 2 。

2.我们要知道dividend=count*divisor,然后返回count,就可以了。先判断当dividend >0,divisor=0或者正负1的时候,进行判断,然后判断dividend=0或者正负1的时候,进行判断。然后将dividend,divisor均处理成负数,防止溢出,(注意:被除数绝对值小于除数绝对值)。然后每次相减divisor,count++,res=res+count.(注意:判断dividend是否不于0,如果大于0,说明减多了,有返回一步)。

#include<stdio.h>
int divide(int dividend, int divisor) {
    int res, count;
    int temp;
    int flag = 0;
    //判断当dividend >0&& divisor == -1|| divisor == 1的时候
    if (dividend >0&& divisor == -1|| divisor == 1) {
        if (divisor == -1)
            return -dividend;
        if (divisor == 1)
            return dividend;
    }
    //判断dividend =0
    if (dividend == 0)
        return 0;
    if (divisor == 1)
        return dividend;
    if (divisor == -1)
        return -dividend;

    // 均处理成负数,防止溢出
    if (dividend > 0 && divisor < 0) {
        flag = 1;
        dividend = -dividend;
    }

    if (dividend < 0 && divisor > 0) {
        flag = 1;
        divisor = -divisor;
    }

    if (dividend > 0 && divisor > 0) {
        dividend = -dividend;
        divisor = -divisor;
    }

    if (dividend == divisor) {
        if (flag == 0)
            return 1;
        else
            return -1;
    }

    // 被除数绝对值小于除数绝对值
    if (dividend > divisor)
        return 0;

    temp = 0;
    count = 1;
    res = 0;
    //线性增长着减,每次减dividend==count*|divisor|
    while (dividend <= divisor) {
        temp += divisor;
        dividend -= temp;
        res = res + count;
        count++;
    }
    //减多了,倒回去再一个一个减
    if (dividend > 0) {
        dividend += temp;
        res = res - count + 1;
        while (dividend <= divisor) {
            dividend -= divisor;
            res++;
        }
    }

    if (flag == 1)
        res = -res;

    return res;
}
int main()
{
    int i = 0;
    int j = 0;
    scanf_s("%d%d", &i, &j);
    int dev = divide(i, j);
    printf("%d\n", dev);
	return 0;
}

标签:count,return,语言,int,res,相除,dividend,divisor
From: https://blog.csdn.net/scy2429828663/article/details/142695625

相关文章

  • 快乐数(c语言)
    1.「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是无限循环但始终变不到1。如果这个过程结果为1,那么这个数就是快乐数。如果n是快乐数就返回true;不是,则返回false。1<=n<=2^31 -1......
  • 找到字符串中第一个匹配项的下标(c语言)
    1./给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回 -1。//示例1://输入:haystack="sadbutsad",needle="sad"//输出:0//解释:"sad"在下标0和6处匹......
  • App 开发语言
    App开发主要有两大技术路线,分别是原生开发和混合开发.原生开发指的是谷歌官方的技术.混合开发会借助一些前端的技术,比如H5,Flutter,ReactNative.混合开发会用到一些网页的技术.混合开发的渲染性能没有原生开发的好.混合开发可以跨平台,比如Flutter,ReactNative......
  • 扩散引导语言建模(DGLM):一种可控且高效的AI对齐方法
    随着大型语言模型(LLMs)的迅速普及,如何有效地引导它们生成安全、适合特定应用和目标受众的内容成为一个关键挑战。例如,我们可能希望语言模型在与幼儿园孩子互动时使用不同的语言,或在撰写喜剧小品、提供法律支持或总结新闻文章时采用不同的风格。目前,最成功的LLM范式是训练一......
  • C语言中对象式宏
     001、不使用对象式宏[root@localhosttest]#lstest.c[root@localhosttest]#cattest.c##测试程序#include<stdio.h>intmain(void){inti,sum=0;intv[5]={3,8,2,4,6};##定义int【5】型数组......
  • R语言中gene symbol 转换为ENTREZID, clusterprofile富集分析
    001、genes<-read.table("genes.txt")##读取基因symbolhead(genes)tail(genes)genes<-genes[genes!="NA_NA"&genes!="unknow",,drop=FALSE]##去除无效信息(可选)genes_list<-unique(ge......
  • 基于Python的自然语言处理系列(22):模型剪枝(Pruning)
            在深度学习领域,尤其是当模型部署到资源有限的环境中时,模型压缩技术变得尤为重要。剪枝(Pruning)是一种常见的模型压缩方法,通过减少模型中不重要的参数,可以在不显著降低模型性能的情况下提升效率。在本文中,我们将详细介绍如何在PyTorch中使用剪枝技术,并通过一些实......
  • 自然语言处理之话题建模:Neural Topic Models:神经主题模型的未来趋势与研究方向_
    自然语言处理之话题建模:NeuralTopicModels:神经主题模型的未来趋势与研究方向引言话题建模的定义与重要性话题建模是一种统计建模技术,用于发现文档集合或语料库中隐藏的主题结构。在自然语言处理(NLP)领域,话题建模被广泛应用于文本挖掘、信息检索、文本分类和推荐系统等......
  • C语言中指针解引用
    在32位的操作系统中,指针占据4个字节。在64位的操作系统中,指针占据8个字节。以下程序都是在32位操作系统中运行的。1.指针解引用程序运行结果为12345600进入调试,可以看到变量a在内存占4个字节,a的地址为0x008FF794,在内存中的存储方式为小端存储方式。当程序走完*p=0这一行......
  • 65.【C语言】联合体
    目录目录1.定义2.格式3.例题答案速查分析4.练习答案速查分析5.相同成员的联合体和结构体的对比6.联合体的大小计算2条规则 答案速查分析练习答案速查分析7.联合体的优点8.匿名联合体1.定义和结构体有所不同,顾名思义:所有成员联合使用同一块内存空间,因......