• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++实现打印1到最大的n位数

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++控制小数点位数,c++小数位数,c++控制输出位数,c++实现二叉树,rsa加密算法c++实现等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文以实例形式讲述了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);
}

</div>

这里一定要注意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);
}

</div>

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++实现简单的扫雷游戏(控制台版)
  • C++实现查找中位数的O(N)算法和Kmin算法
  • C++实现打印1到最大的n位数

相关文章

  • 2017-05-28浅析C++中的虚函数
  • 2017-05-28解析为何要关闭数据库连接,可不可以不关闭的问题详解
  • 2017-05-28win32 api实现2048游戏示例
  • 2017-05-28C++ 静态成员的类内初始化详解及实例代码
  • 2017-05-28详解C++编程中的vector类容器用法
  • 2017-05-28c++中八大排序算法
  • 2017-05-28C语言学生管理系统源码分享
  • 2017-05-28VC++的combobox控件用法汇总
  • 2017-05-28如何统计在一篇文章中某个单词出现了几次,以及第一次出现的位置
  • 2017-05-28深入理解char *a与char a[]的区别

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于C++中虚拟继承的一些总结分析
    • C语言使用libZPlay录制声音并写到文件的方法
    • C++实现单链表按k值重新排序的方法
    • 浅析C++中模板的那点事
    • C++中typedef 及其与struct的结合使用
    • C语言解字符串逆序和单向链表逆序问题的代码示例
    • 浅谈c++中的stl中的map用法详解
    • VC实现ODBC数据库操作实例解析
    • C语言求向量和的两则问题解答分享
    • 数组和指针的区别深入剖析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有