程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
C代码如下:
#include<stdio.h>
int main()
{
int num1, b;
int num2=0,w=100;
//w为权重,num1,num2分别为输入值和输出值,b为临时变量可以略去
scanf("%d", &num1);
for (int i=1; i<=3; i++)
{
//int/int=int;
b = num1 % 10;//取出个位
num2 += b*w;//将个位按权筑位组合成逆序数
//可将w换成e而略去w/=10;语句
num1 /= 10;
w/=10;//数值位置变小一位eg:百位到十位权值缩小10倍
}
printf("%d", num2);
return 0;
}
// int e(int num,int e)//求num的e次方
// {
// int output=1;
// for(int i=1;i<=e;i++)
// {
// output *= num;
// }
// return output;
// }
将代码做微调观察用时及内存占用情况,
注:运行速度及内存占用情况变化仅适用于此程序;
目前对运行机制还不够了解,观察在此题中判断语句速度最快,但用内存最大。
Java:
import java.util.Scanner;
class Main
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int result = 0;
while(num!=0)
{
int x = num % 10;
result = result * 10 + x;
num /= 10;
}
System.out.println(result);
}
}
可以看到Java耗时较高,内存占用相较大了许多,这与语言的内存回收机制有一定的关系,在后续的笔记中会进行相应的梳理。
在这种题中Java和C语言所用方法类似,自己会刻意想要让不同语言有不同的做法,不过往往导致自己无法下手。