【C语言】打印1到最大的n位数

//打印1到最大的n位数
//输入数字n,按顺序打印出从1到最大的n位十进制数。比如:输入3,则打印出1、2一直到最大的3位数999
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int num[10];
int add(int n)
{
	int isoverflow = 0;
	int carry = 0;
	int i;
	for (i = 9; i >= 10 - n; i--)
	{
		num[i] += carry;
		if (i == 9)
			num[i]++;

		if (num[i] >= 10)
		{
			if (i == 10 - n)
			{
				isoverflow = 1;
			}
			else
			{
				num[i] -= 10;
				carry = 1;
			}
		}
		else
		{
			break;
		}
	}
	return isoverflow;
}
int main(void){
	int n, i;
	while (scanf_s("%d", &n) != EOF && n >= 1 && n <= 5)
	{
		memset(&num, 0, sizeof(int)* 10);
		while (!add(n))
		{
			int flag = 0;
			for (i = 10 - n; i < 10; i++)
			{
				if (num[i] != 0 || flag)   //如果是前面的零,则不输出;如果是后面的零,则输出
				{
					flag = 1;
					printf("%d", num[i]);
				}
			}
			printf("  ");
		}
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 17:54:10

【C语言】打印1到最大的n位数的相关文章

C语言打印记事本内搜索字符串所在行信息

本程序采用C语言编写,使用方法: 1.双击“甲骨文字符串查询作品.exe”运行程序; 2.运行前请确保此可执行程序目录下有1.txt文件. 3.根据提示输入一个字符串,程序将显示存在所搜索字符串的所有行! 程序如果问题,请联系[email protected]! 2014-7-31日安阳师范学院机房完成. 程序截图: 源码如下: #include <stdio.h> #include<string.h> #include<stdlib.h> #include<co

&#8203;用c语言打印自定义的乘法口诀表。例如:输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。

用c语言打印自定义的乘法口诀表.例如:输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表. #include <stdio.h> int main () { int n; int i, j; printf ("请输入要打印多大的乘法口诀表"); scanf ("%d",&n); for (j=1; j<=n; j++) { for(i=1; i<=j; i++) { printf ("%d*%d=%2d &quo

C语言打印100以内的质数

C语言打印100以内的质数 #include <stdio.h> int main() { int number; int divisor; for( number = 3; number <= 100; number += 2 ) { for( divisor = 3; divisor <= number; divisor += 2 ) { if( number % divisor == 0 ) break; } if( divisor == number ) printf(&q

C语言打印100到200之间的素数

用C语言打印素数,我们首先要了素数的相关定义:只有1和它本身两个因数的自然数,也就是说除了1和它本身外,不能被其他自然数整除的数就称为素数. 例如:101只能被1 和101 整除:103只能被1 和103 整除,所以他两都是素数 思路: 要判断一个数是否为素数可以验证从2开始到它本身的数里是否有可以被他取余数为0 的数字,如果有则证明它不是素数.反之则输出素数. 1 # include<stdio.h> 2 int main() 3 { 4 int i = 0; 5 int count = 0

打印1到最大的n位数----java实现

题目:输入数字n,按顺序打印出从1到最大的n位十进制数.比如,输入3,则打印出1,2,3,.....,一直到最大的3位数即999. 分析: 1.这是一个典型的大数加法问题,无论是int还是long long类型多无法表示.所以在解决大数问题时,通常是使用字符串或者数组实现其功能(由于个人比较钟爱数组,所以下面代码是使用数组实现的). 2.在大数的加法中,我们需要注意的问题是进位问题. 3.在该题中还需要判断是否为最大的n位整数.这里需要一个小技巧,我们只需判断最高位(第n位)是否要进位,如果需进

剑指OFFER之打印1到最大的N位数(九度OJ1515)

题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例.对于每个测试案例,输入一个数字N(1<=N<=5). 输出: 对应每个测试案例,依次打印从1到最大的N位数. 样例输入: 1 样例输出: 1 2 3 4 5 6 7 8 9 解题思路: 直接通过n快速指定比最大的那个数大1的数,10,100,1000,10000,100000.... 输出,就行了... 代码: #include <stdio.h> int main(void){ int

剑指offer (12) 打印1到最大的n位数

题目描述: 给定一个数字N,打印从1到最大的N位数 此题需要注意以下几点: 1. 涉及到大数问题,因为并没有限定 n的取值范围,所以需要采取 字符数组模拟大数运算 2. 打印数字时 需要忽略前置0 3. 我们始终 以n位数为整体,n位所有十进制数其实是 n位从0到9的全排列,可以采用递归解决 我们从 数组下标0开始 (对应于数字最高位),每一位都有0到9取值,然后设置下一位,递归的结束条件是 设置位到了数组的最末端 1 void PrintNum(char* num) 2 { 3 char* c

数据结构-打印1到最大的n位数

题目:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999. 分析:本题最关键的部分是当n值非常大的时候会超出数据类型的范围.偷个懒,没有实现打印1,2,3....999.可以利用分割把string分割成char[].然后单个的char转为int再进行加减法,作为输出. /* 剑指offer面试题12 该问题主要考虑到数据非常大超出数据类型的范围 */ #include <iostream> #include <cstring>

面试题17:打印1到最大的n位数

// 面试题17:打印1到最大的n位数 // 题目:输入数字n,按顺序打印出从1最大的n位十进制数.比如输入3,则 // 打印出1.2.3一直到最大的3位数即999. 解题思路: 首先是一个大陷阱,n有多大?万一大到long long类型都盛不下,你要直接动手写,那写的再正确也是凉凉. 我们考虑到用字符来表示数字,然后把字符打印出来就行了. 书上巴拉巴拉说了一种很复杂的方法,代码量大也比较繁琐,感兴趣的去参考资料看就行了. 这里直接介绍第二种简单的方法,其实打印出从1最大的n位十进制数,实际就是