作业帮 > 综合 > 作业

输入一个数,然后把它倒着输出.这段 “while(s1) { s2=s2*10+s1%10; s1=s1/10; }”代

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/19 12:02:21
输入一个数,然后把它倒着输出.这段 “while(s1) { s2=s2*10+s1%10; s1=s1/10; }”代码看不懂,
#include
void main()
{
long s1,s2=0;
printf("请输入一个整数:\n");
scanf("%ld",&s1);
while(s1)
{
s2=s2*10+s1%10;
s1=s1/10;
}
printf("反转后的数是 %ld\n",s2);
}
while(s1)
{
s2=s2*10+s1%10;
s1=s1/10;
}
目的是逆序,这段代码的意思是:
将s1每次除以10,得到的余数和s2乘以10以后的结果相加
然后s1去掉最后一位
循环,直至s1为0.
举例
s1:12345 s2:0
第一趟:
s2 = 0*10 + 12345%10 = 0+5 = 5
s1 = 12345/10 = 1234
第二趟:
s2 = 5*10 +1234%10 = 50+4 = 54
s1 = 1234/10 = 123
第三趟:
s2 = 54*10 + 123%10 = 540+ 3 = 543
s1 = 123/10 = 12
第四趟:
s2 = 543*10 +12%10 = 5430+2=5432
s1 = 12/10 = 1
第五趟:
s2 = 5432*10 +1%10 = 54320+1 = 54321
s1 = 1/10 = 0
跳出循环
输出54321