标题: C语言中怎样把数倒过来 [打印本页]

作者: univers    时间: 2018-12-12 09:53
标题: C语言中怎样把数倒过来
单片机中,C语怎样把数倒过来,比如一组数为12345,我要把她反来,即变成54321这样。
要怎样编写?谢谢!!!



作者: 张海见    时间: 2018-12-12 10:46
定义数组,然后利用for循环过来改变。
int a=[1,2,3,4];
int b=[];
int i=0;
for(i<4;i++)
b(i)=a(3-i);
作者: namecy    时间: 2018-12-12 10:52
直接用个中间变量,a[2]=temp;a[2]=a[1];a[1]=temp;加个for循环应该可以
作者: 51danpianji111    时间: 2018-12-12 11:26
数组比较简单:把数组倒过来输出就可以了,还有的就是使用链表
作者: wulin    时间: 2018-12-12 11:31
本帖最后由 wulin 于 2018-12-12 13:09 编辑

unsigned int table[5];
unsigned int a=12345;
unsigned int b=0;
unsigned char i;

        table[0]=a/10000%10;
        table[1]=a/1000%10;
        table[2]=a/100%10;
        table[3]=a/10%10;
        table[4]=a%10;
        for(i=4;i>0;i--)
                table[4]=table[4]*10+table[i-1];
        b=table[4];


作者: 吴语吖    时间: 2018-12-12 11:39
本帖最后由 吴语吖 于 2018-12-12 13:13 编辑

我是个新手,只会最傻的办法,
unsigned int temp
temp=shuzhu[4]
shuzhu[4]=shuzhu[0]
shuzhu[0]=temp;
......
这样,

作者: univers    时间: 2018-12-12 22:50
wulin 发表于 2018-12-12 11:31
unsigned int table[5];
unsigned int a=12345;
unsigned int b=0;

这种方法不错,明天写一个出来。
作者: univers    时间: 2018-12-12 22:52
张海见 发表于 2018-12-12 10:46
定义数组,然后利用for循环过来改变。
int a=[1,2,3,4];
int b=[];

明天试试,谢谢!
作者: univers    时间: 2018-12-13 09:32
  1. #include<reg52.h>                                //52系列单片机头机文件
  2. #include<intrins.h>                                //包含nop函数
  3. #define uint unsigned int                //宏定义
  4. #define uchar unsigned char                //宏定义

  5. unsigned char reverse[4];                 //定义一个4位数的表
  6. unsigned int revsum;                         //定义一个反向的整形变量
  7. bit led=0;

  8. /****************主函数*********************/
  9. void main()        
  10. {
  11.    
  12.    unsigned int i=1234;                        //定义一个整形1234
  13.         reverse[0]=i%10;                          //取个位数放到表里面
  14.         reverse[1]=i/10%10;                          //取十位数放到表里面
  15.         reverse[2]=i/100%10;                  //取百位数放到表里面
  16.         reverse[3]=i/1000%10;                  //取千位数放到表里面

  17.         i=0;                                                  //清零
  18.         for(i=0;i<4;i++)
  19.                 {
  20.                 revsum+=reverse[i++]*1000;          //把表里面的4,3,2,1四位数各乘1000、100、10、1再累加
  21.                 revsum+=reverse[i++]*100;
  22.                 revsum+=reverse[i++]*10;
  23.                 revsum+=reverse[i++]*1;

  24.                 if(revsum==4321)                                  //判断值是否相等
  25.                         {
  26.                         led=1;                                                  //相等则至1
  27.                         }

  28.                 }
  29.                 while(1)
  30.                 {
  31.                 }
  32.         
  33. }
复制代码


1.PNG (164.84 KB, 下载次数: 48)

1.PNG

作者: univers    时间: 2018-12-13 09:44
也可以这样,做成一行累加完成。就不要四行代码了。
  1. /****************主函数*********************/
  2. void main()       
  3. {
  4.    
  5.    unsigned int i=1234;                        //定义一个整形1234
  6.         reverse[0]=i%10;                          //取个位数放到表里面
  7.         reverse[1]=i/10%10;                          //取十位数放到表里面
  8.         reverse[2]=i/100%10;                  //取百位数放到表里面
  9.         reverse[3]=i/1000%10;                  //取千位数放到表里面

  10.         i=0;                                                  //清零
  11. //        for(i=0;i<4;i++)
  12. //                {
  13. //                revsum+=reverse[i++]*1000;          //把表里面的4,3,2,1四位数各乘1000、100、10、1再累加
  14. //                revsum+=reverse[i++]*100;
  15. //                revsum+=reverse[i++]*10;
  16. //                revsum+=reverse[i++]*1;
  17. //
  18.   revsum=reverse[0]*1000+reverse[1]*100+reverse[2]*10+reverse[3]*1;                //这样的代码也可以一次性累加完

  19.                 if(revsum==4321)                                  //判断值是否相等
  20.                         {
  21.                         led=1;                                                  //相等则至1
  22.                         }
  23. //
  24. //                }
  25.                 while(1)
  26.                 {
  27.                 }
  28.        
  29. }
复制代码



2.png (166.36 KB, 下载次数: 58)

2.png





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1