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

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

#include<math.h>
#include<stdio.h>

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可能是不准确的。 

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-29
#include <stdio.h>
#include <math.h>
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;
}

相似回答