C++中级第4讲 高精度数.pptxVIP

  • 2
  • 0
  • 约 40页
  • 2024-05-30 发布于广西
  • 举报
C++中级第4讲高精度数.pptxC++中级第4讲高精度数.pptx

学科竞赛编程教研研究院C++NOIPNOIIOI

1PARTONE高精度数的定义32位计算机有符号整数(int)的取值范围是323130……54321±11……10010-2310+231-1~~

1PARTONE高精度数的定义32位计算机无符号整数(unsignedint)的取值范围是323130……100100232-1~32位无整形:0~4294967295

1PARTONE高精度数的定义长整型(longlong)有符号数范围-263~263-1无符号数范围0~264-11000位整数如何存储?高精度数或大数

1PARTONE高精度数的存储分类整型数组字符数组存储方式按字符串输入,并通过循环语句,将字符转化为数字直接输入,以字符方式存储获取位数计算每个数组的元素位数再相加strlen()函数输出采用循环语句打印数组元素字符串输出,方便运算直接计算转换为数字后计算思想:高精度数每一位数字存储在一个数组中

1PARTONE问题分析高精度数的存储小任务:请用字符数组方法输入两个大数9753186420321123456789(回车)chars1[100]chars2[100]‘9’‘7’‘5’‘3’‘1’‘8’‘6’‘4’‘2’‘0’‘3’‘2’‘1’\0‘1’‘2’‘3’‘4’‘5’‘6’‘7’‘8’‘9’\0亲自出码chars1[100],s2[100];cins1s2;couts1“”s2;//或者get(s1);get(s2);

1PARTONE方法一:前面元素从低位开始存储高精度数的存储intn1[100]intn2[100]975318642032100123456789000000缺点:不利于大数运算时的位置对齐9753186420321+123456789

1PARTONE高精度数的存储ints1[100]ints2[100]123024681357900987654321000000方法二:前面元素存储大数低位,后面元素存储大数高位方法三:第一个元素存储大数长度ints1[100]ints2[100]131230246813579009987654321000000优点:大数计算对齐缺点:不利于求大数长度;数组输入要采用循环语句

1PARTONE高精度数的存储字符数组整型数组方法一整型数组方法三整型数组方法二缺点:计算麻烦,需采用循环语句先将字符转化为数字;即-48缺点:不利于求大数长度;输入繁琐;缺点:输入繁琐;考虑时间成本,及缺点是否好解决的难易程度,因此大数存储多采用字符数组。

1PARTONE两个高精度数位数相同且没有进位1两个高精度数位数不同且没有进位2两个高精度数位数相同且有进位3两个高精度数位数不同且有进位4高精度数的加法

1PARTONE高精度数的加法1、两个高精度数位数相同且没有进位小任务:输入两个高精度数,输出这两个数的和输入:22222222223333333333输出:5555555555问题分析chara1[100]charb1[100]‘3’‘3’‘3’‘3’‘3’‘3’‘3’‘3’‘3’‘3’\0第一步:以字符串形式输入数组‘2’‘2’‘2’‘2’‘2’‘2’‘2’‘2’‘2’‘2’\0

1PARTONE高精度数的加法点击添加文本inta[100]intb[100]3333333333\0第二步:以for循环遍历,将字符数组存储到整型数组2222222222\0点击添加文本coutsuma[1]+b[1]a[2]+b[2]…a[i]+b[i]第三步:以for循环遍历,将对应数组元素相加,无进位,并顺位输出[0][1]…………….[i]…………

1PARTONE高精度数的加法亲自出码#includeiostream#includecstringusingnamespacestd;intmain(){ chara1[1001]={},b1[1001]={}; inta[1001]={},b[1001]={},len; cina1b1; len=strlen(a1);//或者len=strlen(b1) for(inti=0;ilen;i++) { a[i]=a1[i]-48; b[i]=b1[i]-48; } intsum=0; for(i=0;ilen;i++) { sum=a[i]+b[i]; coutsum; } return0;}

1PARTONE高精度数的加法2、两个高精度数位数不同且没有进位小任务:输入两个高精度数,输出这两个数的和输入:222222

文档评论(0)

1亿VIP精品文档

相关文档