不用除号,计算除法运算。思路是使用减法运算!
思路1:循环采用减法每次减去n,直到做完减法之后结果小于0为止 但是这样次数较大
     如求100/3,需要次数为34次。
 思路2:循环采用减法每次减去k,K的值每次会增加2倍,也就是左移1位,这样来优化思路1的算法
       如求100/3,需要次数为3*2^i == 100时候的i的值,i=5时 3*2^6=96,i=6时 3*2^6=128,再计算4中几个3即可
        k = 3*2^0          sum = 1<<0;
      = 3*2^1           sum = 1<<2;
        .                              .
        .                              .
                 = 3*2^5          sum = 1<<5; 
                 = 3*2^6          sum !=1<<6; //因为3*2^6 == 128,这是边界值,3*2^5 < 100 < 3*2^6.100-3*2^5=4 > 3,故需要计算100-96中有多少个3

贴出思路2的代码

 1 #include <stdio.h>
2 #include <stdlib.h>
3 //计算 a/b 的值.
4 int div(int a, int b){
5 int m,n,k,i,sum,tmp;
6 //计算 m / n 的结果
7 m = a;
8 n = b;
9
10 k = n;
11 sum = 0;//最后结果
12 i = 0;//循环变量
13 //边界值判断
14 if(a < 0 || a < b)
15 return 0;
16
17 while(m >= k){
18 sum = 1<<i;
19 tmp = k;//记录扩大前的因子,供边界调试时候使用
20 k = k<<1;//因子不断的以2的倍数扩大
21 i++;
22 }
23 //比如100/4时,i=4时,k=64,sum=16;i=5时,k=128,此时100<128,需要再计算(100-64)中含有几个4,即下面的递推公式
24 sum += div(m-tmp,b);//边界值计算
25 return sum;
26 }
27 int main(int argc, char *argv[]){
28
29 int m,n,k,i,sum,tmp;
30 //计算 m / n 的结果
31 m = atoi(argv[1]);
32 n = atoi(argv[2]);
33 sum = div(m, n);
34 printf("减法%d/%d=%d\n",m,n,sum);
35 return 0;
36 }

C语言中的除法的计算的更多相关文章

  1. 04 Storage and Calculation C语言中的存储和计算

    文章内容来源于Programming Hub的学习记录,本人整理添加了中文翻译,如有侵权,联系本人删除 Variables C语言中的变量 Let's extend our mainfunction ...

  2. 关于C语言中结构体大小计算

    结构体大小的计算,.网上说法一大堆还都不一样分什么对齐不对齐,偏移量什么的.. 在此稍微举例简单总结下: 对齐原则:每一成员的结束偏移量需对齐为后一成员类型的倍数  补齐原则:最终大小补齐为成员中最大 ...

  3. C语言中结构体大小计算

    1.普通结构体 struct student { char sex; char a; char b; int age; char name[100]; }; 该结构体大小为108 解答:1.先算str ...

  4. C语言中计算变量占用内存空间

    C语言中计算变量占用内存空间 在C语言中通常用[sizeof]运算符计算变量占内存空间,如下面的例子:

  5. C语言中复数运算及调用blas,lapack中复数函数进行科学计算

    C语言中常用的数据类型主要int, float ,double ,char 等,但在科学运算中复数扮演着重要角色.这里讲下C语言中的复数运算以及如何调用blas,lapack库中的复数函数来进行科学计 ...

  6. C语言中的宏定义

    目录(?)[-] 简单宏定义 带参数的宏 运算符 运算符 宏的通用属性 宏定义中圆括号 创建较长的宏 较长的宏中的逗号运算符 宏定义中的do-while循环do 空操作的定义 预定义宏 C语言中常用的 ...

  7. 《C语言深度剖析》学习笔记----C语言中的符号

    本节主要讲C语言中的各种符号,包括注释符.单引号双信号以及逻辑运算符等. 一.注释符 注释符号和注释在程序的预编译期就已经被解决了,在预编译期间,编译器会将注释符号和注释符号之间的部分简单的替换成为空 ...

  8. C语言中函数参数传递

    C语言中函数参数传递的三种方式 (1)值传递,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值.(2)地址传递,就是把 ...

  9. 【R语言入门】R语言中的变量与基本数据类型

    说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...

随机推荐

  1. Myod 选做

    一.题目要求 1.复习c文件处理内容 2.编写myod.c 用myod XXX实现Linux下od -tc -tx XXX的功能 3.main与其他分开,制作静态库和动态库 4.编写Makefile ...

  2. Verdi Protocol Analyzer Debug 简单使用

    转载:Verdi Protocol Analyzer Debug 简单使用_Holden_Liu的博客-CSDN博客_verdi 技巧 文档与源码: User Guide: UVMDebugUserG ...

  3. NOIP模拟88(多校21)

    前言 对于这套题的总体感觉就是难,然后就是自己很菜... 对于 T1 考试时只会一个最垃圾的背包,考完之后对于思路这一块也不是很顺利,大概这就是薄弱的地方吧. 然后 T2 是比较简单的一道题了,但是考 ...

  4. vue路由监听和参数监听

    1.路由携带数据跳转 routerAction(hideDisplays, data) { switch (hideDisplays) { case "pubAccountMenu" ...

  5. notepad++ 替换回车换行

    以" | "为分隔符,换行 结果如下图:

  6. Linux 安装nacos

    1.已有mysql环境 2.解压文件 #tar -zxvf package/nacos-server-2.0.1.tar.gz 3.创建数据库nacos_config(confnacos-mysql. ...

  7. systemd-nspawn以及container的学习

    container的分类 目前container可以分为两大类,一类是Privileged container,一类是Unprivileged container. Privileged contai ...

  8. linux 安装docker(一)

    1.安装环境 此处在Centos7进行安装,可以使用以下命令查看CentOS版本 lsb_release -a 在 CentOS 7安装docker要求系统为64位.系统内核版本为 3.10 以上,可 ...

  9. ES6-字符串-模板字符串(复习+学习)

    昨天学习了字符串对象和字符串的表示,就是利用utf-8等不同的编码方式,还有许多的对象方法,都是处理字符串的方法,挺方便的,今天我学习了一下字符串模板,这里记录i一下学习的笔记,当然,今天学习了部分内 ...

  10. electron获取不到remote

    electron获取不到remote 问题 // 渲染进程 let remote = require('electron').remote console.log(remote) // undefin ...