C++實(shí)現(xiàn)打印1到最大的n位數(shù)
本文以實(shí)例形式講述了C++實(shí)現(xiàn)打印1到最大的n位數(shù)的方法。分享給大家供大家參考。具體方法如下:
題目要求:
輸入數(shù)字n,按順序打印出從1最大的n位十進(jìn)制數(shù),比如輸入3,則打印出1,2 ,3一直到最大的3位數(shù)999
實(shí)現(xiàn)代碼如下:
#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
也就是說(shuō)
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); }
希望本文所述對(duì)大家C++程序算法設(shè)計(jì)的學(xué)習(xí)有所幫助。
- C++實(shí)現(xiàn)旋轉(zhuǎn)數(shù)組的二分查找
- C++求逆序?qū)Φ姆椒?/a>
- 貪吃蛇游戲C++命令行版實(shí)例代碼
- Lua中調(diào)用C++函數(shù)實(shí)例
- C++中調(diào)用Lua函數(shù)實(shí)例
- C++線程池的簡(jiǎn)單實(shí)現(xiàn)方法
- C++位操作的常見(jiàn)用法小結(jié)
- C++虛函數(shù)表實(shí)例分析
- 提高C++程序運(yùn)行效率的10個(gè)簡(jiǎn)單方法
- C++編譯器無(wú)法捕捉到的8種錯(cuò)誤實(shí)例分析
- C++直接初始化與復(fù)制初始化的區(qū)別深入解析
相關(guān)文章
Qt?加載?libjpeg?庫(kù)出現(xiàn)“長(zhǎng)跳轉(zhuǎn)已經(jīng)運(yùn)行”錯(cuò)誤問(wèn)題解決
這篇文章主要介紹了Qt?加載?libjpeg?庫(kù)出現(xiàn)“長(zhǎng)跳轉(zhuǎn)已經(jīng)運(yùn)行”錯(cuò)誤,本文給大家分享完美解決方案,需要的朋友可以參考下2023-04-04C語(yǔ)言實(shí)現(xiàn)時(shí)間處理工具的示例代碼
這篇文章主要為大家詳細(xì)介紹了利用C語(yǔ)言實(shí)現(xiàn)時(shí)間處理工具的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-09-09c++11?實(shí)現(xiàn)枚舉值到枚舉名的轉(zhuǎn)換問(wèn)題
這篇文章主要介紹了c++11?實(shí)現(xiàn)枚舉值到枚舉名的轉(zhuǎn)換,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03windows系統(tǒng)下C++調(diào)用matlab程序的方法詳解
這篇文章主要給大家介紹了關(guān)于在windows系統(tǒng)下C++調(diào)用matlab程序的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08