C语言运算符的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 13:49:50
题目是这个
用户输入一个3位数(如312),请你编写一个程序显示个位,十位和百位分别是多少?
我是这么写的
#include "stdio.h"
main()
{
int a,b,c,d;
printf("请输入一个三位数:\n");
scanf("%d",&a);
b=a%100;
c=(a/10)%10;
d=a%10;
printf("%d,%d,%d",b,c,d);
}
运行得出的结果是不符合要求,比如我输入123 结果是23,2,3
输入312结果是12,1,2
为什么会这样呢?另外请高手详细的解释下这个C程序为什么要这么编写?
(题目是这么提示的,算法提示

得到个位的方法:用该数除以10,取得余数.

得到十位的方法:用该数除以10,取得整数,再用取整后的数除以10取得余数

得到百位的方法:用该数除以100,取得余数)

#include "stdio.h"
main()
{
int a,b,c,d;
printf("请输入一个三位数:\n");
scanf("%d",&a);
b=a%10; /* %号是求余,这里求得个位数 */
c=(a/10)%10;/* /号是求整,(a/10)假如输入的是123,此时a就变为了12,只剩下十位和百位的数了,再求余就得到了十位的数*/
d=a/100; /*求整,得到百位,注意此时a还是你原来输入放入那个数*/
printf("%d,%d,%d",b,c,d);
}

include "stdio.h"
main()
{
int a,b,c,d;
printf("请输入一个三位数:\n");
scanf("%d",&a);
b=a/100;
c=(a/10)%10;
d=a%10;
printf("%d,%d,%d",b,c,d);
}

b=a%100;
改为
b=a/100;

b=a/100;
c=(a%100)/10;
d=((a%100)%10);

百位,是除出来的,求余是用于十位计算的
a = 312

a/100 = 3;
a%100 = 12;

b = a%100
同理
b/10 = 1
b%10 = 2

#include "stdio.h"
main()
{
int a,b,c,d;
printf("请输入一个三位数:\n");
scanf("%d",&a);
b=a%10