OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 281|回复: 3

[C语言作业提交] 给一个不多余5位的正整数输出位数,输出每一位,逆序输出个位数

[复制链接]

  离线 

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2017-7-20
在线时间
19 小时
发表于 2017-7-24 13:25:22 | 显示全部楼层 |阅读模式
正点原子公众号
1, 给一个不多余5位的正整数,要求:
① 求出它是几位数;
② 分别输出每一位数
按逆序输出各位数字,例如原数是321,应输出123
编程思路:
   我是先判断他是几位数同时把每一位取出来,存到一个数组中,然后计算逆序输出的数,最后在输出位数,每一位,逆序输出的数;
我的代码:
int main()
{   
        u32 pdata;
        int num,reciprocal,temp;
        int final[5]={0};
        Stm32_Clock_Init(9);       
        uart_init(72,115200);        
        scanf("%d",&pdata);
        if(pdata>9999)
        {
                num=5;
                final[4]=pdata/10000;
                final[3]=pdata%10000/1000;
                final[2]=pdata%1000/100;
                final[1]=pdata%1000%100/10;
                final[0]=pdata%1000%100%10;
        }else
        if(pdata>999)
        {
                num=4;
                final[3]=pdata%10000/1000;
                final[2]=pdata%1000/100;
                final[1]=pdata%1000%100/10;
                final[0]=pdata%1000%100%10;
        }else
        if(pdata>99)
        {
                num=3;
                final[2]=pdata%1000/100;
                final[1]=pdata%1000%100/10;
                final[0]=pdata%1000%100%10;
        }else
        if(pdata>9)
        {
                num=2;
                final[1]=pdata%1000%100/10;
                final[0]=pdata%1000%100%10;
        }else
        if(pdata>0)
        {
                num=1;
                final[0]=pdata%1000%100%10;
        }
        reciprocal=final[0]*10000+final[1]*1000+final[2]*100+final[3]*10+final[4];
        printf("位数:%d\n",num);
        printf("它的每一位如下\n");
        for(temp=num-1;temp>=0;temp--)
        {
                printf("%d\n",final[temp]);
        }
        printf("逆序输出的数%d\n",reciprocal);

}
欢迎大家给出建议和指正,谢谢!

回复

使用道具 举报

  离线 

14

主题

1034

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2445
金钱
2445
注册时间
2016-5-29
在线时间
400 小时
发表于 2017-7-24 15:37:55 | 显示全部楼层
是不是应该还有更加简单的代码可以解决.
个人感觉太复杂了.
深圳富美莱怡家智能科技有限公司
主营:可视对讲,智能家居安防,灯光控制,空调控制
智能门窗,门锁.
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手上路

Rank: 1

积分
8
金钱
8
注册时间
2017-7-25
在线时间
2 小时
发表于 2017-7-25 11:51:29 | 显示全部楼层
要这么复杂么。。
[C] 纯文本查看 复制代码
void XXX(u32 num)
{
	u8 i;
	u8 tmp[10];
	if(num == 0)
	{
		return;
	}
	i=0;
	memset(tmp, 0, 10);
	while((num>0) && (i<10))
	{
		tmp[i++] = num%10;
		num /= 10;
	}
	i=i; //数字长度,每个位存在tmp数组中
	
}
回复 支持 反对

使用道具 举报

  离线 

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2017-7-20
在线时间
19 小时
 楼主| 发表于 2017-7-25 23:53:41 | 显示全部楼层
Ezel 发表于 2017-7-25 11:51
要这么复杂么。。
[mw_shl_code=c,true]void XXX(u32 num)
{

佩服!厉害!
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-20 05:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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