倒序输出整数(用递归函数)
我的代码如下#include <stdio.h>
void printdigits( int n );
int main()
{
int n;
scanf("%d", &n);
printdigits(n);
return 0;
}
void printdigits(int n)
{
if(!n) return;
else if(n<10) printf("%d\n",n);
else printf("%d\n",n%10);
printdigits(n/10);
}
就想问问,比如,输入120的时候,输出21,就是倒序之后首位是0的话不输出,void printdigits(int n)部分该怎么改 本帖最后由 jhq999 于 2022-10-18 10:41 编辑
#include <stdio.h>
void printdigits( int n );
void fun(int n);
int main()
{
int n;
scanf("%d", &n);
fun(n);
return 0;
}
void fun(int n)
{
while(0==n%10)n/=10;
printdigits(n);
}
void printdigits(int n)
{
if(!n) return;
printf("%d\n",n%10);
printdigits(n/10);
}
void printdigits( int n,int flag );
void fun(int n);
int main()
{
int n;
scanf("%d", &n);
printdigits(n,0);
return 0;
}
void printdigits(int n , int flag)
{
if(!n) return 0;
if(n%10)flag=1;
if(flag)printf("%d\n",n%10);
printdigits(n/10,flag);
}
#include <stdio.h>
void printdigits(char* n );
int main()
{
char n={0};
scanf("%s", n);
printdigits(n);
return 0;
}
void printdigits(char* n )
{
if('\0'==*n)return;
printdigits(n+1);
if((*(n+1)=='\0')&&('0'==*n))
{
*n='\0';
return;
}
printf("%c",*n);
}
本帖最后由 jackz007 于 2022-10-18 09:43 编辑
void printdigits(int n)
{
static int c = 0 , k = 0 ;
if(! c) k = 0 ;
if(n) {
k |= n % 10 ;
if(k) printf("%d" , n % 10) ;
c ++ ;
printdigits(n / 10) ;
c -- ;
} else {
if(! k) printf("0") ;
}
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
900000
9
D:\\C>x
100020000
20001
D:\\C>x
120
21
D:\\C>x
00000000
0
D:\\C>
页:
[1]