| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12521 人关注过本帖, 1 人收藏
标题:如何输出一个三位数的逆序数(这个数可能是负数)?
只看楼主 加入收藏
冰莫辰
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-8
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:28 
如何输出一个三位数的逆序数(这个数可能是负数)?
从键盘任意输入一个3位整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-123,则忽略负号,由123分离出其百位1、十位2、个位3,然后计算3*100+2*10+1 = 321,并输出321。
提示:
1. 从键盘输入数据可以使用函数scanf()。例如,scanf("%d", &x); 表示从键盘输入整数并存入整形变量x中。
2. 利用取绝对值函数 fabs()忽略输入数据的负号。fabs(x)表示计算变量x的绝对值。
3.使用数学函数,需要在程序开头加上编译预处理指令 #include <math.h>


我做了一下,代码如下:

#include<stdio.h>
#include<math.h>

int main()
{
    int a,b,c,x,y;
    printf("Input x:\n");
    scanf("%d",&x);
    x=fabs(x);
    a=x/100;
    b=(x-a*100)/10;
    c=x/10;
    y=100*c+10*b+a;
    printf("y=%d\n",y);
    return 0;
}
但是显示错误,请大神指教哪里错了?是fabs函数不能这么用吗?
搜索更多相关主题的帖子: include 如何 取绝对值 键盘 
2015-04-08 08:00
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:2 
fabs()函数原型:
double fabs(double x);

即接受double类型的参数 返回值也是double类型
你代码中x = fabs(x) 其中x为int类型
可改用 abs()函数 abs()函数使用时 应 #include <stdlib.h>

你的代码还是有点问题 就算改了abs函数 也不能得到正确结果

这种题目从字符串的角度来处理
或许更方便些

这里是我以前写的一段代码
你有意可参看

程序代码:
#include <stdio.h>
#include <string.h>

int zerolen(char *p) {
    int len = 0;
    char *pt = p + strlen(p);

    while(*--pt == '0') len++;

    return len;
}

void foo(char *p, int len) {
    char t, *pt = p;

    if(--len > 0) {
        t = *pt;
        *pt = *(pt + len);
        *(pt + len) = t;
        foo(++pt, --len);
    }
}

int main(void) {
    char s[4][10] = {
        "12345",
        "12345000",
        "-12345",
        "-12345000"
    };
    char *p;
    int i = -1;

    while(++i < 4) {
        if(*s[i] == '-') p = s[i] + 1;

        else p = s[i];

        foo(p, strlen(p) - zerolen(p));
        puts(s[i]);
    }

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-04-08 09:10
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:2 
程序代码:
# include <stdio.h>
# include <math.h>
# include <stdlib.h>
# define SIZE 3
int change (int  x,int size); 
void get_x(int *px);
int main (void)
{
    int x;
    get_x(&x);
    x=abs(x);
    x=change(x,SIZE);
    
    printf("after change the number is: %d\n",x);
    
    return 0;
}

void get_x(int *px) //读取X 
{
    while(1!=scanf("%d",px))
    {
        puts("data input error! try again.");
        while(getchar()!='\n')
         continue;
        
    }
    
}

int change (int  x,int size) //颠倒顺序 
{
    int t_x=0;
    do{
        
        t_x+= (x%10) * pow(10,size-1);
        
        size- -;
        
    }while(x/=10);


    return t_x;
    
}

你醒了?快起来敲代码!!
2015-04-08 10:20
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:2 
楼上几个代码好像都在弃简从繁哦。可以有更简单的算法,一个循环敲定。
2015-04-08 11:38
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
对什么样的人写什么样的代码。不然我们写的只会让他更疑惑。

你醒了?快起来敲代码!!
2015-04-08 12:31
渣渣渣
Rank: 2
等 级:论坛游民
帖 子:26
专家分:17
注 册:2015-3-23
收藏
得分:2 
先判断是否为符号,再将其数字逆序输出即可!
2015-04-08 13:19
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 4楼 xzlxzlxzl
请示例一个更简单的算法
我好学习收藏一下……

Only the Code Tells the Truth             K.I.S.S
2015-04-08 13:41
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
程序代码:
# include<stdio.h>
void test(int x);
int main (void)
{
    
    test(3214);
    
    return 0;
} 

void test(int x)
{

    printf("%d",x%10);
    if(x/10)
     test(x/10);
}

递归法

你醒了?快起来敲代码!!
2015-04-08 14:18
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 7楼 longwu9t
看楼下,用递归。我会用一个循环得到真实的数输出,不超过10行代码绝对完成。我关注过你很多帮人完成的作业,很遗憾,我只能为你的热心点赞。
2015-04-08 14:26
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 8楼 code力力
漂亮,负号呢?

[ 本帖最后由 xzlxzlxzl 于 2015-4-8 14:30 编辑 ]
2015-04-08 14:28
快速回复:如何输出一个三位数的逆序数(这个数可能是负数)?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018896 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved