目的是想将1234按4 3 2 1输出,但从输出2的那一步就开始不正常了呜呜呜
#include <stdio.h>
void f(double num);
int main(void){
double num;
scanf("%lf",&num);
f(num);
}
void f(double num){
int k = (int) (num/10);
if(k==0){
printf("%d\n",(int)num);
}else{
printf( "%d\n",(int)((num/10-k)*10));
f((double)k);
}
}
你好,递归方法已给出,望采纳!
int Reverse_order(int n)
{
if(0 == n) //递归结束条件
return n;
printf("%d\n",n%10); //当前所求
Reverse_order(n/10); //下一次的传值
return 0;
}
首先double处理起来比较麻烦, 如果是1234这种整数最好是int.
如果一定要去处理小数, 可以试试把小数当成字符串读取然后处理会更好, 直接逆序输出就行
// 整数的方法
void f(int num){
int k = num%10;
printf("%d", k);
if (k != num){
f(num/10);
}
}
浮点数精度问题,改成这样就对了
printf( "%.0f\n",((num/10.-k)*10));