有一个地方看不懂
求助:有一个地方看不懂
#include <stdio.h>
int main(void)
{
int number = 0; /*The number to be reversed*/
int rebmun = 0; /*The reversed number*/
int temp = 0; /*Working storage*/
/*Get the value to be reversed*/
printf("\nEnter a positive integer :");
scanf("%d",&number);
temp = number; /*Copy to working storage*/
/*Reverse the number stored in temp*/
do
{
rebmun = 10*rebmun + temp % 10; /*Add the rightmost digit*/
temp = temp/10; /*Remove the rightmost digit*/
}while(temp); /*Continue while temp>0*/[color=#800000][/color]
printf("\nThe number %d reversed is %d rebmum ehT\n",number,rebmun);
return 0;
}
书上原文这样写到:temp原本是43,则temp%10结果是3,将10*rebmum+temp%10的值赋予rebmum。
变量rebmum的初始值是0,所以rebmum储存了数字3.将输入值最右边的数字3保存到rebmum后,就可以
给temp除以10,去掉这个数字。temp的初始值是43,所以temp/10的结果四舍五入为4.在循环结束时,
检查while(temp)条件,而temp的值是4,所以该条件是true。因此返回循环的开始处,执行另一个迭代。
后面就是理解不了了:储存在rebmum中的值与10相乘,得到30,再加上temp%10的余数4,所以rebmum的结果
是34.然后将temp除以10,得到0.现在,到达循环迭代的结尾时,temp是0,即false,所以循环结束。
------解决方案--------------------
所以temp/10的结果四舍五入为4??
这不是四舍五入结果为4,是temp/10的结果就是4,是因为temp的是int类型,10也是int类型,所以他们的结果也是int类型或者是unsigned int类型。所以按算数计算,temp/10应该是4.3,取整就是4了。
这是一个将一个指定位数的数字,逆序输出。这个主要是理解/和%符号的作用。
#include <stdio.h>
int main(void)
{
int number = 0; /*The number to be reversed*/
int rebmun = 0; /*The reversed number*/
int temp = 0; /*Working storage*/
/*Get the value to be reversed*/
printf("\nEnter a positive integer :");
scanf("%d",&number);
temp = number; /*Copy to working storage*/
/*Reverse the number stored in temp*/
do
{
rebmun = 10*rebmun + temp % 10; /*Add the rightmost digit*/
temp = temp/10; /*Remove the rightmost digit*/
}while(temp); /*Continue while temp>0*/[color=#800000][/color]
printf("\nThe number %d reversed is %d rebmum ehT\n",number,rebmun);
return 0;
}
书上原文这样写到:temp原本是43,则temp%10结果是3,将10*rebmum+temp%10的值赋予rebmum。
变量rebmum的初始值是0,所以rebmum储存了数字3.将输入值最右边的数字3保存到rebmum后,就可以
给temp除以10,去掉这个数字。temp的初始值是43,所以temp/10的结果四舍五入为4.在循环结束时,
检查while(temp)条件,而temp的值是4,所以该条件是true。因此返回循环的开始处,执行另一个迭代。
后面就是理解不了了:储存在rebmum中的值与10相乘,得到30,再加上temp%10的余数4,所以rebmum的结果
是34.然后将temp除以10,得到0.现在,到达循环迭代的结尾时,temp是0,即false,所以循环结束。
------解决方案--------------------
所以temp/10的结果四舍五入为4??
这不是四舍五入结果为4,是temp/10的结果就是4,是因为temp的是int类型,10也是int类型,所以他们的结果也是int类型或者是unsigned int类型。所以按算数计算,temp/10应该是4.3,取整就是4了。
这是一个将一个指定位数的数字,逆序输出。这个主要是理解/和%符号的作用。