首页 > 编程语言 > 详细

c 语言 输出1 -n位最大整数

时间:2015-09-19 22:52:11      阅读:248      评论:0      收藏:0      [点我收藏+]
/*
1.打印1到最大的n位数。
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。
比如:输入3,则打印出1、2、3一直到最大的3位数999.
[陷阱]:这个题目很容易想到的办法就是先求出最大的数。
然后循环输出就可以了。
*/


#include<stdio.h>//自己想到的方法,从a[0]-a[n]依次输出每一位,一次只输出某一位的某个数字

int main()
{
	int i = 0,j = 0,k = 0,input=3;//i为控制进位  j为每一位输出(个位,十位等)
	//k为循环进位,input 为最大输出数
	char a[] = "100000000";//模拟进位的储存器
	while (j < input)//判断是否结束
	{
		while (j >= 0)//控制输出某位
		{
			printf("%c",a[j]);//输出一位数字
			if (j == 0) //j==0时为个位 依次累加位数
			{
				if (a[j] == ‘9‘)//个位为9进位
				{
					for (k = 0; k < input;)//是否多次进位
					{
						if (a[k+1]<‘9‘)
						{
							a[k + 1]++;
							a[k] = ‘0‘;
							if (a[k + 1] == ‘1‘&&i<k+1)
								i++;//开辟新的位数
							break;
						}
						else
						{
							a[k] = ‘0‘;//个位制零
							k++;
						}
					}
				}
				else
					a[0]++;//个位自加
			}
			j--;//j 从高位 依次减少
		}
		printf(" "); //分割 每个数字
		j = i;//让j为现在的最高位 例如:9 之后 10  j=i=1;
	}
	return 0;
}



#include<stdio.h>
#include<string.h>
#include<assert.h>

int add_num(char *arr,int num,int end)//网上一般逻辑模拟数字累加程序(稍微不同)
{                                     //num  输出位数n  end  模拟空间最大值
	assert(arr);
	int is_carry = 0;//是否进位
	int is_over = 1;//是否超过与溢出
	int i = end-1;
	char *arr1 = arr;
	if (arr1[i] != 9)
	{
		arr1[i]++;
	}
	else
	{
		is_carry = 1;
		arr[i] = 0;
		while (1)
		{
			if (end-1 - (i - 1) >= num || i == 0)
			{
				printf("\n   ****  输出结束! ****\n");
				is_over = 0;
				return is_over;
			}
			if (arr1[--i] != 9)
			{
				arr1[i] += is_carry;
				is_carry = 0;
				break;
			}
			else
			{
				arr1[i] = 0;
			}
		}
	}
}

void show_num(char *arr,int num)//按位输出
{
	int is_high = 0;
	while (num>0)
	{
		if (*arr == 0&&is_high==0)
			arr++;
		else
		{
			printf("%d",(int)*arr++);
			is_high = 1;
		}
		num--;
	}
	printf(" ");
}
int main()
{
	char num[11] = { ‘\0‘ };
	while (add_num(num, 3,11))
	{
		
		show_num(num,11);
	}

	return 0;
}


c 语言 输出1 -n位最大整数

原文:http://shaungqiran.blog.51cto.com/10532904/1696355

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!