找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7801|回复: 9
收起左侧

C语言中怎样把数倒过来

[复制链接]
ID:382454 发表于 2018-12-12 09:53 | 显示全部楼层 |阅读模式
单片机中,C语怎样把数倒过来,比如一组数为12345,我要把她反来,即变成54321这样。
要怎样编写?谢谢!!!


回复

使用道具 举报

ID:432085 发表于 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);

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:276442 发表于 2018-12-12 10:52 | 显示全部楼层
直接用个中间变量,a[2]=temp;a[2]=a[1];a[1]=temp;加个for循环应该可以

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:338671 发表于 2018-12-12 11:26 | 显示全部楼层
数组比较简单:把数组倒过来输出就可以了,还有的就是使用链表

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:213173 发表于 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];

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:441427 发表于 2018-12-12 11:39 | 显示全部楼层
本帖最后由 吴语吖 于 2018-12-12 13:13 编辑

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

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:382454 发表于 2018-12-12 22:50 来自手机 | 显示全部楼层
wulin 发表于 2018-12-12 11:31
unsigned int table[5];
unsigned int a=12345;
unsigned int b=0;

这种方法不错,明天写一个出来。
回复

使用道具 举报

ID:382454 发表于 2018-12-12 22:52 来自手机 | 显示全部楼层
张海见 发表于 2018-12-12 10:46
定义数组,然后利用for循环过来改变。
int a=[1,2,3,4];
int b=[];

明天试试,谢谢!
回复

使用道具 举报

ID:382454 发表于 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
回复

使用道具 举报

ID:382454 发表于 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表