main()//程序入口
{
int m,n,a=0,s=0;//定义4个整形变量
printf("输入n:");
scanf("%d",&n);//从键盘输入一个数n
while(n)//当n不为0,执行循环
{
m=n%10;//另m等于n模10,即n除以10的余数
n=n/10;//另n缩小十倍取整
s+=m;//s=s+m,即循环执行完毕之后,s是m的总和
a=a*10;//
a+=m;//a每次乘以10再加上m,相当于得到一个x位数(x为n的位数)
}
printf("各位数之和s=%d\n",s);
printf("其反序数=%d\n",a);
}
整个程序就是为了得到输入的数的逆序排列数以及所有数字之和
#include
main()
{
int m,n,a=0,s=0;
printf("输入n:");
scanf("%d",&n);
while(n)
{
m=n%10; //m为每次循环,n数值的个位值
n=n/10; //n数值把个位去掉
s+=m; //每位值相加
a=a*10; //提高一个进制位
a+=m; //加上个位
}
printf("各位数之和s=%d\n",s);
printf("其反序数=%d\n",a);
}
如:
输入:123
输出各位数之和s=1+2+3=6
输出反序数a=321
#include
main()
{
int m,n,a=0,s=0;
printf("输入n:");
scanf("%d",&n);
while(n) //当n不等于0时
{
m=n%10; //将n除10的余数赋值给m
n=n/10;//n变成n除10(没小数点,没余数)
s+=m;//s = s+m 这个就能算出个位数之间的和
a=a*10;//这个不用解释了吧
a+=m;//a = a+m 这个就能算出反序数
}
printf("各位数之和s=%d\n",s);
printf("其反序数=%d\n",a);
}
//我想关键就是这个位置吧
while(n)
{
m=n%10;
n=n/10;
s+=m;
//a=a*10; 反序下面再说
//a+=m;
}
以n=1032为例:
m=n%10-->2-->m=2 //最后一位数字
n=n/10-->n=103 //这里是整除(也可以理解为去掉最后一位数字)
s+ =m-->s=s+m(0+2)-->s=2;//统计各位数字之和(个位-->十位-->百位......)
判断n是否为0,n=103!=0
接着执行循环;
m=3
n=10
s=2+3=5
依次类推,当n=1时,m=1,n=0,s=2+3+0+1=6 此时n=0循环结束
//逆序
while(n)
{
m=n%10;
n=n/10;
s+=m;
a=a*10; //第一次a=0,m=2,a=2
a+=m; //第二次 a=2*10=20,m=3,a=23
} //三次 a=23*10=230,m=0,a=230
//四次 a=2300 ,m=1,a=2301
//也可以这样不用a ,当然这样没保存逆序数
while(n)
{
m=n%10;
n=n/10;
s+=m;
printf("%d",m);//把输出放在这里,求一个输出一个
}
你可以自己调试,看每个变量的变化情况.(不会的话学习一下,很简单)