用++操作符完成其它操作符的转换

在只容许使用++操作符的情况下,请完成下面代码,实现减法、乘法和除法。注意:假设操作数全为正整数,并且可以不考虑性能,不能使用–,*,/等操作符。

a). 乘法: int multi(int opl,int op2){//op1*op2}

b). 减法: intsub(int op1,int op2){//op1-op2}

c). 除法: int div(int op1,int op2){//op1/op2}

中心思想:
利用for循环来实现不能用其它操作符的短板
 int multi(int opl,int op2)//op1*op2
{
     int mu = op1 ;
     for ( int i = 1 ; i < op2 ; i ++)//控制外层循环个数,也可以和op1交换位置,但是如果换了就要把mu赋值也换了,它小于op2而不是等于是因为前面mu已经被赋值一次
         for ( int j = 1 ; j <= op1 ; j ++)
            mu ++;
     return mu ;
}
 int sub(int op1,int op2)//op1-op2
{
     int su = - op2 ;
     for ( int i = 0 ; i < op1 ; i ++)
          su ++;
     return su ;
}
int div(int op1,int op2)//op1/op2
{
    int di = 1;
    int temp = op2 ;
     while ( op1  != op2 )//这里如果假设op2是小一点的数会更好的理解。
     {
         for ( int i = 0 ; i < temp ; i ++)
        op2 ++;//利用自身循环和加一的特点,如果自己转完加到了temp一次,就表明满足一次,di就++一次,每次加一,然后判断op1是否等于op2,如果不等于,继续循环,如果等于,退出返回di。
        di ++;
     }
     return  di ;
} 
时间: 2024-10-12 08:53:45

用++操作符完成其它操作符的转换的相关文章

switch_case,&amp;&amp;,||,条件操作符和逗号操作符,循环语句

一.switch-case switch-case语句主要用在多分支条件的环境中,在这种环境中使用if语句会存在烦琐且效率不高的弊端. switch(expression) { case const expression1: .... case const expression2; ... default: ... } 在执行过程中,expression的值会与每个case的值比较,实现switch语句的功能.关键字case和它所关联的值被称作case标号.每个case标号的值都必须是一个整形常

【C++ Primer每日一刷之十二】 箭头操作符,条件操作符,sizeof操作符,逗号,优先级

5.6. 箭头操作符 C++ 语言为包含点操作符和解引用操作符的表达式提供了一个同义词:箭头操作符(->).点操作符(第 1.5.2 节)用于获取类类型对象的成员: item1.same_isbn(item2); // run thesame_isbn member of item1 如果有一个指向 Sales_item 对象的指针(或迭代器),则在使用点操作符 前,需对该指针(或迭代器)进行解引用: Sales_item *sp = &item1; (*sp).same_isbn(item

21.C++- ++操作符重载、隐式转换之explicit关键字、类的类型转换函数

++操作符重载 ++操作符分为前置++和后置++,比如: ++a;  a++; ++操作符可以进行全局函数或成员函数重载 重载前置++操作符不需要参数 重载后置++操作符需要一个int类型的占位参数 前置++操作符的返回值为*this 后置++操作符的返回值为临时对象 例如: 转换规则如下所示: 比如: 隐式转换的隐患 隐式转换有时会因为类型不同,得到的结果大有不同,也是常见bug之一. 参考以下示例: 运行打印: 答案并非是-1000. 同样,我们使用构造函数时,也经常使用隐式转换 参考以下示

C#中??操作符和?操作符

C#中??和?操作符如何使用及意思: 为了实现Nullable数据到non-Nullable型数据的转换 ??操作符意思是取所复制??左边的,如果左边的为null,取所赋??右边的 ?是system.Nullable的缩写形式,int?代表可空的整型        例如:int? a = 1 或者 int? b=null.Nullable类型具有一个HasValue的bool类型只读属性,当Nullable类型实例的该属性为true时,则表示该实例是非空实例,包含一个已知值Value, HasV

JavaScript操作符(关系操作符、相等操作符和条件操作符)

关系操作符用于对两个值进行比较,返回一个布尔值.关系操作符包括大于(>),小于(<),大于等于(>=),小于等于(<=).当关系操作符用于非数值时,也要先进行数值的转换.如 var result=5>3; 1.尝试将两个操作符转换为数字: 2.如果两个操作符均为字符串,则进行字符串的比较 3.如果任一表达式为NaN,则返回false: 4.-0等于+0: 5.负无穷小于包含自身在内的任何数 6.正无穷大于包含自身在内的任何数 相等操作符,用于确定两个变量是否相等.字符串.数值

java按位操作符和位移操作符

一,按位操作符. 1.按位与操作符(&) 如果两个数的二进制,相同位数都是1,则该位结果是1,否则是0. 例 5&4 5的二进制是  0000 0000 0000 0101 4的二进制是  0000 0000 0000 0100 则结果是       0000 0000 0000 0100  转为十进制是4. 2.按位或操作符(|) 如果两个数的二进制,相同位数有一个是1,则该位结果是1,否则是0. 例  5 | 4 5的二进制是  0000 0000 0000 0101 4的二进制是 

type of 操作符和instanceof操作符的区别以及使用方法

经常见到用typeof和instanceof检测一个变量类型,作为前端小白经常不知道这两者具体的详细用法和区别,今天就整理一下谨记! javaScript中有6中数据类型: 1.Undefinde 2.Null 3.Number 4.String 5.Boolean 6.Object 1.typeof操作符 一个值使用typeof操作符会返回下列字符串: 1.Undefinde 2.Functon 如果值是函数 3.Number 4.String 5.Boolean 6.Object 如果值是对

Chapter3_操作符_逻辑操作符

逻辑操作符与(&&)或(||)非(^)能够对布尔类型的数据类型进行操作,并且生成布尔值,和关系操作符的产生的数据类型是一样的.需要注意的不多,有以下几点: (1)在需要使用string类型的地方使用了布尔类型的数据,编译器会自动调用布尔数据类型的toString()方法产生一个string类型对象. (2)使用逻辑操作符时会产生"短路"现象,即一旦能够明确这个逻辑表达式的值,余下的部分就不会进行计算了.这一机制会使程序获得潜在的性能提升. (3)在编写代码的时候注意区分

linq操作符:聚合操作符

一.Aggregate操作符 Aggregate操作符对集合值执行自定义聚合运算.来看看Aggregate的定义: 1 public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func); 2 public static TAccumulate Aggregate<TSource, TAccumulate&g