首页 > 编程 > C++ > 正文

C++实现打印1到最大的n位数

2020-01-26 15:18:08
字体:
来源:转载
供稿:网友

本文以实例形式讲述了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++程序算法设计的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表