当前位置:文档之家› 高精度模板(C )

高精度模板(C )

高精度模板(C  )
高精度模板(C  )

高精度计算

高精度计算 由于计算机具有运算速度快,计算精度高的特点,许多过去由人来完成的烦琐、复杂的数学计算,现在都可以由计算机来代替。 计算机计算结果的精度,通常要受到计算机硬件环境的限制。例如,pascal 要计算的数字超过19位,计算机将按浮点形式输出;另一方面,计算机又有数的表示范围的限制,在一般的微型计算机上,实数的表示范围为l0-38 -l038。例如,在计算N!时,当N=21时计算结果就超过了这个范围,无法计算了。这是由计算机的硬件性质决定的,但是,我们可以通过程序设计的方法进行高精度计算(多位数计算)。 学习重点 1、掌握高精度加、减、乘、除法。 3、理解高精度除法运算中被除数、除数、商和余数之间的关系。 4、能编写相应的程序,解决生活中高精度问题。 学习过程 一、高精度计算的基本方法 用free pascal程序进行高精度计算,首先要处理好以下几个基本问题:【数据的输入与保存】 (1)一般采用字符串变量存储数据,然后用length函数测量字符串长度确定其位数。 (2)分离各位数位上的数字 分离各数位上的数通常采用正向存储的方法。以“163848192”为例,见下表:A[9] A[8] A[7] A[6] A[5] A[4] A[3] A[2] A[1] 1 6 3 8 4 8 1 9 2 基本原理是A[1]存放个位上的数字,A[2]存放十位上的数字,……依此类推。即下标小的元素存低位上的数字,下标大的元素存高位上的数字,这叫“下标与位权一致”原则。 【计算结果位数的确定】 (1)高精度加法:和的位数为两个加数中较大数的位数+1。 (2)高精度减法:差的位数为被减数和减数中较大数的位数。 (3)高精度乘法:积的位数为两个相乘的数的位数之和。 (4)高精度除法:商的位数按题目的要求确定。 【计算顺序与结果的输出】 高精度加、减、乘法,都是从低位到高位算起,而除法相反。输出结果都是从高位到低位的顺序,注意:高位上的零不输出(整数部分是零除外)。 高精度加法 【参考程序】 var a,b:array[1..10000] of byte; i,w,la,lb:integer;

第一章 高精度计算

第一章 高精度计算 【上机练习】 1、求N!的值(ni) 【问题描述】 用高精度方法,求N!的精确值(N以一般整数输入)。 【输入样例】 10 【输出样例】 3628800 2、求A/B高精度值(ab) 【问题描述】 计算A/B的精确值,设A,B是以一般整数输入,计算结果精确到小数后20位(若不足20位,末尾不用补0)。 【输入样例1】 4 3 【输出样例1】 4/3=1.33333333333333333333 【输入样例2】 6 5 【输出样例2】 6/5=1.2 3、求n累加和(ja) 【问题描述】 用高精度方法,求s=1+2+3+……+n的精确值(n以一般整数输入)。 【输入样例】 10 【输出样例】 55 4、阶乘和(sum) 【问题描述】 已知正整数N(N<=100),设S=1!+2!+3!+...N!。其中"!"表示阶乘,即N!=1*2*3*……*(N-1)*N,如:3!=1*2*3=6。请编程实现:输入正整数N,输出计算结果S的值。 【输入样例】 4 【输出样例】 33 5、高精度求积(multiply) 【问题描述】 输入两个高精度正整数M和N(M和N均小于100位)。 【问题求解】 求这两个高精度数的积。 【输入样例】 36 3 【输出样例】 108 6、天使的起誓(yubikili) 【问题描述】 TENSHI非常幸运地被选为掌管智慧之匙的天使。在正式任职之前,她必须和其他新当选的天使一样,

要宣誓。宣誓仪式是每位天使各自表述自己的使命,她们的发言稿被放在n个呈圆形排列的宝盒中。这些宝盒按顺时针方向被编上号码1、2、3……、n-1、n。一开始天使们站在编号为N的宝盒旁。她们各自手上都有一个数字,代表她们自己的发言稿所在的盒子是从1号盒子开始按顺时针方向的第几个。例如:有7个盒子,那么如果TENSHI手上的数字为9,那么她的发言稿所在盒子就是第2个。现在天使们开始按照自己手上的数字来找发言稿,先找到的就可以先发言。TENSHI一下子就找到了,于是她最先上台宣誓:“我将带领大家开启NOI之门……”TENSHI宣誓结束以后,陆续有天使上台宣誓。可是有一位天使找了好久都找不到她的发言稿,原来她手上的数字M非常大,她转了好久都找不到她想找的宝盒。 【问题求解】 请帮助这位天使找到她想找的宝盒的编号。 【输入格式】 从文件yubikili.in的第一、二行分别读入正整数n和m,其中n、m满足 2 ≤ n≤ 108,2 ≤ m≤ 101000 【输出格式】 把所求宝盒的编号输出到文件yubikili.out,文件只有一行(包括换行符)。 【样例一】 yubikili.in yubikili.out 7 2 9 【样例二】 yubikili.in yubikili.out 9 11 108 7、Hanoi双塔问题(Noip2007) 【问题描述】 给定A、B、C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。现要将这些圆盘移到C柱上,在移动过程中可放在B柱上暂存。要求: (1)每次只能移动一个圆盘; (2)A、B、C三根细柱上的圆盘都要保持上小下大的顺序; 任务:设A n为2n个圆盘完成上述任务所需的最少移动次数,对于输入的n,输出A n。 【输入格式】 输入文件hanoi.in为一个正整数n,表示在A柱上放有2n个圆盘。 【输出格式】 输出文件hanoi.out仅一行,包含一个正整数, 为完成上述任务所需的最少移动次数A n。 【输入输出样例1】 hanoi.in hanoi.out 1 2 【输入输出样例2】 hanoi.in hanoi.out 2 6 【限制】 对于50%的数据,1<=n<=25 对于100%的数据,1<=n<=200 【提示】设法建立A n与A n-1的递推关系式。

电力系统谐波分析的高精度FFT算法

查看文章 电力系统谐波分析的高精度FFT 算法 2009-11-09 11:35 原文出处:https://www.doczj.com/doc/df3257960.html,/periodical/periodical.articles/zgdjgcxb/zgdj99/zgdj9903/990315.htm 电力系统谐波分析的高精度FFT算法 张伏生 耿中行 葛耀中 摘要 快速傅立叶变换存在较大的误差,无法直接用于电力系统谐波分析。本文对FFT的泄漏误差进行了分析,根据Jain和Grandke提出的插值算法提出了多项余弦窗插值的新算法,对FFT的结果进行修正,极大地提高了计算精度,使之适用于电力系统的准确谐波分析。文中给出了该算法进行谐波分析模拟计算的算例,计算结果表明,不同的加窗算法计算精度不同,新算法的计算精度显著提高。 关键词 傅立叶变换 电力系统 谐波 中图分类号 TM714 FFT ALGORITHM WITH HIGH ACCURACY FOR HARMONIC ANALYSIS IN POWER SYSTEM Zhang Fusheng Xian Jiaotong University Xian,710049 China Geng Zhongxing Research Center for Aviation Engineering and Technology,Beijing 100076 China Ge Yaozhong Xian Jiaotong University Xian,710049 China ABSTRACT The FFT has a higher error in the harmonic analysis of the electric power system, especially for the phases. This paper discussed the leakage of FFT and presented a new amending algorithm, poly-cosin window interpolation, which base d on the interpolating algorithm proposed by K. Jain and T. Grandke. This new algorithm obviously improves the accuracy of th e FFT, so it can be applied to the precision analysis for electrical harmonic. The simulating result shows that applying deferent w indows has the deferent effects to the accuracy, and the Blackman-Harris window has the highest accuracy. KEY WORDS Fourier transform Electric power system Harmonic 1 引言 近年来,随着电力电子技术的广泛应用,电力系统谐波污染日益严重,已成为影响电能质量的公害,对电力系统的安全、经济运行造成极大的影响。所以对电网中的谐波含量进行实时测量,确切掌握电网中谐波的实际状况,对于防止谐波危害,维护电网的安全运行是十分必要的。 电力系统的谐波分析,通常都是通过快速傅立叶变换(FFT)实现的。然而FFT存在栅栏效应和泄漏现象,使算出的信号参数即频率、幅值和相位不准,尤其是相位误差很大,无法满足准确的谐波测量要求。为了提高FFT 算法的精度,V.K.Jain 等提出了一种插值算法,对FFT的计算结果进行修正,可以有效地提高计算精度。在此基础上,T.Grand ke 又利用海宁( Haning)窗减少泄漏,进一步提高了计算精度。 海宁窗w(n)=0.5-0.5cos(2πn/N) 是一种余弦窗,它仅包括两项。如果增加余弦项的项数,可进一步减少泄漏。本文分析了多项余弦窗的特性,并提出了对加窗后信号进行插值的算法。该算法能极大地提高FFT计算的精度,从而满足谐波测量中对谐波参数的精度要求。文中给出了计算实例,实例表明该算法具有很高的计算精度,即使对于幅值很小的偶次谐波也能准确地求出其各项参数,尤其是对于提高相位计算的精度更为明显。 2 离散傅立叶变换的泄漏与栅栏效应 在谐波测量中,所要处理的信号均是经过采样和A/D转换得到的数字信号。设待测信号为x(t),采样间隔为Δt秒,采样频率f s =1/Δt 满足采样定理,即f s 大于信号最高频率分量的两倍。则采样信号为x[n]=x(n Δt),并且采样信号总是有限长度的,即n=0,1,…,N-1。也就是说,所分析的信号的持续时间为T=N Δt,这相当于对无限长的信号做了截断,因而造成离散傅立叶变换的泄漏现象。 设信号为单一频率信号 x m (t)=A m e j ωm t (1) 矩形窗为 (2) 持续时间为T的信号相当于x m 与w T 的乘积 灵秀空间 主页 博客 相册|个人档案|好友

高精度运算(C++)

书籍是人类知识的总结,书籍是全世界的营养品。——莎士比亚 万进制高精度运算(C++语言) 目前在青少年信息学奥林匹克竞赛中所涉及到的高精度计算包括加(addition)、减(subtract)、乘(multiply)、除(divide)四种基本运算。其中乘法分高精度数乘高精度数和单精度数乘高精度数两种,除法一般指两个单精度数相除,求解最终指定精度的解,找出循环节或输出指定精度位数的小数。(注:高精度数与单精度数均指整数) 主要的解题思想是利用在小学就曾学习过的竖式加减乘除法则,用程序语言实现存在的问题主要有如何存储高精度数的值,如何实现计算等问题。 一. 高精度数字的存储 我们日常书写一个高精度数字,左侧为其高位,右侧为其低位,在计算中往往会因进位(carry )或借位(borrow )导致高位增长或减少,因此我们定义一个整型数组(int bignum[maxlen])从低位向高位实现高精度整数的存储,数组的每个元素存储高精度数中的一位。(如下表所示) 高精度数 3(高位) …… 7 9 4(低位) int bignum[i] n …… 2 1 显然,在C++语言中,int 类型(4个字节/32位计算机)元素存储十进制的一位数字非常浪费空间,并且运算量也非常大,因此常将程序代码优化为万进制,即数组的每个元素存储高精数字的四位。在后面的叙述过程中均以万进制为例介绍。(为什么选择万进制,而不选择更大的进制呢?十万进制中的最大值99999相乘时得到的值是9999800001超过4个字节的存储范围而溢出,从而导致程序计算错误。) 在实际编写程序代码过程中常作如下定义: const int base=10000; const int maxlen=1000+1; int bignum[maxlen]; 说明:base 表示进制为万进制,maxlen 表示高精度数的长度,1个元素能存储4个十进制位,1000个元素就存储4000个十进制位,而加1表示下标为0的元素另有它用,常用作存储当前高精度数字的位数。 二. 各种运算的程序实现 (一)加法: 首先回顾一下小学中曾学习的竖式加法,见图一: bignum1[] 9475 46 1243 bignum2[] 918 1324 341 carry 1 0 0 0 bignum_ans[] 1 393 1370 1584 图一 加法的计算过程 从上面的图中我们可以得知,做加法运算是从低位向高位进行,如果有进位,下一位进行相加时要加上进位,如果最高位已计算完还有进位,就要增加存储结果的位数,保存起进位来。关于进位的处理,往往定义单独变量carry 进行存储,程序实现的过程如图二所示: 初始化 进位carry 赋初始值0,结果的位数为两个加数的最大位数。 当前位超过最高位了? 处理当前位和进位 N Y 还有进位么? N 结束 处理进位 Y

Moldflow高精度高效率分析

高精高效模流分析技术 MoldFlow 3D分析技术的引进与推广 工程部 2013年1月9日 一、 3D分析技术的引进 模具是生产各种工业产品的重要工艺装备,随着塑料工业的迅速发展以及塑料制品在航空、航天、电子、机械、船舶和汽车等工业部门的推广应用,产品对模具的要求越来越高,传统的模具设计方法已无法适应产品更新换代和提高质量的要求。计算机辅助工程(CAE)技术已成为塑料产品开发、模具设计及产品加工中这些薄弱环节的最有效的途经。同传统的模具设计相比,CAE技术无论在提高生产率、保证产品质量,还是在降低成本、减轻劳动强度等方面,都具有很大优越性。因此,不断加强自身的CAE技术是现代企业赢得市场竞争的关键,同时,这甚至影响着未来企业的生存。 模具行业最被广泛应用的CAE技术当数模流分析技术,即将实体划分为有限元进行各项分析,有限元分析一般可分为中面有限元,表面有限元和三维有限元,三者中三维有限元分析精度最接近实际,但由于其3D有限元数量的庞大给计算机带来了巨大的计算量,其分析速度一直制约着CAE技术的发展。但随着计算机产业的发展,计算机的计算方式和运算速度不断地得到提升,三维有限元分析已不再是案台上的花瓶。 公司使用的模流分析软件是MoldFlow,其分析方式有中性面分析、双层面分析和3D分析,各种分析均有一一对应的网格。 目前公司分析模式:一般采用双层面分析,少数精度要求高的产品采用3D分析。 模式形成原因:软件使用上,刚从MPI6.1过渡到MoldFlow2012,6.1的分析思路和分析经验告诉我们:双层面分析精度基本能满足一般要求,3D分析速度是双层面的数倍。 为什么要推广3D分析 1、因为3D分析精度高 它是最接近于实际模型的分析 2、因为双层面分析具有局限性

高精度运算(C++)

万进制高精度运算(C++语言) 目前在青少年信息学奥林匹克竞赛中所涉及到的高精度计算包括加(addition)、减(subtract)、乘(multiply)、除(divide)四种基本运算。其中乘法分高精度数乘高精度数和单精度数乘高精度数两种,除法一般指两个单精度数相除,求解最终指定精度的解,找出循环节或输出指定精度位数的小数。(注:高精度数与单精度数均指整数) 主要的解题思想是利用在小学就曾学习过的坚式加减乘除法则,用程序语言实现存在的问题主要有如何存储高精度数的值,如何实现计算等问题。 一. 高精度数字的存储 我们日常书写一个高精度数字,左侧为其高位,右侧为其低位,在计算中往往会因进位(carry )或借位(borrow )导致高位增长或减少,因此我们定义一个整型数组(int bignum[maxlen])从低位向高位实现高精度整数的存储,数组的每个元素存储高精度数中的一位。(如下表所示) 高精度数 3(高位) …… 7 9 4(低位) int bignum[i] n …… 2 1 显然,在C++语言中,int 类型(4个字节/32位计算机)元素存储十进制的一位数字非常浪费空间,并且运算量也非常大,因此常将程序代码优化为万进制,即数组的每个元素存储高精数字的四位。在后面的叙述过程中均以万进制为例介绍。(为什么选择万进制,而不选择更大的进制呢?十万进制中的最大值99999相乘时得到的值是9999800001超过4个字节的存储范围而溢出,从而导致程序计算错误。) 在实际编写程序代码过程中常作如下定义: const int base=10000; const int maxlen=1000+1; int bignum[maxlen]; 说明:base 表示进制为万进制,maxlen 表示高精度数的长度,1个元素能存储4个十进制位,1000个元素就存储4000个十进制位,而加1表示下标为0的元素另有它用,常用作存储当前高精度数字的位数。 二. 各种运算的程序实现 (一)加法: 首先回顾一下小学中曾学习的坚式加法,见图一: bignum1[] 9475 46 1243 bignum2[] 918 1324 341 carry 1 0 0 0 bignum_ans[] 1 393 1370 1584 图一 加法的计算过程 从上面的图中我们可以得知,做加法运算是从低位向高位进行,如果有进位,下一位进行相加时要加上进位,如果最高位已计算完还有进位,就要增加存储结果的位数,保存起进位来。关于进位的处理,往往定义单独变量carry 进行存储,程序实现的过程如图二所示: 图二 加法的实现过程 初始化 进位carry 赋初始值0,结果的位数为两个加数的最大位数。 当前位超过最高位了? 处理当前位和进位 N Y 还有进位么? N 结束 处理进位 Y

高精度运算(加减)

高精度计算(一) 一、教学目标 ●了解什么是高精度计算。为什么要进行高精度计算。 ●熟练掌握基本的加、减高精度计算 二、重点难点分析 ●高精度数的存储方式; 三、教具或课件 使用多媒体演示文稿 四、主要教学过程 (一)引入新课 利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度.我们可以利用程序设计的方法去实现这们的高精度计算.这里仅介绍常用的几种高精度计算的方法。 (二)教学过程设计 1、高精度计算中需要处理好以下几个问题: (1)数据的接收方法和存贮方法 数据的接收和存贮:当输入的数很长时,可采用字符串方式输入,这样可输入数字很长的数,利用字符串函数和操作运算,将每一位数取出,存入数组中. Type numtype=array[1..500]of word;{整数数组类型} Var a,b:numtype;{a和b为整数数组} la,lb:integer;{整数数组a的长度和b的长度} s:string;{输入数串} 将数串s转化为整数数组a的方法如下: readln(s); la:=length(s); for i:=1 to la do a[la-i+1]:=ord(s[i])-ord(‘0’); 另一种方法是直接用循环加数组方法输入数据. Type arr= array[1..100] of integer; prucedure readdata(var int:arr); var ch:char; i,k:integer; begin read(ch);k:=0;

高精度算法详解(C++版)

1、高精度加法 #include #include #include using namespace std; int main() { char a1[100],b1[100]; int a[100],b[100],c[100],lena,lenb,lenc,i,x; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); gets(a1); gets(b1); lena=strlen(a1); lenb=strlen(b1); for(i=0;i<=lena-1;i++) a[lena-i]=a1[i]-48; for(i=0;i<=lenb-1;i++) b[lenb-i]=b1[i]-48; lenc=1; x=0; while(lenc<=lena||lenc<=lenb) { c[lenc]=a[lenc]+b[lenc]+x; x=c[lenc]/10; c[lenc]%=10; lenc++; } c[lenc]=x; if(c[lenc]==0) lenc--; for(i=lenc;i>=1;i--) cout< #include #include using namespace std; int main() { char a1[1000],b1[1000],n[1000]; int a[1000],b[1000],c[1000],la,lb,lc,i,x; memset(a,0,sizeof(a));

高精度计算

高精度计算 朴素高精度 由于待处理的数据超过了任何一种数据类型所能容纳的范围,因此必须采用数串形式输入,并将其转化为数组。该数组的每一个元素对应一个十进制数,由其下标顺序指明位序号。由于高精度运算可能使得数据长度发生变化,因此除要用整数数组存储数据外,还需要一个整数变量纪录整数数组的元素个数,即数据的实际长度。 type numtype=array[1..255] of integer; var a:numtype; la:byte; s:string; begin readln(s); la:=length(s); for i:=1 to la do a[la-i+1]:=ord(s[i])-ord('0'); end. 高精度加法运算 首先,确定a和b中的最大位数x,然后依照由低位至高位的顺序进行加法运算。在每一次运算中,a当前位加b当前位的和除以10,其整商即为进位,其余数即为和的当前位。在进行了x位的加法后,若最高位有进位(a[x+1]<>0),则a的长度为x+1。 以下只列出关键程序: type numtype=array[1..255] of longint; var a,b,s:numtype; la,lb,ls:longint; procedure plus(var a:numtype;var la:longint;b:numtype;lb:longint); {利用过程实现} var i,x:longint; begin if la>=lb then x:=la else x:=lb; for i:=1 to x do

begin a[i]:=a[i]+b[i]; a[i+1]:=a[i+1]+a[i] div 10; a[i]:=a[i] mod 10; end; while a[x+1]<>0 do x:=x+1; la:=x; {最高位若有进位,则长度增加} end; 高精度减法运算(a>b) 依照由低位至高位的顺序进行减法运算。在每一次位运算中,若出现不够减的情况,则向高位借位。在进行了la位的减法后,若最高位为零,则a的长度减1(一位一位测试,直到确切长度)。 以下只列出关键程序: type numtype=array[1..255] of longint; var a,b:numtype; la,lb: longint; procedure minus(var a:numtype;var la: longint;b:numtype;); var i:word; begin for i:=1 to la do begin if a[i]1) do dec(la); end; 高精度乘法运算 按照乘法规则,从a的第1位开始逐位与c(c为字节型)相乘。在第i位乘法运算中,a的i位与c的乘积必须加上i-1位的进位,然后规整积的i-1位。 以下只列出关键程序:其中C为小于10的整数,如果不是小于10的整数,则按位分解该数。type

数组型高精度数详解

数组型高精度数详解 By Nettle

一、高精度简介 二、高精度数 三、高精度数与整型的运算 四、高精度数与高精度数的运算 五、高精度数的进制转换 六、高精度幂运算 七、压位高精度数 一、高精度简介 首先要知道在计算机里面每一种数据类型都有自己的存储量。由于存储量的限制所以都有着各自的精度,下面是一些常用数据类型的精度: 以Pascal为例 整型的精度就是在该类型范围内所有的数。 整型范围 Shortint-128 (127) Integer-32768 (32767) Longint-2147483648 (2147483647) Int64-9223372036854775808 (9223372036854775807) Byte0 (255) Word0 (65535) Longword0 (4294967295) Qword0 (18446744073709551615) 实型的精度是指当该类型的数据位数超过精度范围时自动对超过的部分进行四舍五入。比如将1234567890123 存入 real 时就会变为 1.234568E12,后面的890123 被四舍五入,只保留了位数。 实型范围精度 real 2.9E-39 … 1.7E3811至12 single 1.5E-45 … 3.4E387至8 double 5.0E-324 … 1.7E30815至16 但是在某些计算中,参与运算的数的范围大大超出了标准数据类型(整型,实型)能表示的范围的运算,例如求两个100位数的和的精确值。如果用一个整型变量,无论如何也是存储不了的,用实型则会造成数据的不精确。 于是,我们想到了办法,将这个数字拆开,拆成一位一位的或者是四位四位的存储到一个数组中,用一个数组去表示一个数字,这样表示的数字就被称为高精度数。 对于高精度数,也要像平常数一样做加减乘除以及乘方的运算,于是就有了高精度算法。

高精度计算(加法)

高精度计算(加法) 高精度加法 所谓的高精度运算,是指参与运算的数(加数,减数,因子……)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算。例如,求两个200位的数的和。这时,就要用到高精度算法了。在这里,我们先讨论高精度加法。高精度运算主要解决以下三个问题: 基本方法 1、加数、减数、运算结果的输入和存储 运算因子超出了整型、实型能表示的范围,肯定不能直接用一个数的形式来表示。在Pascal中,能表示多个数的数据类型有两种:数组和字符串。 (1)数组:每个数组元素存储1位(在优化时,这里是一个重点!),有多少位就需要多少个数组元素; 用数组表示数的优点:每一位都是数的形式,可以直接加减;运算时非常方便 用数组表示数的缺点:数组不能直接输入;输入时每两位数之间必须有分隔符,不符合数值的输入习惯; (2)字符串:字符串的最大长度是255,可以表示255位。 用字符串表示数的优点:能直接输入输出,输入时,每两位数之间不必分隔符,符合数值的输入习惯; 用字符串表示数的缺点:字符串中的每一位是一个字符,不能直接进行运算,必须先将它转化为数值再进行运算;运算时非常不方便; (3)因此,综合以上所述,对上面两种数据结构取长补短:用字符串读入数据,用数组存储数据: var s1,s2:string; a,b,c:array [1..260] of integer; i,l,k1,k2:integer; begin write('input s1:');readln(s1); write('input s2:');readln(s2); {————读入两个数s1,s2,都是字符串类型} l:=length(s1);{求出s1的长度,也即s1的位数;有关字符串的知识。} k1:=260; for i:=l downto 1 do begin a[k1]:=ord(s1[i])-48;{将字符转成数值} k1:=k1-1; end; k1:=k1+1; {————以上将s1中的字符一位一位地转成数值并存在数组a中;低位在后(从第260位开始),高位在前(每存完一位,k1减1)} 对s2的转化过程和上面一模一样。

相关主题
文本预览
相关文档 最新文档