###Problem: 从1打印到最大的N位数, 当N=3时,即打印1,2,3,4…999
可以用一个循环,循环999次,依次打印;但是,如果变量定义为int类型时,32位的机子上,最大的unsigned数是2^32 -1, 最大的signed数是 2^31 -1 (更小,有一半为负数),这时,当最大的数超过2^32 -1时,就会溢出。
解决的办法是,申请一个长度为N+1的字符串,最后一位是结束符’\0’。初始化字符串的每一位都为0;然后循环打印,每次将字符串所代表的数字加1;直到最高位有进位时(999+1, 代表到达最大的N位数),停止;
具体程序如下:
1 | void Print1ToMaxOfNDigits ( int n); |
At 23:10