C语言编程,用递归法将一个正整数n的每个数字都拆分出来,数字前后都标记“*”。
//举例说明该函数流程,假如输入123,123/10后得12,余数是3
//再次运行convert函数,12/10得1,余数是2
//再次运行convert函数,1/10得0,余数是1
//至此,递归结束,开始打印数字,首先打印最后一次递归的结果1
//然后打印倒数第二次的结果2
//最后打印3,输出123
void convert(int n)
{
int i; //定义整数变量
if ((i=n/10)!=0)//如果整数i除以10后不为0,说明高位还有值,需要更多字符来表示
convert(i);//调用自身,使用除以10后的i值
putchar(n%10+'0');//打印余数,余数是1则打印字符1,以此类推
}
main()
{
int number;//定义整数变量
printf("
Input an integer:");//输出信息
scanf("%d",&number);//让用户输入一个整数
printf("Output:");//输出信息
if (number<0)//如果是负数
{
putchar('-');//打印负号
number=-number;//负数变为正数
}
convert(number); //执行递归函数
}
楼上的兄弟
你的程序有问题吧
你的递归出口设置错了 不会有数输出
还有用你的算法
如果n=1200
你输出的也是0 0 2 1
可是好像应该输出1 2 0 0才对啊
#include
#include
void out(int n,int i)
{
int x,y,j;
y=int(pow(10,i));
if (n!=0)
{
x=n/y;
n=n-x*y;
printf("%d ",x);
}
else printf("0 ");
i--;
if(i>=0) out(n,i);
}
void main()
{
int n,x,y,i;
printf("输入要处理的数字:");
scanf("%d",&n);
x=n;
i=-1;
while(x!=0)
{
x=x/10;
i++;
}
printf("
");
printf("输出处理后的数字:");
out(n,i);
}
给你个代码:
#include<stdio.h>
void f(int n)
{
if (n)
{
if(n<10)
{
printf("*%d*",n);
return;
}
f(n / 10);
printf("%d*", n % 10);
}
}
int main()
{
int n;
printf("输入一个正整数:");
scanf("%d", &n);
f(n);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
scanf("%d",&n);
output(n);
printf("\n");
system("PAUSE");
return EXIT_SUCCESS;
}
void output(int n)
{
if(0!=n)
{
output(n/10);
printf("*%d",n%10);
}
}
C++语言用递归法将一个整数n转换成字符串
char a[255] = {0};int i = 0;void math_n(int n){ if(n \/ 10 != 0){ math_n(n \/ 10);} a[i] = n % 10 + 48;i++;} main(){ int temp;printf("input a int:\\n");scanf("%d", &temp);math_n(temp);printf("%s\\n", a);} \/\/好久没写递归,不知道是不是...
c加加程序。用递归法将一个整数n转换成字符串。例如,输入572,输出...
malloc(length*(sizeof(char)));while(number){ t = number % 10;number_string[index] = t + '0' - 0;index++;number \/= 10;} return number_string;} int main(){ int number = 12345;char *number_string = int2string(number);printf("%s\\n", number_string);return 0;} ...
C语言程序:用递归法将一个整数n转化成字符串
} main(){ int number;\/\/定义整数变量 printf("\\nInput an integer:");\/\/输出信息 scanf("%d",&number);\/\/让用户输入一个整数 printf("Output:");\/\/输出信息 if (number<0)\/\/如果是负数 { putchar('-');\/\/打印负号 number=-number;\/\/负数变为正数 } convert(number); \/\/执行递归...
用C++编写用递归的方法把一个整数n转换成字符串。例如,输入483,应输...
if( n>= 10 )\/\/如果有十位数,则进入递归 { trans(buf,pos,n\/10);}else { buf[ pos ] = '\\0';\/\/字符串结束标志 \/\/否则转换完成,但是此时的数组是反的,12345存为“54321”,\/\/因此需要头尾交换 int i=0;while( i < pos\/2 ){ char tmp=buf[i];buf[i] = buf[pos-i-1];...
\/\/用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串"483...
char* function(int a) ; 是转换函数 当得到整形参数a 会返回一个指向目标字符串的char指针,,该递归函数的原理是:1)递归中间步骤:若当前整数参数a 不为个位。。则将a\/10代入char* function(int a) ; 并等待调用的函数被跳出后 将当前整数参数a的最低位存入字符串。2)递归最底层情况:最...
C语言用递归法将一个整数n转换成字符串的程序中 putchar(n%10+'0...
作用就是输出整数n的个位数对应的字符。n%10对10取余数,得到个位。个位+ '0'就是得到对应的数字字符比如1 + '0' = '1'查看下ASCII码表就知道了。
C++用递归法将一个任意位数的整数n转换成字符串
include"stdio.h"include"stdlib.h"void int2str(char *str,int i);void main(){ int i;scanf("%d",&i);char b[20];int2str(b,i);printf("%s\\n",b);} void int2str(char* str,int i){ char *p=str;int k=1,l=i;while(1){ if(l\/10==0)break;else { l\/=10;k*=10;}...
用递归法将一个整数n转换成字符串。列如,输入483应输出字符串“483...
static int i; if(n>10) toStr( n\/10, s); else i=0; s[i++] = n%10 + '0'; s[i]='\\0'; return s;}int main(){ long n; char s[20]; while(scanf("%ld",&n)==1) printf("%s\\n",toStr(n,s));} ...
用递归法将一个整数n转换成字符串
include<stdio.h> include <stdlib.h> int main(){ int i,j;char str[10];printf("input a number:");scanf("%d",&j);numtostr(j,str);printf("string is:%s\\n",str);} \/\/将一个整数num转换成字符串 int numtostr(int num,char *p){ int k;k=num%10;p='0'+k;p++;if(num...
用递归方法将输入的一个正整数按逆序输出
include<stdio.h> void rev(int n){ if(n > 0) { printf("%d", n%10);rev(n\/10);} } int main(){ rev(1234);} 如果是以参数的形式传递就是这样了 不过这递归和循环的效果一样,是个尾递归,没什么意思