前缀和后缀自增和自减的比较

1137: 进制转换

时间限制: 1 Sec  内存限制: 128 MB

题目描述

给出一个十进制的正整数,输出它的二进制表示。

输入

有多行数据,每一行一个正整数,整数值在[1-100000000]之间。

输出

输出相应的二进制数.每一行输出对应每一行输入

样例输入

3

4

样例输出

11

100

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4    int index, n;
 5    int digits[40];
 6    while(scanf("%d", &n) != EOF) {
 7       index = 0;
 8       while(n) {
 9          digits[index++] = n % 2;
10          n /= 2;
11       }
12       index--;
13       while(index >= 0)
14          printf("%d", digits[index--]);
15       printf("\n");
16    }
17    return 0;
18 }

不满足之处是第12行,要回退一个。下面利用前缀自增去除了这一行,注意第7行和第9行的变化。

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4    int index, n;
 5    int digits[40];
 6    while(scanf("%d", &n) != EOF) {
 7       index = -1;
 8       while(n) {
 9          digits[++index] = n % 2;
10          n /= 2;
11       }
12       while(index >= 0)
13          printf("%d", digits[index--]);
14       printf("\n");
15    }
16    return 0;
17 }
时间: 2024-10-12 13:26:13

前缀和后缀自增和自减的比较的相关文章

前缀方式增1和后缀方式增1的区别

增量运算符++属于一元运算符,增量运算符可以出现在变量的前面作为前缀,也可以出现在变量的后面作为后缀.两者有何区别呢? 前缀方式加1 先使用前缀方式加1,并把前缀方式加1后变量的值赋值给另外一个临时变量temp. static void Main(string[] args) { int num1 = 0; while (num1 < 3) { int temp; Console.WriteLine("变量num1的值是:" + num1.ToString()); temp =

自增、自减运算符的前缀和后缀

试卷中有这么一道题目: 1 2 int a = 4; (++a) += i; 求a的数值,正确答案是10. 如果你认为这道题重点只是考察运算符优先级,可能很容易得到正确的答案. 但是,考虑过为什么下面的代码无法编译么? 自己在笔试时,考虑到了关于表达式作为赋值运算符左值的问题,但是自己确实又对重载"++"操作符的实现机制和函数原型不很了解,就误认为"a++"和"++a"这两种写法都不能作为赋值运算符左值,从而以为这道题出错了,或者故意考察这一点,

恶补C++ 之 自增、自减操作符前缀式与后缀式的区别

相信很多人刚开始学习编程的时候,也是为这个问题烦恼过吧,前缀式与后缀式,在很久之前,式没有办法区别++和--操作符的前缀和后缀的调用的.不过在C++已经得到了扩展. 然而无论式前缀或者后缀,都只有一个参数.为了解决这个问题,C++规定后缀形式有一个int类型的参数,当函数被调用的时候,编译器传递一个0作为int参数给该函数: class UPInt { public: UPInt& operator++();        // ++前缀 const UPInt operator++(int);

Java后缀自增/自减表达式的返回值

Java后缀自增/自减表达式的返回值 今天看到一段代码,描述循环k次 while(k-- > 0){ //... } 直觉上认为是错的,k--后值变成了k-1,循环应该只能执行k-1次吧.实际这段代码是正确的.在Java8语言规范15.14.3中有以下描述: The value of the postfix decrement expression is the value of the variable before the new value is stored. 即后缀自减表达式的值为存储

js实现购物车数量的增加与减少,js实现购物车数量的自增与自减

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

java 自增和自减运算符

/** 自增和自减运算符: ++: 如果是++b,则表示先对变量b+1,再执行其他的操作: 如果是b++,则表示先执行表达式操作,再对变量自身+1 --: 用法和++相同 */ //Test.java public class Test16{ public static void main(String args[]){ int age=28; int a=10; int b=++a; System.out.println("b:"+b); System.out.println(&qu

c++前缀和后缀++

1,c++规定后缀形式的++操作符有一个int行的参数,被调用时,编译器自动加一个0作为参数给他 2,前缀返回一个reference,后缀返回一个const对象 /////////////////////////////////////////////////////////////////////////////// // // FileName : meffect_item5.h // Version : 0.10 // Author : Ryan Han // Date : 2013/11

递归算法(二)&mdash;&mdash;前缀转后缀

源码:pretopost.cpp #include "stdafx.h" #include <stdio.h> #include <stack> /************************************************************************/ /* 前缀转后缀 */ /************************************************************************

一个自增与自减的源码

看了STL源码剖析,自己写的: #include <iostream> using namespace std; //template<class T> class Int { friend ostream& operator<<(ostream& os,const Int& i); public: Int(int i):m_i(i) { } Int& operator++() { ++(this->m_i); return *th