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; }
展开
2个回答
展开全部
#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可能是不准确的。
在你算法基础上 最小改动 修改成这样。其实 这个用数组 或者递归做 更简单 。
展开全部
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询