程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++完成打印1到最年夜的n位數

C++完成打印1到最年夜的n位數

編輯:關於C++

C++完成打印1到最年夜的n位數。本站提示廣大學習愛好者:(C++完成打印1到最年夜的n位數)文章只能為提供參考,不一定能成為您想要的結果。以下是C++完成打印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++法式算法設計的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved