c语言,将一个整数逆置。要求高效,移位思想解决。

作者&投稿:中叔岚 (若有异议请与网页底部的电邮联系)
C语音,逆置整数,请大神改正~

首先b就是逆置后的数,其次要先scanf得到a的值

好像没有那么复杂,请看下面程序:
#include
int main()
{
unsigned long n, m, d;
while(scanf("%ld",&n)!=EOF)
{
m=0;
while(n) /* 逆置 */
d=n%10, m=10*m+d, n/=10;
printf("%d
", m);
}
printf("
");
return 0;
}

他那个反转字节,其实就是反转一个字节的各个位
例如:
十进制 二进制
61 0110 0001
86 1000 0110
其实二进制数跟十进制是完全无关的,只跟八进制,十六进制有关,这些都能够用移位,异或,与,或等来解决
如果楼主给出的int a=789是十六进制的,就可以通过以为来转。代码如下:
void main()
{
unsigned short a = 0x4567;
unsigned short b = 0;
b = (a << 12);
b = b | ((a << 4) & 0x0F00);
b = b | ((a >> 4) & 0x00F0);
b = b | (a >> 12);
printf("%X", b);
}
如果执着要十进制的,我表示无能为力

移位或者说位运算的思想,确实想不到怎么弄。如果是16进制就很简单了,但是10进制就不知道了。
目前不需要转换成字符串的方式就是用模运算,获得每位的数值,然后 数值*(10^倒转后所在位) 然后将所有乘积累加就可以得到倒转后的整数值了。
代码如下:
#include <cmath>
#include <cstdio>
int main()
{
int ReverseNumber(int oldNum);
int a = 55523;
printf("%d\n",ReverseNumber(a));
return 0;
}

int ReverseNumber(int oldNum)
{
int reverse = 0;
int wei[20];
int i = 0;
for(;oldNum>0;i++)
{
wei[i] = oldNum%10;
oldNum=oldNum/10;
}
for(int j = 0;i>0;i--,j++)
{
reverse += wei[j]*pow(10.0,i-1);
}
return reverse;
}

#include <stdio.h>

void reverse(int m);

main()

{

int n=12345;

reverse(n);

printf("\n");

getch();

}

void reverse(int m)

{

printf("%d",m%10); /*输出个位上数字*/

if((m/10)!=0) /*如果剩余数字不为0则继续输出剩余的*/

reverse(m/10);

}

int reverse_int(int num)
{
int i = 0,a=0;
int temp=0
int reverse_num=0;
while((n/10)>0)
{
if(i==0)
{
temp = (num - (num/10)*10);
reverse_num += temp;
}
else
{
for(a=0;a<i;a++)
{
temp = (num - (num/10)*10)*10;
}
reverse_num += temp;
}
i++;
}
return reverse_num ;
}

刚写的,没编译,能看懂就给分吧

与 或 进位是设计给二进制的,套到十进制行不通,移位思想并非是用移位符

用动态数组存放数值。倒着输出。

C语言只能这么把数倒置 “模计算出每一位,或者转字符串再逆置转数字”,其他所谓简单的方法也只是先编写了一个这样的函数而已,原理一点也没有变。


c语言如何将一个数逆序输出?
在C语言中,可以使用一个for循环或递归来输出一个数的逆序。以下是两种方法的示例:使用for循环:首先定义一个整型变量n,用于存储需要输出逆序的数。然后使用for循环,从n的个位开始,依次取出每一位,逆序输出。在循环体中,使用printf函数输出每一位。示例代码如下:使用递归:首先定义一个整型变量n,...

将一个正整数逆序输出(C语言
include<stdio.h>intmain(){intnum;scanf("%d",&num);inta,i;for(i=0;num>0;i++){a=num%10;printf("%d",a);num=num\/10;}return0;}分析:首先,输入的是一个整数,因此最前面一位数不是零,所以我们可以用除10取余法写。a=num%10就是输出数字的最后一位然后除10剔除数字最后一位,...

编写程序:从键盘输入一个三位数的整数,要求将该数的反向序列输出。如输...
include<stdio.h> void invert(char *s){ int i,j,k=0;char n;char *q=s;while(*q!='\\0'){ k++;q++;} j=k-1;for(i=0;i<=(k-1)\/2;i++,j--){ n=*(s+i);(s+i)=*(s+j);(s+j)=n;} } void main(){ char str[80],*p=str;printf("请输入");scanf("%s...

输入一个整数,将其逆序输出。
C语言输入一个正整数n,将其逆序输出:include<stdio.h> include<stdlib.h> int main(){ int a;while(scanf("%d",&a)!= EOF){ while(a>0){ printf("%d",a%10);a = a\/10;} printf("\\n");} return 0;} 运行结果如下:

C语言:编写程序,输入一个整数,将它逆序组成一个整数后输出。要求定义并...
表达一个数比如m,m自身除以10时,要这样写,m\/=10或者m=m\/10绝对不能写成m\/10;在C中这是非法语句,还有你漏了几个冒号,还有你的算法有问题,多乘了一个10,输入123时输出3210,这个算法问题你一定要仔细独立去寻找自己的函数部分肯定出了问题,还有当你输入是100时你输出的肯定得是1而不是001...

用C语言输入一个正整数n,将其逆序输出?
以下是用C语言输入一个正整数n,将其逆序输出的代码:```c include <stdio.h> int main() { int n, rev = 0;printf("请输入一个正整数:");scanf("%d", &n);while(n != 0) { rev = rev * 10 + n % 10;n \/= 10;} printf("逆序输出为:%d\\n", rev);return 0;} ```...

输入一个整数,将它逆序输出,如输入-1235,输出-5321,要求用函数实现。C...
number\/=10; } return sum; }else{ number=-number; while(number!=0){ s=number%10; sum=sum+s; sum=sum*10; number\/=10; } return -sum; }}

C语言问题!!输入一个整数,将它逆序输出。。例如reverse(123)的返回...
1、C 表示将输入的整数n传给reverse函数 2、C 表示定义一个long型变量res,并初始化 3、B 表示主函数(main)穿进来的值,如果为负数,则取反 4、B 倒置传入的参数number,res*10表示将原来res乘以10,再加上number%10;比喻说你传的是123,而res的初始值是0,123%10=3,那么res...

C语言中把一个数倒过来输入
include <stdio.h> typedef unsigned uint;uint DigitCount(uint n){ int i = 0;do{++i, n \/= 10;}while(n != 0);return i;} void SpaceOut(uint n){ if(n > 0)SpaceOut(n\/10);if(n != 0)printf("%d ", n % 10);} void ReversePrint(uint n){ if(n > 0){ printf...

C语言编写程序将输入的一个正整数以相反的顺序输出例如输入1234输出432...
include<stdio.h> int main(){ int i,j,a[10],b;scanf("%d",&b);for(i=0;b!=0;i++){ a[i]=b%10;b=b\/10;} \/\/将数字的每一位存到数组里 for(j=0;j

顺平县13521727224: 用C语言将一个数倒置用自定义函数 -
脂重莲必: #includeint daoXupai(int x) {int n,b,d=0;while(n){b=n%10;d=d*10+b;n=n/10;}return d; } int main() {int x,result;printf("输入一个整数:",x);scanf("%d",&x);result=daoXupai(x);printf("倒序排后的数为:%d\n",result);return 0; }

顺平县13521727224: 编写一函数实现将一个整数按逆序存放到一个数组中
脂重莲必: 整数逆序#include <stdio.h>int reverse( int n, int* a ){ int i = 0; while ( n > 0 ) { *a++ = n % 10; n /= 10; ++i; } return i;}int main(){ int n = 12345; int a[100], i; n = reverse( n, a ); for ( i = 0; i < n; ++i ) printf( "%d ", a[i] );}

顺平县13521727224: C语言编程 编程将整数倒置
脂重莲必: #include<stdio.h> void main() { char a[20],*p; int i,j; p=a; for(i=0;i<20;i++) { scanf("%c",&a[i]); if(a[i]!='\n')p++; else break; } for(i;i>=0;i--) printf("%c",*(--p)); } 我在vc++6.0运行成功 希望采纳 ! 谢谢!

顺平县13521727224: c语言中将输入的整数逆转显示 -
脂重莲必: 你说对了,前面是取余的意思.后面那个+'0'的意思是转换为ASCII,因为0的ASCII是48;比如你取的余数是4那么存进去是4但是输出来按ASCII就不是4了,应该4+'0'才是输出4,至于putchar(c)的话,你取个余数就输出个直到取完为止取完也就输完了

顺平县13521727224: 用C语言编程输入任意一个整数使其倒序输出 -
脂重莲必: #include<stdio.h> #include<string.h> void main() { char str[100]; int n; printf("input a number:"); gets(str); n=strlen(str); for(;n>=0;n--)printf("%c",str[n]); getchar(); }

顺平县13521727224: 如何用c语言递归函数对一个整数逆序? -
脂重莲必: #includevoid main() { void proc(int n); int n; scanf("Input n:%d",n); proc(n); void proc(int n) //递归函数 { if(n\10==0) //n剩一位数字 { printf("%d",n); return(); } printf("%d",n%10); //打印最后一位数字 proc(n\10); //递归,去掉n的最后一位然后调用自己 } }

顺平县13521727224: c语言 关于正整数逆向输出 -
脂重莲必: 首先,很欣赏你的要求;然后我来讲讲我的思路,仅供参考: 思路(一):直接用int类型做,判断位数时,当然用循环从小到大循环,用"%"(模)的方式判断;你的第二第三个问题一起做比较好,用求模和整除的方式分割这个数,然后把分割的每一位数累加到另一个int类型上. 思路(二):用字符串做,用库函数strlen很容易判断位数,也很容易输出每位数,以及倒序;其实倒序更容易,只要倒着输出就行,不一定要重新放到另一个字符串中. 思路(三):用递归函数做,用一个int作为计数,一个char类型的用来逐个放置,控制好结束条件,即输入“\n”时结束,然后自然容易做到那3点. 其实,以上逆序的方法都可以换成对称的思路……

顺平县13521727224: 在c语言中,怎样利用调用函数,反向输出一个整数 -
脂重莲必: #include void main() { int a[10],i,n,j,k=0; printf("请输入一个正整数: "); scanf("%d",&n); for(i=0;i<=9;i++) { j=n%10; a[i]=j; n=(n-(n%10))/10; k=k+1; if(n<1) break; } printf("将该正整数倒序输出: "); for(i=0;i<=k-1;i++) printf("%d",a[i]); }运行示例: 生成的可执行文件:

顺平县13521727224: C语言设计:用递归法将一个整数逆序输出 -
脂重莲必: 楼主你好 具体代码如下:#include<stdio.h> void Reverse(int n)//递归逆序输出n { if(!n) return; printf("%d",n%10); Reverse(n/10); } int main(void) { int n; printf("Enter n:"); scanf("%d",&n); Reverse(n); printf("\n"); return 0; } 希望能帮助你哈

顺平县13521727224: 用C语言编写一个程序,逆序输出一个整数.例如你输入的整数是:321,那么输出的就是:123,
脂重莲必: #include "stdio.h" void main() { int t; printf("请输入一个整数!"); scanf("%d",&amp;t); while(t&gt;0) { printf("%d",t%10); t/=10; } }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网