要输出整型数值的每一位数字,关键在于将每一个数字提取出来。
方法有很多,实现方式更是多种多样,以最常见的两种方式举例说明:
一、传统方法,通过除法和模除,取出每一位,并输出。
参考代码如下:
#include
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
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;
}
#include
int main()
{
int A,b,c,d,e,f,g;
printf("输入五位的正整数");
scanf("%d",&A);
b=A/10000;
c=A/1000%10;
d=A/100%100%10;
e=A/10%1000%100%10;
f=A%10;
printf("万位%d千位%d百位%d十位%d个位%d\n",b,c,d,e,f);
return 0;
}
个位代码应该改成如下:
f=A-b*10000-c*1000-d*100-e*10
用数字A减去其他位数最后余下个位数
b=A/10000;
c=A/1000%10;
d=A/100%10;
e=A/10%10;
f=A%10;
这样就好了吧
f=A%10000%1000&100%10; 其中 & 的问题