手机
当前位置:查字典教程网 >编程开发 >C语言 >C++实现打印1到最大的n位数
C++实现打印1到最大的n位数
摘要:本文以实例形式讲述了C++实现打印1到最大的n位数的方法。分享给大家供大家参考。具体方法如下:题目要求:输入数字n,按顺序打印出从1最大的n...

本文以实例形式讲述了C++实现打印1到最大的n位数的方法。分享给大家供大家参考。具体方法如下:

题目要求:

输入数字n,按顺序打印出从1最大的n位十进制数,比如输入3,则打印出1,2 ,3一直到最大的3位数999

实现代码如下:

#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[n] = 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); }

希望本文所述对大家C++程序算法设计的学习有所帮助。

【C++实现打印1到最大的n位数】相关文章:

利用C++实现从std::string类型到bool型的转换

C++实现两个日期间差多少天的解决方法

使用C++实现全排列算法的方法详解

C++标准模板库函数sort的那些事儿

C++常对象精讲_const关键字的用法

C++实现基数排序的方法详解

c++大数阶乘的实现方法

使用C语言实现CRC校验的方法

c语言中用位运算实现加法技巧介绍

c++通过引用实现三个数字求最大值

精品推荐
分类导航