注册 登录
编程论坛 C++教室

求倒序函数

flyingzc 发布于 2010-04-26 21:29, 2679 次点击
函数要求如下:
要求输入一个整数(位数未知),函数返回该整数的倒序,禁止使用库函数。
今天的面试题,算法用%10 的余数的方法  这段代码怎么写呢
13 回复
#2
lijm19892010-04-26 23:54
如果位数未知,还是用整型去接收数据么?如果可以用字符串去接收数据的话,那剩下的不是很简单,也就用不到余数了。
LZ怎么看?
#3
flyingzc2010-04-27 00:20
题目要求必须是整形的~
#4
wow512010-04-27 08:58
没有能做出来 但是有自己的想法:
    定义一个整形数组存放倒叙数data【】,定义输入数据为input,
       实现倒叙则可以采取这个方式倒叙数
第一位:data[1]=input-(input%10)*10
第二位:temp=input%10,data[2]=temp-(temp%10)*10
...
...//用循环实现

写程序是把data定义为动态数组程序看起来会比较优化。

[ 本帖最后由 wow51 于 2010-4-27 09:07 编辑 ]
#5
lijm19892010-04-27 10:37
程序代码:
#include<iostream>
using namespace std;
int inversion(int num)
{
    int result=0, temp[20], i=0, j=1;
    while(num)
    {
        temp[i++] = num%10;
        num/=10;
    }
    while(i)
    {
        result += temp[--i]*j;
        j*=10;
    }
    return result;
}
int main()
{
    int num;
    cin>>num;
    cout<<inversion(num)<<endl;
    return 0;
}
#6
wsf19911232010-04-27 12:42
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    cout<<"请输入一个0~99999内的数字:";
    int n,sum=0;
    cin>>n;
    if(n<0||n>99999)
         cout<<"输入错误!";
    else
    {
      int k=n;
      while(n)
       {
             n/=10;
             sum+=1;
       }
         cout<<"位数为:"<<sum<<endl;
         n=k;
       while(n)
         {
            cout<<n%10;
            n/=10;
         }
            cout<<endl;
       }
    system("PAUSE");
    return EXIT_SUCCESS;
}
   
#7
2010-04-27 13:34
是要一个函数…5楼不错…不过位数不定不好理解…用字符串是会好点
#8
南国利剑2010-04-27 19:13
回复 楼主 flyingzc
我用递归函数写了一个。请楼主试试,看是否符合要求?
程序代码:


#include<iostream>
#include<cmath>
using namespace std;

void fun(int& m)
{
    int n;
    n=m/10;
    if(n==0)
        cout<<m;
    else
    {
        cout<<m%10;
        fun(n);
    }
   
}

int main()
{
    int m;
    cout<<"请输入一个整数:";
    cin>>m;
    if(m<0)
    {
        cout<<"-";
        m=abs(m);
    }
    fun(m);
    system("pause");
    return 1;

}

#9
南国利剑2010-04-27 19:18
对递归程序有什么看法?
请各位多多赐教!谢谢
#10
lijm19892010-04-27 19:43
递归没有什么不好,不过递归的高消耗大家都知道的。
我想说的是:LZ的程序的要求是“写一个倒序函数,要求输入一个整数(位数未知),函数返回该整数的倒序,”
注意要求。倒序函数返回整数的倒序,你只是将倒序输出而已,6楼直接连个函数都没,直接输出,都没将倒序数存起。
一、LZ没说要输出倒序数,
二、如果LZ要用倒序做其它用途你怎么办?


[ 本帖最后由 lijm1989 于 2010-4-27 19:45 编辑 ]
#11
flyingzc2010-04-28 21:03
回复 7楼 回忆不是我的
用字符串 最后怎么返回整数哦~
#12
2010-04-29 14:48
随便编了一个 数的范围在int内,希望你的满意
#include<iostream>
using namespace std;
int main()
{
    int a,b=0;
    cout<<"输入要倒序输出的数"<<endl;
    cin>>a;
    for(;a!=0;)
    {
        b=b*10;
        b=a%10+b;
        a=a/10;
    }
    cout<<b<<endl;
    return 0;
}
#13
2010-04-29 14:52
交谈中请勿轻信汇款、中奖信息,勿轻易拨打陌生电话。

 -静静的夜  14:50:15
随便编了一个 数的范围在int内,希望你的满意
#include<iostream>
using namespace std;
int main()
{
    int a,b=0;
    cout<<"输入要倒序输出的数"<<endl;
    cin>>a;
    for(;a!=0;)
    {
        b=b*10;
        b=a%10+b;
        a=a/10;
    }
    cout<<b<<endl;
    return 0;
}
#14
2010-04-29 14:53
回复 楼主 flyingzc
交谈中请勿轻信汇款、中奖信息,勿轻易拨打陌生电话。

 -静静的夜  14:50:15
随便编了一个 数的范围在int内,希望你的满意
#include<iostream>
using namespace std;
int main()
{
    int a,b=0;
    cout<<"输入要倒序输出的数"<<endl;
    cin>>a;
    for(;a!=0;)
    {
        b=b*10;
        b=a%10+b;
        a=a/10;
    }
    cout<<b<<endl;
    return 0;
}
1