急!!!帮忙编一个C语言的小程序

试用递归函数,返回所给十进制正整数相反顺序的数.比如输入1234,返回4321.一定要用递归函数哦!先谢了!... 试用递归函数,返回所给十进制正整数相反顺序的数.比如输入1234,返回4321.一定要用递归函数哦!
先谢了!
展开
 我来答
winelover72
2007-11-30 · TA获得超过4.2万个赞
知道大有可为答主
回答量:5901
采纳率:100%
帮助的人:4183万
展开全部
在c++的类库里,有一个string的方法reverse(string.begin(),string.end())可以直接实现。
如果用c请看下面代码
代码核心的递归针对所有的输入,只要在数组赋值时合理赋值即可。
#include"stdio.h"
#include"math.h"
char* fun(char *a,int size){//不用递归
int temp;
for(int i=0;i<size/2;i++){
temp=a[i];
a[i]=a[size-1-i];
a[size-1-i]=temp;
}
return a;
}
char* fun2(char *a,int begin,int size){//利用递归,size是数组大小,begin是从哪个字符开始倒置
int i;
if(begin>=size) return a;
char *temp=new char[size];
char te=a[size-1];
for( i=size-1;i>begin;i--)
a[i]=a[i-1];
a[begin]=te;
fun2(a,begin+1,size);
return a;
}
int countBits(int n){//计算位数的
if(n<10)return 1;
return 1+countBits(n/10);
}

void main(){
int n,i;
printf("please int put an int number\n");
scanf("%d",&n);
int k=countBits(n);
// printf("%d\n",k);
char *a=new char[k];
for( i=0;i<k;i++)
{

a[i]=n/(int)pow(10,k-1-i)+'0';
n=n%(int)pow(10,k-1-i);
}
a=fun2(a,0,k);
for( i=0;i<k;i++)
printf("%c",a[i]);
printf("\n");

}
flying_search
2007-11-30 · TA获得超过131个赞
知道答主
回答量:207
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
int getsum(int a)
{
static int sum=0;
int temp;
if (a==0)
{
return 0;
}
else
{
temp=a%10;
sum=sum*10+temp;
getsum(a/10);
return sum;
}
}
int main()
{
int a=4321;
printf("%d倒过来为%d\n",a,getsum(a));
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
禄昂公丰雅
2020-03-19 · TA获得超过1053个赞
知道小有建树答主
回答量:2896
采纳率:100%
帮助的人:16.2万
展开全部
//英尺feet
英寸inch
厘米
centimeter
#include
//英尺转换为英寸
1英尺=12英寸
FeetToInch(float
t){
float
t1;
t1=12*t;
printf("%f英尺转换为英寸后是:%f英寸\n",t,t1);
}
//英寸转换为厘米
1英寸=2.54厘米
InchToCentimeter(float
t){
float
t2;
t2=2.54*t;
printf("%f英寸转换为厘米后是:%f厘米\n",t,t2);
}
//厘米转换为米
100厘米=1米
CentimeterToMeter(float
t){
float
t3;
t3=t/100;
printf("%f厘米转换为米后是:%f米\n",t,t3);
}
main(){
float
tt;
printf("输入需要转换的数字:\n");
scanf("%f",&tt);
FeetToInch(tt);
InchToCentimeter(tt);
CentimeterToMeter(tt);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fzp217
2007-11-30 · TA获得超过308个赞
知道小有建树答主
回答量:201
采纳率:18%
帮助的人:98.2万
展开全部
#include<stdio.h>
void tranfer(int);
main()
{
int a;
scanf("%d",&a);
tranfer(a);
}

void tranfer(int a)
{
if(a/10==0)
printf("%d",a);
else
{ printf("%d",a%10);
a/10;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可爱多2010
2007-11-30 · TA获得超过1031个赞
知道小有建树答主
回答量:477
采纳率:0%
帮助的人:444万
展开全部
#include "stdio.h"
#include "stdlib.h"
int roll(int n);
int main()
{
int b;

printf("Input a number:");
scanf("%d",&b);
roll(b);
system("pause");
return 0;
}

int roll(int n)
{
int a;

if(n==0)
return 0;
else
{
a=n%10;
printf("%d ",a);
n/=10;
roll(n);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式