上传新文件

上级 84ed5921
/*
* 本章前面创建了一个left()函数,它返回一个指针,
指向字符串的前n个字符。下面添加另一个left()函数,
它返回整数的前n位。例如,可以使用该函数来查看被存储为整数的、
美国邮政编码的前3位——如果要根据城区分拣邮件,则这种操作很有用。
*/
/*
* 该函数的整数版本编写起来比字符串版本更困难些,
因为并不是整数的每一位被存储在相应的数组元素中。
一种方法是,先计算数字包含多少位。将数字除以10便可以去掉一位,
因此可以使用除法来计算数位。更准确地说,
可以用下面的循环完成这种工作:
*/
unsigned digits = 1;
while (n/=10)
{
digits++;
}
/*
* 上述循环计算每次删除n中的一位时,需要多少次才能删除所有的位。
前面讲过,n /=10是n=n /10的缩写。例如,如果n为8,
则该测试条件将8/10的值(O,由于这是整数除法)赋给n。
这将结束循环,digits 的值仍然为1。但如果n为238,
第一轮循环测试将n设置为238/10,即23。这个值不为零,
因此循环将digits 增加到2。下一轮循环将n设置为23/10,即2。
这个值还是不为零,因此digits将增加到3。下一轮循环将n设置为2/10,
即0,从而结束循环,而digits被设置为正确的值——3。
*/
/*
* 现在假设知道数字共有5位,并要返回前3位,
则将这个数除以10后再除以10,便可以得到所需的值。
每除以10次就删除数字的最后一位。要知道需要删除多少位,
只需将总位数减去要获得的位数即可。
例如,要获得9位数的前4位,需要删除后面的5位。
可以这样编写代码:
*/
ct = digits - ct;
while (ct--)
{
num /= 10;
}
return num;
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册