
急!!!帮忙编一个C语言的小程序
试用递归函数,返回所给十进制正整数相反顺序的数.比如输入1234,返回4321.一定要用递归函数哦!先谢了!...
试用递归函数,返回所给十进制正整数相反顺序的数.比如输入1234,返回4321.一定要用递归函数哦!
先谢了! 展开
先谢了! 展开
8个回答
展开全部
在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");
}
如果用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");
}
展开全部
#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;
}
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//英尺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);
}
英寸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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
}
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
}
#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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询