加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

怎样存一个大数

发布时间:2021-05-28 20:08:12 所属栏目:大数据 来源:网络整理
导读:标题: ? ? 输入数字n,按次序打印出1到最大的n位十进制数。好比输入3,则打印出1,2,3,一向到最大的3位数即999。 ? ?此题看起来简朴,当我刚开始看到题目后,起首想到的就是先求出最大值,然后在一个一个打印出就ok啦。可是细心领略题意,并没有汇报n的取值

标题:

? ? 输入数字n,按次序打印出1到最大的n位十进制数。好比输入3,则打印出1,2,3,一向到最大的3位数即999。

? ?此题看起来简朴,当我刚开始看到题目后,起首想到的就是先求出最大值,然后在一个一个打印出就ok啦。可是细心领略题意,并没有汇报n的取值范畴。若n的值很是大,也许就高出了int可能long long的范畴。也就是说在做此题时,必要思量大数。

? 为办理存大数的题目,我们可以操作数组可能字符串存大数。接下来我用字符串来办理大数题目。

? 起首,必要思量两个题目:

? (1)在字符串上模仿加法

? (2)将字符串中的数字打印出来


措施实现:


模仿加法:

bool?inc(char*?num,int?n)//模仿加法
{
	int?i?=?0;
	int?m?=?0;
	int?take?=?0;//进位
	for(i=n-1;i>=0;i--)
	{
		m?=?num[i]-'0'+?take;
		take?=?0;//进位置0
		if(i?==?n-1)?//从末端加
		{
			m++;
		}
		if(m?>=?10)//发生进位
		{
			if(i?==?0)//若最高为溢出,终止
				return?0;
			else
			{
				take?=?1;
				num[i]?=?m?-?10?+?'0';//进位后,将本位置0
			}
		}
		else
		{
			num[i]?=?m?+?'0';//不发生溢出时,在本位上加
		}
	}
	return?true;
}

?打印:

//void?print(char*?num,int?n)
//{
//	bool?flag?=?true;//符号位
//	int?i?=?0;
//	for(i=0;i<n;i++)
//	{
//		if(flag?&&?num[i]?!=?'0')
//		{
//			flag?=?false;
//		}
//		if(!flag)//若高位不为0,打印
//		{
//			printf("%c",num[i]);
//		}	
//	}
//	cout<<"?";
/                        

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读