【C语言编程】 求一个整数的位数 及 将其各位逆序排列输出
以下是我编写的代码不过有局限性测试结果1----1----112----2-----21123-----3-----3211234-----4------44214位以上...
以下是我编写的代码 不过有局限性
测试结果
1----1----1
12----2-----21
123-----3-----321
1234-----4------4421
4位以上就会出现错误
求大神分析解答
编译工具是gcc
#include<stdio.h>
#include<math.h>
//求一个整数的位数 及 将其各位逆序排列输出
int main()
{
int num;
scanf("%d", &num);
if(num/10==0) printf("%d", num);
else cal(num);
return 0;
}
int cal(int num)
{
int i=1,n=0;
//判断num的位数
for(i=1;;i++)
{
if(num/(int)pow(10,i)==0) break;
}
n=i;
printf("%d\n", n);
int fn[n];
//取出num各位上的数 并输出
for(i=0;i<n;i++)
{
{
else fn[i]=num%(int)pow(10,(i+1))/(int)pow(10,i);
printf("%d", fn[i]);
}
}
return 0;
} 展开
测试结果
1----1----1
12----2-----21
123-----3-----321
1234-----4------4421
4位以上就会出现错误
求大神分析解答
编译工具是gcc
#include<stdio.h>
#include<math.h>
//求一个整数的位数 及 将其各位逆序排列输出
int main()
{
int num;
scanf("%d", &num);
if(num/10==0) printf("%d", num);
else cal(num);
return 0;
}
int cal(int num)
{
int i=1,n=0;
//判断num的位数
for(i=1;;i++)
{
if(num/(int)pow(10,i)==0) break;
}
n=i;
printf("%d\n", n);
int fn[n];
//取出num各位上的数 并输出
for(i=0;i<n;i++)
{
{
else fn[i]=num%(int)pow(10,(i+1))/(int)pow(10,i);
printf("%d", fn[i]);
}
}
return 0;
} 展开
1个回答
展开全部
#include <stdio.h>
#include <math.h>
void CountBit(int iN, int *iCount, int *iInverse)
{
iN = abs(iN);
int iRes = 0;
while(iN){
iRes = iRes*10 + iN%10;
iN = iN/10;
*iCount = *iCount + 1;
}
*iInverse = iRes;
}
int main()
{
int iCount=0, iInverse=0, i=0;
int iInput = 23456;
int iArray[] = {1, 23, 456, 6789, 12345,123456,1234567,12345678,123456789};
for (i=0; i<9; i++)
{
iInput = iArray[i];
iCount =0;
iInverse = 0;
CountBit(iInput, &iCount, &iInverse);
printf("%d----%d----%d\n",iInput, iCount, iInverse);
}
return 0;
}
上述是一个数字逆序比较典型,而且简洁的思路。
更多追问追答
追问
不符合条件啊
条件是N位
这个是有限位数
追答
这道题目的核心是如何获取整数的逆序以及位数,你用
void CountBit(int iN, int *iCount, int *iInverse)
这个函数直接获取任意一个数的位数和逆序不就行了吗
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询