|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本题要求实现一个函数,对一个整数进行按位顺序输出。
函数接口定义:
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[c],i;
for(i=0;i<c;i++)//保存数据的逆序
{
a[i]=z%10;
printf("a[%d]=%d ",i,a[i]);
z/=10;
}
for(c=c-1;c>=0;c--)//正序输出
{
printf("\n%d",a[c]);
}
}
int main()
{
int n;
scanf("%d", &n);
printdigits(n);
return 0;
}
求问 这种写法为什么是错的?
本帖最后由 jackz007 于 2021-4-4 01:18 编辑
变量 count 欠初始化
用递归函数实现,代码超级简单!
- #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>
复制代码
|
|