c语言题目:从高位开始逐位输出一个整数的各位数字:输入一个整数,从高位开始逐位分割并输出它的各

2024-11-22 18:07:00
推荐回答(2个)
回答(1):

#include
#include

int main(){
    int a,b,c,n,i,m; 
    printf("输入一个整数"); 
    scanf("%d",&n); 
    i=1; 
    m=n; 
    while(n>10){
     n/=10; //这里 少了一个等于号。导致死循环。
     i*=10;
    }
    while(m>0){
        n=m/i; //不要改变m值, 用n存储
        m=m-n*i;
        i/=10; 
        printf("%d\n",n); 
    } 
    return 0; 
}

问题不少

算法上 最大的问题是pow返回的是double类型,转为int可能是不准确的。 

在你算法基础上 最小改动 修改成这样。其实 这个用数组 或者递归做 更简单 。

回答(2):

#include 
#include 
int main()
{
   int a,b,c,n,i,m; 
   printf("输入一个整数"); 
   scanf("%d",&n); 
   i=-1; 
   m=n; 
   while(n>0)
   {
      n=n/10; 
  i++; 
   }
   while(m>=10)
   {
      m=m/pow(10,i); 
  i--; 
  printf("%d\n",m); 
  m=m/10; 
   }
   return 0;
}