#include<stdio.h> int main() { double x = 256.141592654; int n = (int)x % 1000; //整数部分 while(n) //整数部分输出 { int temp = n % 10; n /= 10; printf("%d ", temp); } int i = 5; while(i>0) //输出5位小数 { x = x*10; printf("%d ",(int)x%10); //强制将double转换成int,因为求余(%)必须为int类型, i--; } return 0; }
附:C语言,如何输出每一位数字? https://zhidao.baidu.com/question/584309257492424645.html
一、传统方法,通过除法和模除,取出每一位,并输出。
#include<stdio.h> void output(int n) { int a[10]; int l=0; /* 循环获取每一位的值,并存到数组a中。 其中l表示已经获取到的位数。 由于每次获取的是个位n%10,所以存在数组a中的是各个位数的逆序。 */ while(n) { a[l++] = n%10; n/=10; } //反序输出每一位值。 while(--l>=0) printf("%d ", a[l]); } int main() { int n; scanf("%d",&n);//输入n值。 output(n);//输出各个位。 return 0; }
二、转为字符串,然后输出字符串各个字符。
由于在C语言中,有很多库函数,比如itoa, sprintf等,都可以很方便的将整数转为字符串,而逐位输出字符串各个字节值是很简单的,所以可以通过转为字符串,再输出的方式输出各个位的值。
#include<stdio.h> void output(int n) { char a[11]; int i; sprintf(a, "%d", n);//转为字符串。 for(i = 0; a[i]; i++)//遍历字符串。 printf("%c ", a[i]);//输出各个位值。 } int main() { int n; scanf("%d",&n);//输入n值。 output(n);//输出各个位。 return 0; }