编程论坛
注册
登录
编程论坛
→
C++教室
求倒序函数
flyingzc
发布于 2010-04-26 21:29, 2679 次点击
函数要求如下:
要求输入一个整数(位数未知),函数返回该整数的倒序,禁止使用库函数。
今天的面试题,算法用%10 的余数的方法 这段代码怎么写呢
13 回复
#2
lijm1989
2010-04-26 23:54
如果位数未知,还是用整型去接收数据么?如果可以用字符串去接收数据的话,那剩下的不是很简单,也就用不到余数了。
LZ怎么看?
#3
flyingzc
2010-04-27 00:20
题目要求必须是整形的~
#4
wow51
2010-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
lijm1989
2010-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
wsf1991123
2010-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
lijm1989
2010-04-27 19:43
递归没有什么不好,不过递归的高消耗大家都知道的。
我想说的是:LZ的程序的要求是“写一个倒序函数,要求输入一个整数(位数未知),函数返回该整数的倒序,”
注意要求。倒序函数返回整数的倒序,你只是将倒序输出而已,6楼直接连个函数都没,直接输出,都没将倒序数存起。
一、LZ没说要输出倒序数,
二、如果LZ要用倒序做其它用途你怎么办?
[
本帖最后由 lijm1989 于 2010-4-27 19:45 编辑
]
#11
flyingzc
2010-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