正序输出
本题要求实现一个函数,对一个整数进行按位顺序输出。函数接口定义:
void printdigits( int n );
函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。
#include <stdio.h>
void printdigits( int n )
{
int z=n;
int count;
while(n>0)
{
n/=10;
count++;
}
int c=count;
int a,i;
for(i=0;i<c;i++)//保存数据的逆序
{
a=z%10;
printf("a[%d]=%d ",i,a);
z/=10;
}
for(c=c-1;c>=0;c--)//正序输出
{
printf("\n%d",a);
}
}
int main()
{
int n;
scanf("%d", &n);
printdigits(n);
return 0;
}
求问 这种写法为什么是错的? 本帖最后由 jackz007 于 2021-4-4 01:18 编辑
变量 count 欠初始化
int count = 0 ;
用递归函数实现,代码超级简单!
#include <stdio.h>
void printdigits(int n)
{
if(n) {
printdigits(n / 10) ;
printf("%d\n" , n % 10) ;
}
}
int main()
{
int n ;
scanf("%d", & n) ;
printdigits(n) ;
}
编译、运行实况
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
12345678
1
2
3
4
5
6
7
8
D:\00.Excise\C>x
10086
1
0
0
8
6
D:\00.Excise\C> 代码的确简单,但我还理解不了。好难啊
页:
[1]