面试题:整数取反

今天做了下英雄会在在线挑战,题目是

完成函数reverse,要求实现把给定的一个整数取其相反数的功能,举两个例子如下:

  1. x = 123, return 321
  2. x = -123, return -321

地址是http://hero.pongo.cn/Question/Details?ID=50&ExamID=48

我提交的代码是

// reverseIntergerTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<cstdio>
#include<iostream>
using namespace std;

int reverse(int x)
{

	int remainder;
	//旋转后的数
	int result = 0;
	bool negative = false;

	//要旋转的数是负数,则记录,并改为正数
	if(x < 0)
	{
		x = -x;
		negative = true;
	}

	while(x != 0)
	{
		remainder = x%10;
		x = x/10;
		result = result * 10 + remainder;
	}

	if(negative == true)
	    result = - result;

	return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
	int number1 = 123;
	int number2 = -123;
	int result1 = reverse(number1);
	int result2 = reverse(number2);

	cout<<"Orignal number"<<number1<<"		After reverse:"<<result1<<endl;
	cout<<"Orignal number"<<number2<<"		After reverse:"<<result2<<endl;
	return 0;
}

感觉很初级呢

时间: 2024-11-02 21:26:48

面试题:整数取反的相关文章

[算法]CSDN编程挑战赛之整数取反

今天看了一下庞果网发布的编程挑战赛,我就做了一题目,结果却让我失望,没提交的上去,也不知道是网速原因还是什么,一直处于提交状态,然后我就没理它,一直耗到时间结束,但最后我发现,竟然记我一个挑战失败,好失望!关键是还没有重新挑战的机会.算了,关键是自己得到了锻炼就好!下面就共享我的算法,可能不是最优的算法,如果读者有什么好的建议或者是好的算法欢迎提出,一起交流! 题目: 以下是我做的几个版本的代码: C语言版本代码: #include<stdio.h> int reverse(int x) {

javascript中的取反再取反~~没有意义_javascript技巧

操作符~, 是按位取反的意思,表面上~~(取反再取反)没有意义,实际上在JS中可以将浮点数变成整数. 复制代码 代码如下: <html> <script> var myArray = new Array(); myArray.push("a"); myArray.push("b"); myArray.push("c"); myArray.push("d"); //现在要随机从数组中取出一个元素 var

C语言位运算符:与、或、异或、取反、左移与右移详细介绍_C 语言

位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将

网络号 = IP和子网掩码的每位数AND 主机号 掩码取反与IP地址and运算

网络号 = IP和子网掩码的每位数AND 主机号 掩码取反与IP地址and运算 如果要知道网络号,主机号,光有IP地址还不行,还需要知道掩码. 假设你的掩码是255.255.255.0 1.转换192.168.5.125到2进制为11000000.10101000.00000101.01111101 2.转换255.255.255.0到2进制为11111111.11111111.11111111.00000000 每段8位,不足8位的,前面加0补齐 3.把IP和子网掩码的每位数AND. 1100

内存中原码,反码,补码,查看数值范围,&amp;amp;,或,异或,取反,左右移位操作

 1.补码,计算机二进制在内存中如何显示的就是补码 2.查看每种数据类型的范围 如果想输出无符号整型,使用的是UINT_MAX可以得到长度. 3.原码,反码,补码 正数:原码,反码,补码都是相同的 负数:(以-1为例) 原码: 1000 0000 0000 0000  00000000 0000 0001 -1的原码 反码: 1111 1111 1111 1111  11111111 1111 1110 -1的反码(符号位不变,其它位取反) 补码: 1111 1111 1111 1111 

方法-C# 二进制数据取反问题

问题描述 C# 二进制数据取反问题 二进制 string="1111 1111",现在我要对这个二进制全部取反,和对二进制的后面四位取反.代码应该怎么写呢.最好是.Net自带的取反方法和进制转化方法. 解决方案 string test="11111111" for (int i = 0; i < test.Length; i++) { Data[i] = Convert.ToInt32(test.Substring(i, 1)); if (Data[i] ==

PHP整数取余返回负数的相关解决方法_php技巧

PHP语言虽然功能强大,但并不代表其没有缺点,在编写代码的过程中未免会遇到一些让人头痛的问题.下面我们将为大家介绍有关PHP整数取余返回负数的解决办法. 我们先来看个例子. 复制代码 代码如下: $res = 16244799483; echo $res%9999999; // 输出结果为 -5069794, 正确的结果应该是4801107 其实这也算上PHP一个BUG吧.最主要是PHP是个弱类型语言.他内置了机器来判断用户的类型. 但是机器毕竟是机器.也有判断出错的时候.就像上面.所以这时候我

对“消息”按32位异或,对异或结果取反后的值为校验和。

问题描述 对"消息"按32位异或,对异或结果取反后的值为校验和.请问:1什么叫按32为异或?2怎么对异或结果取反呢?谢谢回答!急,在线等待!**********************************************email&msn:xingtaisen@126.comQQ:654179816********************************************** 解决方案 解决方案二:1什么叫按32为异或?32位二进制位,每位相异得1,相

大整数取模(秦九韶算法)

//大整数取模,利用秦九韶算法 #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 10000 int main() { char str[N]; int len;int i;int mod; long long ans=0; scanf("%s",str); getchar(); scanf("%d",&mod); len=strlen(st