打印1到最大的n位数
2012-07-15 20:30
141 查看
题目:输入数字n,按顺序打印出从1最大的n位十进制数,比如输入3,则打印出1,2 ,3一直到最大的3位数999
一定要注意break的使用
array[i] = num + '0';
break;
由于此break的存在,使得takeOver不用重新置为0
也就是说
#include <iostream> using namespace std; void printArray(char *array, int size) { if (array == NULL || size <= 0) { return; } int index = 0; while (array[index] == '0') index++; for (int i = index; i != size; i++) printf("%c", array[i]); cout << endl; } void printNumbers(int n) { if (n <= 0) { return; } char *array = new char[n + 1]; if (array == NULL) { throw("allocate memory error"); return; } memset(array, '0', n); array = 0; while (true) { int takeOver = 0; for (int i = n - 1; i >= 0; i--) { int num = array[i] - '0'; if (i == n - 1) { num++; } else { num += takeOver; takeOver = 0; } if (num == 10) { if (i == 0) goto here; array[i] = '0'; takeOver = 1; } else { array[i] = num + '0'; break; } } printArray(array, n); } here: delete []array; } void main() { int n = 3; printNumbers(n); }
一定要注意break的使用
array[i] = num + '0';
break;
由于此break的存在,使得takeOver不用重新置为0
也就是说
while (true) { int takeOver = 0; for (int i = n - 1; i >= 0; i--) { int num = array[i] - '0'; if (i == n - 1) { num++; } else { num += takeOver; //takeOver = 0; } if (num == 10) { if (i == 0) goto here; array[i] = '0'; takeOver = 1; } else { array[i] = num + '0'; break; } } printArray(array, n); }
相关文章推荐
- 剑指Offer之打印从1到最大的n位数
- 打印1到最大的n位数----java实现
- 【剑指offer】面试题12:打印1到最大的n位数
- 剑指offer面试题12-打印1到最大的n位数
- 剑指offer-chapter3-面试题12-打印1到最大的n位数(java)
- 剑指Offer之打印1到最大的N位数
- 第三章 高质量的代码 打印1到最大的n位数
- 打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数。
- 面试题12-打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 面试题12:打印1到最大的n位数(大数问题)
- 剑指offer_面试题12_打印1到最大的n位数(大数问题)
- 实现自己的pow函数&&打印1到最大的n位数
- 剑指Offer--012-打印1到最大的N位数
- 打印1到最大的n位数
- 打印1到最大的n位数