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

#include<stdio.h>#include<math.h>intmain(){inta,b,c,n,i,m;printf("输入一个整数");scanf("%d"... #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; } 展开
 我来答
风若远去何人留
2017-03-29 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部
#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可能是不准确的。 

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

imkarayi9d4f
2017-03-29 · TA获得超过1552个赞
知道小有建树答主
回答量:1164
采纳率:85%
帮助的人:604万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式