pascal

阅读 / 问答 / 标签

在pascal的函数中int函数和trunc函数的区别是什么

INT是取整,即将数字向下舍入到最接近的整数。如INT(5.5)返回5,INT(-5.5)返回-6,即返回值比原值小。FRUNC?应该是TRUNC吧?TRUNC是截尾,即只是简单地将小数部分去掉。如TRUNC(5.5)返回5,INT(-5.5)返回-5。

pascal中ord函数和length函数的作用

ord是求序号函数,可以返回一个字符在ASCII码表中的序号。如ord("a")=97length函数返回字符串长度。如length("abcde")=5

求 free Pascal 程序设计的一道题,关于全排列

全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。任何n个字符集的排列都可以与1~n的n个数字的排列一一对应,因此在此就以n个数字的排列为例说明排列的生 ... 全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。任何n个字符集的排列都可以与1~n的n个数字的排列一一对应,因此在此就以n个数字的排列为例说明排列的生成法。 n个字符的全体排列之间存在一个确定的线性顺序关系。所有的排列中除最后一个排列外,都有一个后继;除第一个排列外,都有一个前驱。每个排列的后继都可以从 它 的前驱经过最少的变化而得到,全排列的生成算法就是从第一个排列开始逐个生成所有的排列的方法。 全排列的生成法通常有以下几种: 字典序法 递增进位数制法 递减进位数制法 邻位交换法 递归类算法 1.字典序法 字典序法中,对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是54321。 字典序算法如下: 设P是1~n的一个全排列:p=p1p2......pn=p1p2......pj-1pjpj+1......pk-1pkpk+1......pn 1)从排列的右端开始,找出第一个比右边数字小的数字的序号j(j从左端开始计算),即 j=max{i|pi<pi+1} 2)在pj的右边的数字中,找出所有比pj大的数中最小的数字pk,即 k=max{i|pi>pj}(右边的数从右至左是递增的,因此k是所有大于pj的数字中序号最大者) 3)对换pi,pk 4)再将pj+1......pk-1pkpk+1pn倒转得到排列p""=p1p2.....pj-1pjpn.....pk+1pkpk-1.....pj+1,这就是排列p的下一个下一个排列。 例如839647521是数字1~9的一个排列。从它生成下一个排列的步骤如下: 自右至左找出排列中第一个比右边数字小的数字4 839647521 在该数字后的数字中找出比4大的数中最小的一个5 839647521 将5与4交换 839657421 将7421倒转 839651247 所以839647521的下一个排列是839651247。 2.递增进位数制法 在递增进位制数法中,从一个排列求另一个排列需要用到中介数。如果用 ki表示排列p1p2...pi...pn中元素pi的右边比pi小的数的个数,则排列的中介数就是对应的排列k1 ...... ki...... kn-1。 例如排列839647521的中介数是72642321,7、2、6、......分别是排列中数字8、3、9、......的右边比它小的数字个数。 中介数是计算排列的中间环节。已知一个排列,要求下一个排列,首先确定其中介数,一个排列的后继,其中介数是原排列中介数加1,需要注意的是,如果中介数的末位kn-1+1=2,则要向前进位,一般情形,如果ki+1=n-i+1,则要进位,这就是所谓的递增进位制。例如排列839647521的中介数是72642321,则下一个排列的中介数是67342221+1=67342300(因为1+1=2,所以向前进位,2+1=3,又发生进位,所以下一个中介数是67342300)。 得到中介数后,可根据它还原对应得排列。 算法如下: 中介数k1、k2、......、kn-1的各位数字顺序表示排列中的数字n、n-1、......、2在排列中距右端的的空位数,因此,要按k1、k2、......、kn-1的值从右向左确定n、n-1、......、2的位置,并逐个放置在排列中:i放在右起的ki+1位,如果某位已放有数字,则该位置不算在内,最后一个空位放1。 因此从67342300可得到排列849617523,它就是839647521的后一个排列。因为9最先放置,k1=6,9放在右起第7位,空出6个空位,然后是放8,k2=7,8放在右起第8位,但9占用一位,故8应放在右起第9位,余类推。 3.递减进位制数法 在递增进位制数法中,中介数的最低位是逢2进1,进位频繁,这是一个缺点。把递增进位制数翻转,就得到递减进位制数。 839647521的中介数是67342221(k1k2...kn-1),倒转成为12224376(kn-1...k2k1),这是递减进位制数的中介数:ki(i=n-1,n-2,...,2)位逢i向ki-1位进1。给定排列p,p的下一个排列的中介数定义为p的中介数加1。例如p=839647521,p的中介数为12224376,p的下一个排列的中介数为12224376+1=12224377,由此得到p的下一个排列为893647521。 给定中介数,可用与递增进位制数法类似的方法还原出排列。但在递减进位制数中,可以不先计算中介数就直接从一个排列求出下一个排列。具体算法如下: 1)如果p(i)=n且i<>n,则p(i)与p(i-1)交换 2)如果p(n)=n,则找出一个连续递减序列9、8、......、i,将其从排列左端删除,再以相反顺序加在排列右端,然后将i-1与左边的数字交换 例如p=893647521的下一个排列是983647521。求983647521的下一个排列时,因为9在最左边且第2位为8,第3位不是7,所以将8和9从小到大排于最右端364752189,再将7与其左方数字对调得到983647521的下一个排列是367452189。又例如求987635421的下一个排列,只需要将9876从小到大排到最右端并将5与其左方数字3对调,得到534216789。 4.邻位对换法 邻位对换法中下一个排列总是上一个排列某相邻两位对换得到的。以4个元素的排列为例,将最后的元素4逐次与前面的元素交换,可以生成4个新排列: 1 2 3 4 1 2 4 3 1 4 2 3 4 1 2 3 然后将最后一个排列的末尾的两个元素交换,再逐次将排头的4与其后的元素交换,又生成四个新排列: 4 1 3 2 1 4 3 2 1 3 4 2 1 3 2 4 再将最后一个排列的末尾的两个元素交换,将4从后往前移: 3 1 2 4 3 1 4 2 3 4 1 2 4 3 1 2 如此循环既可求出全部排列。 5.元素增值法(n进制法) 1)从原始排列p=p1p2......pn开始,第n位加n-1,如果该位的值超过n,则将它除以n,用余数取代该位,并进位(将第n-1位加1) 2)再按同样方法处理n-1位,n-2位,......,直至不再发生进位为止,处理完一个排列就产生了一个新的排列 3)将其中有相同元素的排列去掉 4)当第一个元素的值>n则结束 以3个数1、2、3的排列为例:原始排列是1 2 3,从它开始,第3个元素是3,3+2=5,5 Mod 3=2,第2个元素是2,2+1=3,所以新排列是1 3 2。通过元素增值,顺序产生的排列是:1 2 3,1 3 2,2 1 1,2 1 3,2 2 2,2 3 1,2 3 3,3 1 2,3 2 1 有下划线的排列中存在重复元素,丢弃,余下的就是全部排列。 6.递归类算法 全排列的生成方法用递归方式描述比较简洁,实现的方法也有多种。 1)回溯法 回溯法通常是构造一颗生成树。以3个元素为例;树的节点有个数据,可取值是1、2、3。如果某个为0,则表示尚未取值。 初始状态是(0,0,0),第1个元素值可以分别挑选1,2,3,因此扩展出3个子结点。用相同方法找出这些结点的第2个元素的可能值,如此反复进行,一旦出现新结点的3个数据全非零,那就找到了一种全排列方案。当尝试了所有可能方案,即获得了问题的解答。 2)递归算法 如果用P表示n个元素的排列,而Pi表示不包含元素i的排列,(i)Pi表示在排列Pi前加上前缀i的排列,那么,n个元素的排列可递归定义为: 如果n=1,则排列P只有一个元素i 如果n>1,则排列P由排列(i)Pi构成(i=1、2、....、n-1)。 根据定义,容易看出如果已经生成了k-1个元素的排列,那么,k个元素的排列可以在每个k-1个元素的排列Pi前添加元素i而生成。例如2个元素的排列是1 2和2 1,对与个元素而言,p1是2 3和3 2,在每个排列前加上1即生成1 2 3和1 3 2两个新排列,p2和p3则是1 3、3 1和1 2、2 1,按同样方法可生成新排列2 1 3、2 3 1和3 1 2、3 2 1。 3)循环移位法 如果已经生成了k-1个元素的排列,则在每个排列后添加元素k使之成为k个元素的排列,然后将每个排列循环左移(右移),每移动一次就产生一个新的排列。 例如2个元素的排列是1 2和2 1。在1 2 后加上3成为新排列1 2 3,将它循环左移可再生成新排列2 3 1、3 1 2,同样2 1 可生成新排列2 1 3、1 3 2和3 2 1。

pascal中的 Incompatible types:got "Double" expected "Smallint" 是什么意思?谢谢!

定义错误

Pascal贪心算法,求解答!

这道题用贪心不大好吧记得老师以前说过这种题用DP这道题是最简单的01背包我给你发个资料那个,发不了啊,上传失败你给我qq吧P01: 01背包问题题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}。 这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”;如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c[i]的背包中”,此时能获得的最大价值就是f [i-1][v-c[i]]再加上通过放入第i件物品获得的价值w[i]。 注意f[i][v]有意义当且仅当存在一个前i件物品的子集,其费用总和为v。所以按照这个方程递推完毕后,最终的答案并不一定是f[N] [V],而是f[N][0..V]的最大值。如果将状态的定义中的“恰”字去掉,在转移方程中就要再加入一项f[i][v-1],这样就可以保证f[N] [V]就是最后的答案。至于为什么这样就可以,由你自己来体会了。 优化空间复杂度 以上方法的时间和空间复杂度均为O(N*V),其中时间复杂度基本已经不能再优化了,但空间复杂度却可以优化到O(V)。 先考虑上面讲的基本思路如何实现,肯定是有一个主循环i=1..N,每次算出来二维数组f[i][0..V]的所有值。那么,如果只用一个数组f [0..V],能不能保证第i次循环结束后f[v]中表示的就是我们定义的状态f[i][v]呢?f[i][v]是由f[i-1][v]和f[i-1][v-c[i]]两个子问题递推而来,能否保证在推f[i][v]时(也即在第i次主循环中推f[v]时)能够得到f[i-1][v]和f[i-1][v-c[i]]的值呢?事实上,这要求在每次主循环中我们以v=V..0的顺序推f[v],这样才能保证推f[v]时f[v-c[i]]保存的是状态f[i -1][v-c[i]]的值。伪代码如下: for i=1..N for v=V..0 f[v]=max{f[v],f[v-c[i]]+w[i]}; 其中的f[v]=max{f[v],f[v-c[i]]}一句恰就相当于我们的转移方程f[i][v]=max{f[i-1][v],f[i- 1][v-c[i]]},因为现在的f[v-c[i]]就相当于原来的f[i-1][v-c[i]]。如果将v的循环顺序从上面的逆序改成顺序的话,那么则成了f[i][v]由f[i][v-c[i]]推知,与本题意不符,但它却是另一个重要的背包问题P02最简捷的解决方案,故学习只用一维数组解01背包问题是十分必要的。 总结 01背包问题是最基本的背包问题,它包含了背包问题中设计状态、方程的最基本思想,另外,别的类型的背包问题往往也可以转换成01背包问题求解。故一定要仔细体会上面基本思路的得出方法,状态转移方程的意义,以及最后怎样优化的空间复杂度。 P02: 完全背包问题 题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种。如果仍然按照解01背包时的思路,令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值。仍然可以按照每种物品不同的策略写出状态转移方程,像这样:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k*c[i]<=v}。这跟01背包问题一样有O(N*V)个状态需要求解,但求解每个状态的时间则不是常数了,求解状态f[i][v]的时间是O(v/c[i]),总的复杂度是超过O(VN)的。 将01背包问题的基本思路加以改进,得到了这样一个清晰的方法。这说明01背包问题的方程的确是很重要,可以推及其它类型的背包问题。但我们还是试图改进这个复杂度。 一个简单有效的优化 完全背包问题有一个很简单有效的优化,是这样的:若两件物品i、j满足c[i]<=c[j]且w[i]>=w[j],则将物品j去掉,不用考虑。这个优化的正确性显然:任何情况下都可将价值小费用高得j换成物美价廉的i,得到至少不会更差的方案。对于随机生成的数据,这个方法往往会大大减少物品的件数,从而加快速度。然而这个并不能改善最坏情况的复杂度,因为有可能特别设计的数据可以一件物品也去不掉。 转化为01背包问题求解 既然01背包问题是最基本的背包问题,那么我们可以考虑把完全背包问题转化为01背包问题来解。最简单的想法是,考虑到第i种物品最多选V/c [i]件,于是可以把第i种物品转化为V/c[i]件费用及价值均不变的物品,然后求解这个01背包问题。这样完全没有改进基本思路的时间复杂度,但这毕竟给了我们将完全背包问题转化为01背包问题的思路:将一种物品拆成多件物品。 更高效的转化方法是:把第i种物品拆成费用为c[i]*2^k、价值为w[i]*2^k的若干件物品,其中k满足c[i]*2^k<V。这是二进制的思想,因为不管最优策略选几件第i种物品,总可以表示成若干个2^k件物品的和。这样把每种物品拆成O(log(V/c[i]))件物品,是一个很大的改进。 但我们有更优的O(VN)的算法。 * O(VN)的算法 这个算法使用一维数组,先看伪代码: <pre class"example"> for i=1..N for v=0..Vf[v]=max{f[v],f[v-c[i]]+w[i]}; 你会发现,这个伪代码与P01的伪代码只有v的循环次序不同而已。为什么这样一改就可行呢?首先想想为什么P01中要按照v=V..0的逆序来循环。这是因为要保证第i次循环中的状态f[i][v]是由状态f[i-1][v-c[i]]递推而来。换句话说,这正是为了保证每件物品只选一次,保证在考虑“选入第i件物品”这件策略时,依据的是一个绝无已经选入第i件物品的子结果f[i-1][v-c[i]]。而现在完全背包的特点恰是每种物品可选无限件,所以在考虑“加选一件第i种物品”这种策略时,却正需要一个可能已选入第i种物品的子结果f[i][v-c[i]],所以就可以并且必须采用v= 0..V的顺序循环。这就是这个简单的程序为何成立的道理。 这个算法也可以以另外的思路得出。例如,基本思路中的状态转移方程可以等价地变形成这种形式:f[i][v]=max{f[i-1][v],f[i][v-c[i]]+w[i]},将这个方程用一维数组实现,便得到了上面的伪代码。 总结 完全背包问题也是一个相当基础的背包问题,它有两个状态转移方程,分别在“基本思路”以及“O(VN)的算法“的小节中给出。希望你能够对这两个状态转移方程都仔细地体会,不仅记住,也要弄明白它们是怎么得出来的,最好能够自己想一种得到这些方程的方法。事实上,对每一道动态规划题目都思考其方程的意义以及如何得来,是加深对动态规划的理解、提高动态规划功力的好方法。 P03: 多重背包问题 题目 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本算法 这题目和完全背包问题很类似。基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值,则:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k<=n[i]}。复杂度是O(V*∑n[i])。 转化为01背包问题 另一种好想好写的基本方法是转化为01背包求解:把第i种物品换成n[i]件01背包中的物品,则得到了物品数为∑n[i]的01背包问题,直接求解,复杂度仍然是O(V*∑n[i])。 但是我们期望将它转化为01背包问题之后能够像完全背包一样降低复杂度。仍然考虑二进制的思想,我们考虑把第i种物品换成若干件物品,使得原问题中第i种物品可取的每种策略——取0..n[i]件——均能等价于取若干件代换以后的物品。另外,取超过n[i]件的策略必不能出现。 方法是:将第i种物品分成若干件物品,其中每件物品有一个系数,这件物品的费用和价值均是原来的费用和价值乘以这个系数。使这些系数分别为 1,2,4,...,2^(k-1),n[i]-2^k+1,且k是满足n[i]-2^k+1>0的最大整数。例如,如果n[i]为13,就将这种物品分成系数分别为1,2,4,6的四件物品。 分成的这几件物品的系数和为n[i],表明不可能取多于n[i]件的第i种物品。另外这种方法也能保证对于0..n[i]间的每一个整数,均可以用若干个系数的和表示,这个证明可以分0..2^k-1和2^k..n[i]两段来分别讨论得出,并不难,希望你自己思考尝试一下。 这样就将第i种物品分成了O(log n[i])种物品,将原问题转化为了复杂度为O(V*∑logn[i])的01背包问题,是很大的改进。 O(VN)的算法 多重背包问题同样有O(VN)的算法。这个算法基于基本算法的状态转移方程,但应用单调队列的方法使每个状态的值可以以均摊O(1)的时间求解。由于用单调队列优化的DP已超出了NOIP的范围,故本文不再展开讲解。我最初了解到这个方法是在楼天成的“男人八题”幻灯片上。 小结 这里我们看到了将一个算法的复杂度由O(V*∑n[i])改进到O(V*∑log n[i])的过程,还知道了存在应用超出NOIP范围的知识的O(VN)算法。希望你特别注意“拆分物品”的思想和方法,自己证明一下它的正确性,并用尽量简洁的程序来实现。 P04: 混合三种背包问题 问题 如果将P01、P02、P03混合起来。也就是说,有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。应该怎么求解呢? 01背包与完全背包的混合 考虑到在P01和P02中最后给出的伪代码只有一处不同,故如果只有两类物品:一类物品只能取一次,另一类物品可以取无限次,那么只需在对每个物品应用转移方程时,根据物品的类别选用顺序或逆序的循环即可,复杂度是O(VN)。伪代码如下: for i=1..N if 第i件物品是01背包 for v=V..0 f[v]=max{f[v],f[v-c[i]]+w[i]}; else if 第i件物品是完全背包 for v=0..V f[v]=max{f[v],f[v-c[i]]+w[i]}; 再加上多重背包 如果再加上有的物品最多可以取有限次,那么原则上也可以给出O(VN)的解法:遇到多重背包类型的物品用单调队列解即可。但如果不考虑超过NOIP范围的算法的话,用P03中将每个这类物品分成O(log n[i])个01背包的物品的方法也已经很优了。 小结 有人说,困难的题目都是由简单的题目叠加而来的。这句话是否公理暂且存之不论,但它在本讲中已经得到了充分的体现。本来01背包、完全背包、多重背包都不是什么难题,但将它们简单地组合起来以后就得到了这样一道一定能吓倒不少人的题目。但只要基础扎实,领会三种基本背包问题的思想,就可以做到把困难的题目拆分成简单的题目来解决。 P05: 二维费用的背包问题 问题 二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。 算法 费用加了一维,只需状态也加一维即可。设f[i][v][u]表示前i件物品付出两种代价分别为v和u时可获得的最大价值。状态转移方程就是:f[i][v][u]=max{f[i-1][v][u],f[i-1][v-a[i]][u-b[i]]+w[i]}。如前述方法,可以只使用二维的数组:当每件物品只可以取一次时变量v和u采用顺序的循环,当物品有如完全背包问题时采用逆序的循环。当物品有如多重背包问题时拆分物品。 物品总个数的限制 有时,“二维费用”的条件是以这样一种隐含的方式给出的:最多只能取M件物品。这事实上相当于每件物品多了一种“件数”的费用,每个物品的件数费用均为1,可以付出的最大件数费用为M。换句话说,设f[v][m]表示付出费用v、最多选m件时可得到的最大价值,则根据物品的类型(01、完全、多重)用不同的方法循环更新,最后在f[0..V][0..M]范围内寻找答案。 另外,如果要求“恰取M件物品”,则在f[0..V][M]范围内寻找答案。 小结 事实上,当发现由熟悉的动态规划题目变形得来的题目时,在原来的状态中加一纬以满足新的限制是一种比较通用的方法。希望你能从本讲中初步体会到这种方法。 P06: 分组的背包问题 问题 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 算法 这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有f[k][v]=max{f[k-1][v],f[k-1][v-c[i]]+w[i]|物品i属于第k组}。 使用一维数组的伪代码如下: for 所有的组k for 所有的i属于组k for v=V..0 f[v]=max{f[v],f[v-c[i]]+w[i]} 另外,显然可以对每组中的物品应用P02中“一个简单有效的优化”。 小结 分组的背包问题将彼此互斥的若干物品称为一个组,这建立了一个很好的模型。不少背包问题的变形都可以转化为分组的背包问题(例如P07),由分组的背包问题进一步可定义“泛化物品”的概念,十分有利于解题。 P07: 有依赖的背包问题 简化的问题 这种背包问题的物品间存在某种“依赖”的关系。也就是说,i依赖于j,表示若选物品i,则必须选物品j。为了简化起见,我们先设没有某个物品既依赖于别的物品,又被别的物品所依赖;另外,没有某件物品同时依赖多件物品。 算法 这个问题由NOIP2006金明的预算方案一题扩展而来。遵从该题的提法,将不依赖于别的物品的物品称为“主件”,依赖于某主件的物品称为“附件”。由这个问题的简化条件可知所有的物品由若干主件和依赖于每个主件的一个附件集合组成。 按照背包问题的一般思路,仅考虑一个主件和它的附件集合。可是,可用的策略非常多,包括:一个也不选,仅选择主件,选择主件后再选择一个附件,选择主件后再选择两个附件……无法用状态转移方程来表示如此多的策略。(事实上,设有n个附件,则策略有2^n+1个,为指数级。) 考虑到所有这些策略都是互斥的(也就是说,你只能选择一种策略),所以一个主件和它的附件集合实际上对应于P06中的一个物品组,每个选择了主件又选择了若干个附件的策略对应于这个物品组中的一个物品,其费用和价值都是这个策略中的物品的值的和。但仅仅是这一步转化并不能给出一个好的算法,因为物品组中的物品还是像原问题的策略一样多。 再考虑P06中的一句话: 可以对每组中的物品应用P02中“一个简单有效的优化”。这提示我们,对于一个物品组中的物品,所有费用相同的物品只留一个价值最大的,不影响结果。所以,我们可以对主件i的“附件集合”先进行一次01背包,得到费用依次为0..V-c[i]所有这些值时相应的最大价值f"[0..V-c[i]]。那么这个主件及它的附件集合相当于V-c[i]+1个物品的物品组,其中费用为c[i]+k的物品的价值为f"[k]+w[i]。也就是说原来指数级的策略中有很多策略都是冗余的,通过一次01背包后,将主件i转化为 V-c[i]+1个物品的物品组,就可以直接应用P06的算法解决问题了。 更一般的问题 更一般的问题是:依赖关系以图论中“森林”的形式给出(森林即多叉树的集合),也就是说,主件的附件仍然可以具有自己的附件集合,限制只是每个物品最多只依赖于一个物品(只有一个主件)且不出现循环依赖。 解决这个问题仍然可以用将每个主件及其附件集合转化为物品组的方式。唯一不同的是,由于附件可能还有附件,就不能将每个附件都看作一个一般的01 背包中的物品了。若这个附件也有附件集合,则它必定要被先转化为物品组,然后用分组的背包问题解出主件及其附件集合所对应的附件组中各个费用的附件所对应的价值。 事实上,这是一种树形DP,其特点是每个父节点都需要对它的各个儿子的属性进行一次DP以求得自己的相关属性。这已经触及到了“泛化物品”的思想。看完P08后,你会发现这个“依赖关系树”每一个子树都等价于一件泛化物品,求某节点为根的子树对应的泛化物品相当于求其所有儿子的对应的泛化物品之和。 小结 NOIP2006的那道背包问题我做得很失败,写了上百行的代码,却一分未得。后来我通过思考发现通过引入“物品组”和“依赖”的概念可以加深对这题的理解,还可以解决它的推广问题。用物品组的思想考虑那题中极其特殊的依赖关系:物品不能既作主件又作附件,每个主件最多有两个附件,可以发现一个主件和它的两个附件等价于一个由四个物品组成的物品组,这便揭示了问题的某种本质。 我想说:失败不是什么丢人的事情,从失败中全无收获才是。 P08: 泛化物品 定义 考虑这样一种物品,它并没有固定的费用和价值,而是它的价值随着你分配给它的费用而变化。这就是泛化物品的概念。 更严格的定义之。在背包容量为V的背包问题中,泛化物品是一个定义域为0..V中的整数的函数h,当分配给它的费用为v时,能得到的价值就是h(v)。 这个定义有一点点抽象,另一种理解是一个泛化物品就是一个数组h[0..V],给它费用v,可得到价值h[V]。 一个费用为c价值为w的物品,如果它是01背包中的物品,那么把它看成泛化物品,它就是除了h(c)=w其它函数值都为0的一个函数。如果它是完全背包中的物品,那么它可以看成这样一个函数,仅当v被c整除时有h(v)=v/c*w,其它函数值均为0。如果它是多重背包中重复次数最多为n的物品,那么它对应的泛化物品的函数有h(v)=v/c*w仅当v被c整除且v/c<=n,其它情况函数值均为0。 一个物品组可以看作一个泛化物品h。对于一个0..V中的v,若物品组中不存在费用为v的的物品,则h(v)=0,否则h(v)为所有费用为v的物品的最大价值。P07中每个主件及其附件集合等价于一个物品组,自然也可看作一个泛化物品。 泛化物品的和 如果面对两个泛化物品h和l,要用给定的费用从这两个泛化物品中得到最大的价值,怎么求呢?事实上,对于一个给定的费用v,只需枚举将这个费用如何分配给两个泛化物品就可以了。同样的,对于0..V的每一个整数v,可以求得费用v分配到h和l中的最大价值f(v)。也即f(v)=max{h(k)+l(v-k)|0<=k<=v}。可以看到,f也是一个由泛化物品h和l决定的定义域为0..V的函数,也就是说,f是一个由泛化物品h和 l决定的泛化物品。 由此可以定义泛化物品的和:h、l都是泛化物品,若泛化物品f满足f(v)=max{h(k)+l(v-k)|0<=k<=v},则称f是h与l的和,即f=h+l。这个运算的时间复杂度是O(V^2)。 泛化物品的定义表明:在一个背包问题中,若将两个泛化物品代以它们的和,不影响问题的答案。事实上,对于其中的物品都是泛化物品的背包问题,求它的答案的过程也就是求所有这些泛化物品之和的过程。设此和为s,则答案就是s[0..V]中的最大值。 背包问题的泛化物品 一个背包问题中,可能会给出很多条件,包括每种物品的费用、价值等属性,物品之间的分组、依赖等关系等。但肯定能将问题对应于某个泛化物品。也就是说,给定了所有条件以后,就可以对每个非负整数v求得:若背包容量为v,将物品装入背包可得到的最大价值是多少,这可以认为是定义在非负整数集上的一件泛化物品。这个泛化物品——或者说问题所对应的一个定义域为非负整数的函数——包含了关于问题本身的高度浓缩的信息。一般而言,求得这个泛化物品的一个子域(例如0..V)的值之后,就可以根据这个函数的取值得到背包问题的最终答案。 综上所述,一般而言,求解背包问题,即求解这个问题所对应的一个函数,即该问题的泛化物品。而求解某个泛化物品的一种方法就是将它表示为若干泛化物品的和然后求之。 小结 本讲可以说都是我自己的原创思想。具体来说,是我在学习函数式编程的 Scheme 语言时,用函数编程的眼光审视各类背包问题得出的理论。这一讲真的很抽象,也许在“模型的抽象程度”这一方面已经超出了NOIP的要求,所以暂且看不懂也没关系。相信随着你的OI之路逐渐延伸,有一天你会理解的。 我想说:“思考”是一个OIer最重要的品质。简单的问题,深入思考以后,也能发现更多。 P09: 背包问题问法的变化 以上涉及的各种背包问题都是要求在背包容量(费用)的限制下求可以取到的最大价值,但背包问题还有很多种灵活的问法,在这里值得提一下。但是我认为,只要深入理解了求背包问题最大价值的方法,即使问法变化了,也是不难想出算法的。 例如,求解最多可以放多少件物品或者最多可以装满多少背包的空间。这都可以根据具体问题利用前面的方程求出所有状态的值(f数组)之后得到。 还有,如果要求的是“总价值最小”“总件数最小”,只需简单的将上面的状态转移方程中的max改成min即可。

pascal 中shl 和shr函数的应用

SHL: x SHL n把x换成二进制后向左移n位,相当于 把x 乘以 2n SHR: x SHR n 把x换成二进制后向右移n位,相当于 把x 除以 2n

pascal早还是c语言早

Pascal是一种计算机通用的高级程序设计语言。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。 C语言的原型ALGOL 60语言。(也称为A语言) 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。 而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。由上看C比P要晚

Pascal和delphi什么关系?

试试!我成了知道专家了吗?

Pascal和delphi有什么区别

Pascal是Delphi的爷爷。

Delphi、FORTRAN、Pascal语言各是什么及其用途?

都属于高级语言,从程序设计方法上来说fortran和pascal都属于面向过程的语言,delphi在06年以前指的是borland公司的IDE,06年以后borland公司提出了delphi语言,就语言本身来说,delphi可以称为 “带类的pascal”,即面向对象的pascal语言,在原有pascal语言的基础上,引入了面向对象的设计方法,delphi用来开发windows桌面应用程序是相当快捷和方便的.

急问:Free Pascal中extended类型是什么类型?

extended是实数类型,数值范围是1.9*10的-4951次方至1.1*10的4932次方,占字节数10,有效位数19至20位。

pascal 中定义EXTENDED 是什么意思谁能详细解答一下??!!

扩展实型,pascal中最大的实型类型,有效数为最多为20位。

请问turbo pascal中的pointer类型如何使用,能否句个例子?

var p: ^integer;begin new(p); readln(p^); writeln(p^+1); dispose(p);end.

pascal 中shl的意思

shl就是左移x shl a即x:=x*power(2,a)但快N多

pascal决赛求助!!高手快进...

Orzing……

pascal 怎么编写函数库(格式)

dec(s)是s:=s-1;函数标识符 自变量类型 意义 结果类型 abs 整型、实型 绝对值 同自变量 arctan 整型、实型 反正切 实型 cos 整型、实型 余弦 实型 exp 整型、实型 指数 实型 frac 整型、实型 小数部分 实型 int 整型、实型 整数部分 实型 ln 整型、实型 自然对数 实型 pi 无自变量 圆周率 实型 sin 整型、实型 正弦 实型 sqr 整型、实型 平方 同自变量 sqrt 整型、实型 平方根 实型 例: abs(-4)=4 abs(-7.49)=7.49 -- arctan(0)=0.0 sin(pi)=0.0 cos(pi)=-1.0 frac(-3.71)=-0.71 int(-3.71)=-3.0 -- sqr(4)=16 sqrt(4)=2 -- 2.标量函数 函数标识符 自变量类型 意义 结果类型 odd 整型 判断奇数 布尔型 pred 离散类型 求前趋 同自变量 succ 离散类型 求后继 同自变量 例: odd(1000)=false odd(3)true pred(2000)=1999 succ(2000)=2001 pred("x")="w" succ("x")="y" 3.转换函数 函数标识符 自变量类型 意义 结果类型 chr byte型 自量对应的字符 字符型 ord 离散类型 自量对应的序号 longint round 实型 四舍五入 longint trunc 实型 截断取整 longint 4.杂类函数 函数标识符 自变量类型 意义 结果类型 random 无自变量 [0,1)之间的随机实数 real random word [0,自变量)之间的随机整数 wird randomize 无自变量 用一随机值初始化内部随机数产生器 longint upcase 字符型 使小写英文字母变为大写 字符型 Pascal语言函数集(含Delphi控件属性) abort 函数 引起放弃的意外处理 abs 函数 绝对值函数 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks函数 将给定字符串的行分隔符调整为cr/lf序列 align 属性 使控件位于窗口某部分 alignment 属性 控件标签的文字位置 allocmem 函数 在堆栈上分配给定大小的块 allowgrayed 属性 允许一个灰度选择 ansicomparestr 函数 比较字符串(区分大小写) ansicomparetext 函数 比较字符串(不区分大小写) ansilowercase 函数 将字符转换为小写 ansiuppercase 函数 将字符转换为大写 append 函数 以附加方式打开已有的文件 arctan 函数 余切函数 assignfile 函数 给文件变量赋一外部文件名 assigned 函数 测试函数或过程变量是否为空 autosize 属性 自动控制标签的大小 backgrounddi2001.jpg 属性 背景色 beginthread 函数 以适当的方式建立用于内存管理的线程 bevelinner 属性 控件方框的内框方式 bevelouter 属性 控件方框的外框方式 bevelwidth 属性 控件方框的外框宽度 blockread 函数 读一个或多个记录到变量中 blockwrite 函数 从变量中写一个或多个记录 borderstyle 属性 边界类型 borderwidth 属性 边界宽度 break 命令 终止for、while、repeat循环语句 brush 属性 画刷 caption 属性 标签文字的内容 changefileext 函数 改变文件的后缀 chdir 函数 改变当前目录 checked 属性 确定复选框选中状态 chr 函数 返回指定序数的字符 closefile 命令 关闭打开的文件 color 属性 标签的颜色 columns 属性 显示的列数 comparestr 函数 比较字符串(区分大小写) concat 函数 合并字符串 continue 命令 继续for、while、repeat的下一个循环 copy 函数 返回一字符串的子串 cos 函数 余弦函数 ctl3d 属性 是否具有3d效果 cursor 属性 鼠标指针移入后的形状 date 函数 返回当前的日期 datetimetofiledate函数 将delphi的日期格式转换为dos的日期格式 datetimetostr 函数 将日期时间格式转换为字符串 datetimetostring 函数 将日期时间格式转换为字符串 datetostr 函数 将日期格式转换为字符串 dayofweek 函数 返回星期的数值 dec 函数 递减变量值 decodedate 函数 将日期格式分解为年月日 decodetime 函数 将时间格式分解为时、分、秒、毫秒 delete 函数 从字符串中删除子串 deletefile 命令 删除文件 diskfree 函数 返回剩余磁盘空间的大小 disksize 函数 返回指定磁盘的容量 dispose 函数 释放动态变量所占的空间 disposestr 函数 释放字符串在堆栈中的内存空间 ditherbackgrounddi2001.jpg? 使背景色的色彩加重或减少50% dragcursor 属性 当鼠标按下时光标的形状 dragmode 属性 按动的作用方式 dropdowncount 属性 容许的显示数据项的数目 editmask 属性 编辑模式 enabled 属性 是否使标签呈现打开状态 encodedate 函数 将年月日合成为日期格式 encodetime 函数 将时、分、秒、毫秒合成为时间格式 endmargin 属性 末尾边缘 eof 函数 对有类型或无类型文件测试是否到文件尾 eoln 函数 返回文本文件的行结束状态 erase 命令 删除外部文件 exceptaddr 函数 返回引起当前意外的地址 exclude 函数 从集合中删除一些元素 exceptobject 函数 返回当前意外的索引 exit 命令 立即从当前的语句块中退出 exp 函数 指数函数 expandfilename 函数 返回包含绝对路径的字符串 extendedselect 属性 是否允许存在选择模式,true时,multiselect才有意义 extractfiledir 函数 返回驱动器和路径 extractfileext 函数 返回文件的后缀 extractfilename 函数 返回文件名 extractfilepath 函数 返回指定文件的路径 fileage 函数 返回文件已存在的时间 fileclose 命令 关闭指定的文件 filecreate 命令 用指定的文件名建立新文件 filedatetodatetime 函数 将dos的日期格式转换为delphi的日期格式 fileexists 函数 检查文件是否存在 filegatattr 函数 返回文件的属性 filegetdate 函数 返回文件的dos日期时间标记 fileopen 命令 用指定的存取模式打开指定的文件 filepos 函数 返回文件的当前指针位置 fileread 命令 从指定的文件读取 filesearch 命令 在目录中搜索指定的文件 fileseek 函数 改变文件的指针 filesetattr 函数 设置文件属性 filesetdate 函数 设置文件的dos日期时间标记 filesize 函数 返回当前文件的大小 filewrite 函数 对指定的文件做写操作 fillchar 函数 用指定的值填充连续字节的数 findclose 命令 终止findfirst/findnext序列 findfirst 命令 对指定的文件名及属性搜索目录 findnext 命令 返回与文件名及属性匹配的下一入口 floattodecimal 函数 将浮点数转换为十进制数 floattostrf 函数 将浮点数转换为字符串 floattostr 函数 将浮点数转换为字符串 floattotext 函数 将给定的浮点数转换为十进制数 floattotextfmt 函数 将给定的浮点数转换为十进制数 flush 函数 将缓冲区的内容刷新到输出的文本文件中 fmtloadstr 函数 从程序的资源字符串表中装载字符串 fmtstr 函数 格式化一系列的参数,其结果以参数 result 返回 font 属性 设置字体 format 函数 格式化一系列的参数并返回pascal字符串 formatbuf 函数 格式化一系列的参数 formatdatetime函数 用指定的格式来格式化日期和时间 formatfloat 函数 指定浮点数格式 frac 函数 返回参数的小数部分 freemem 函数 按给定大小释放动态变量所占的空间 getdir 返回指定驱动器的当前目录 getheapstatus 返回内存管理器的当前状态 getmem 建立一指定大小的动态变量,并将指针指向该处 getmemorymanager 返回内存管理器的入口点 glyph 函数 按钮上的图象 halt 停止程序的执行并返回到操作系统 hi 返回参数的高地址位 high 返回参数的上限值 hint 属性 提示信息 int 返回参数的整数部分 include 添加元素到集合中 insert 在字符串中插入子串 inttohex 将整型数转换为十六进制数 inttostr 将整型数转换为字符串 ioresult 返回最新的i/o操作完成状态 isvalidident 测试字符串是否为有效的标识符 items 属性 默认显示的节点 kind 属性 摆放样式 largechange 属性 最大改变值 layout 属性 图象布局 length 函数 返回字符串的动态长度 lines 属性 缺省显示内容 ln 函数 自然对数函数 lo 函数 返回参数的低地址位 loadstr 函数 从应用程序的可执行文件中装载字符资源 lowercase 函数 将给定的字符串变为小写 low 函数 返回参数的下限值 max 属性 最大值 maxlength 属性 最大长度 min 属性 最小值 mkdir 命令 建立一子目录 move 函数 从源到目标复制字节 multiselect 属性 允许同时选择几个数据项 name 属性 控件的名字 new 函数 建立新的动态变量并设置一指针变量指向它 newstr 函数 在堆栈上分配新的字符串 now 函数 返回当前的日期和时间 odd 测试参数是否为奇数 onactivate 事件 焦点移到窗体上时触发 onclick 事件 单击窗体空白区域触发 ondblclick 事件 双击窗体空白区域触发 onclosequery 事件 使用者试图关闭窗体触发 onclose 事件 窗体关闭后才触发 oncreate 事件 窗体第一次创建时触发 ondeactivate 事件 用户切换到另一应用程序触发 ondragdrop 事件 鼠标拖放操作结束时触发 ondragover 事件 有其他控件从他上面移过触发 onmousedown 事件 按下鼠标键时触发 onmouseup 事件 释放鼠标键时触发 onmousemove 事件 移动鼠标时触发 onhide 事件 隐藏窗体时触发 onkeydown 事件 按下键盘某键时触发 onkeypress 事件 按下键盘上的单个字符键时触发 onkeyup 事件 释放键盘上的某键时触发 onpaint 事件 窗体上有新部分暴露出来触发 onresize 事件 重新调整窗体大小触发 onshow 事件 在窗体实际显示之前瞬间触发 ord 返回序数类的序数 outlinestyle 属性 类型 outofmemoryerror 引起 outofmemory 意外 pageindex 属性 页索引 pages 属性 页 paramcount 函数 返回在命令行上传递给程序的参数数量 paramstr 函数 返回指定的命令行参数 pen 属性 画刷设置 pi 函数 返回圆周率pi picture 属性 显示图象 pictureclosed 属性 设置closed位图 pictureleaf 属性 设置leaf位图 pictureminus 属性 设置minus位图 pictureopen 属性 设置open位图 pictureplus 属性 设置plus位图 pos 函数 在字符串中搜索子串 pred 函数 返回先前的参数 random 函数 返回一随机函数 randomize 函数 用一随机数初始化内置的随机数生成器 read 函数 对有格式的文件,读一文件组件到变量中;对文本文件,读一个或多个值到一个或多个变量中 readln 函数 执行read过程,然后跳到文件下一行 readonly 属性 只读属性 reallocmem 函数 分配一动态变量 rename 函数 重命名外部文件 renamefile 函数 对文件重命名 reset 函数 打开已有的文件 rewrite 函数 建立并打开一新的文件 rmdir 函数 删除空的子目录 round 函数 将实数值舍入为整型值 runerror 函数 停止程序的执行 scrollbars 属性 滚动条状态 seek 函数 将文件的当前指针移动到指定的组件上 seekeof 函数 返回文件的文件结束状态 seekeoln 函数 返回文件的行结束状态 selectedcolor 属性 选中颜色 setmemorymanager 函数 设置内存管理器的入口点 settextbuf 函数 给文本文件指定i/o缓冲区 shape 属性 显示的形状 showexception 函数 显示意外消息与地址 sin 函数 正弦函数 sizeof 函数 返回参数所占的字节数 smallchange 属性 最小改变值 sorted 属性 是否允许排序 sqr 函数 平方函数 sqrt 函数 平方根函数 startmargin 属性 开始边缘 state 属性 控件当前状态 str 函数 将数值转换为字符串 stralloc 函数 给以null结束的字符串分配最大长度-1的缓冲区 strbufsize 函数 返回存储在由stralloc分配的字符缓冲区的最大字符数 strcat 函数 将一字符串附加到另一字符串尾并返回合并的字符串 strcomp 函数 比较两个字符串 strcopy 函数 将一个字符串复制到另一个字符串中 strdispose 函数 释放堆栈上的字符串 strecopy 函数 将一字符串复制到另一个字符串并返回结果字符串尾部的指针 strend 函数 返回指向字符串尾部的指针 stretch 属性 自动适应控件的大小 strfmt 函数 格式化一系列的参数 stricomp 函数 比较两个字符串(不区分大小写) stringtowidechar 函数 将ansi字符串转换为unicode字符串 strlcat 函数 将一字符串中的字符附加到另一字符串尾并返回合并的字符串 strlcomp 函数 以最大长度比较两个字符串 strlcopy 函数 将一个字符串中的字符复制到另一个字符串中 strlen 函数 返回字符串中的字符数 strlfmt 函数 格式化一系列的参数,其结果中包含有指向目标缓冲区的指针 strlicomp 函数 以最大长度比较两个字符串(不区分大小写) strlower 函数 将字符串中的字符转换为小写 strmove 函数 将一个字符串中的字符复制到另一个字符串中 strnew 函数 在堆栈上分配一个字符串 strpas 函数 将以null结束的字符串转换为pascal类的字符串 strpcopy 函数 将pascal类的字符串复制为以null结束的字符串 strplcopy 函数 从pascal类的最大长度字符串复制为以null结束的字符串 strpos 函数 返回一个字符串在另一个字符串中首次出现指针 strrscan 函数 返回字符串中最后出现字符的指针 strscan 函数 返回字符串中出现首字符的指针 strtodate 函数 将字符串转换为日期格式 strtodatetime 函数 将字符串转换为日期/时间格式 strtofloat 函数 将给定的字符串转换为浮点数 strtoint 函数 将字符串转换为整型 strtointdef 函数 将字符串转换为整型或默认值 strtotime 函数 将字符串转换为时间格式 strupper 函数 将字符串中的字符转换为大写 style 属性 类型选择 suce 函数 返回后继的参数 swap 函数 交换参数的高低地址位 tabs 属性 标记每一项的内容 tabindex 属性 标记索引 text 属性 显示的文本 texttofloat 函数 将字符串(以null结束的格式)转换为浮点数 time 函数 返回当前的时间 timetostr 函数 将时间格式转换为字符串 trim 函数 从给定的字符串中删除前导和尾部的空格及控制字符 trimleft 函数 从给定的字符串中删除首部的空格及控制字符 trimright 函数 从给定的字符串中删除尾部的空格及控制字符 trunc 函数 将实型值截取为整型值 truncate 函数 截去当前文件位置后的内容 unselectedcolor 属性 未选中颜色 upcase 将字符转换为大写 uppercase 将给定的字符串变为大写 val 函数 将字符串转换为整型值 vararraycreate 函数 以给定的界限和维数建立变体数组 vararraydimcount 函数 返回给定变体的维数 vararrayhighbound 函数 返回给定变体数组维数的上界 vararraylock 函数 锁定给定的变体数组 vararraylowbound 函数 返回给定变体数组维数的下界 vararrayof 函数 返回指定变体的数组元素 vararrayredim 函数 通过改变上限来调整变体的大小 vararrayunlock 函数 解锁指定的变体数组 varastype 函数 将变体转换为指定的类型 varcase 函数 将变体转换为指定的类型并保存它 varclear 函数 清除指定的变体 varcopy 函数 将指定的变体复制为指定的变体 varformdatetime 函数 返回包含日期时间的变体 varisarray 函数 测试变体是否为数组 varisempty 函数 测试变体是否为unassigned varisnull 函数 测试变体是否为null vartodatetime 函数 将给定的变体转换为日期时间 vartype 函数 将变体转换为指定的类型并保存它 visible 属性 控件的可见性 wantreturns 属性 为true时,按回车键产生一个回车符;为false时,按下ctrl+enter才产生回车符 write 命令 对有格式的文件,写一变量到文件组件中;对文本文件,写一个或多个值到文件中 writeln 命令 执行write过程,然后输出一行结束标志 widecharlentostring 函数 将ansi字符串转换为unicode字符串 widecharlentostrwar 函数 将unicode字符串转换为ansi字符串变量 widechartostring 函数 将unicode字符串转换为ansi字符串 widechartostrvar 函数 将unicode字符串转换为ansi字符串变量

dec在pascal中是什么意思

就是dec(x) X会-1嘛

那位高手告诉下Pascal语言中读程序里的各种符号和字母(单词)各代表什么意思?

函数标识符 自变量类型 意义 结果类型 abs 整型、实型 绝对值 同自变量 arctan 整型、实型 反正切 实型 cos 整型、实型 余弦 实型 exp 整型、实型 指数 实型 frac 整型、实型 小数部分 实型 int 整型、实型 整数部分 实型 ln 整型、实型 自然对数 实型 pi 无自变量 圆周率 实型 sin 整型、实型 正弦 实型 sqr 整型、实型 平方 同自变量 sqrt 整型、实型 平方根 实型 例: abs(-4)=4 abs(-7.49)=7.49 -- arctan(0)=0.0 sin(pi)=0.0 cos(pi)=-1.0 frac(-3.71)=-0.71 int(-3.71)=-3.0 -- sqr(4)=16 sqrt(4)=2 -- 2.标量函数 函数标识符 自变量类型 意义 结果类型 odd 整型 判断奇数 布尔型 pred 离散类型 求前趋 同自变量 succ 离散类型 求后继 同自变量 例: odd(1000)=false odd(3)true pred(2000)=1999 succ(2000)=2001 pred("x")="w" succ("x")="y" 3.转换函数 函数标识符 自变量类型 意义 结果类型 chr byte型 自量对应的字符 字符型 ord 离散类型 自量对应的序号 longint round 实型 四舍五入 longint trunc 实型 截断取整 longint 4.杂类函数 函数标识符 自变量类型 意义 结果类型 random 无自变量 [0,1)之间的随机实数 real random word [0,自变量)之间的随机整数 wird randomize 无自变量 用一随机值初始化内部随机数产生器 longint upcase 字符型 使小写英文字母变为大写 字符型 Pascal语言函数集(含Delphi控件属性) abort 函数 引起放弃的意外处理 abs 函数 绝对值函数 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks函数 将给定字符串的行分隔符调整为cr/lf序列 align 属性 使控件位于窗口某部分 alignment 属性 控件标签的文字位置 allocmem 函数 在堆栈上分配给定大小的块 allowgrayed 属性 允许一个灰度选择 ansicomparestr 函数 比较字符串(区分大小写) ansicomparetext 函数 比较字符串(不区分大小写) ansilowercase 函数 将字符转换为小写 ansiuppercase 函数 将字符转换为大写 append 函数 以附加方式打开已有的文件 arctan 函数 余切函数 assignfile 函数 给文件变量赋一外部文件名 assigned 函数 测试函数或过程变量是否为空 autosize 属性 自动控制标签的大小 backgrounddi2001.jpg 属性 背景色 beginthread 函数 以适当的方式建立用于内存管理的线程 bevelinner 属性 控件方框的内框方式 bevelouter 属性 控件方框的外框方式 bevelwidth 属性 控件方框的外框宽度 blockread 函数 读一个或多个记录到变量中 blockwrite 函数 从变量中写一个或多个记录 borderstyle 属性 边界类型 borderwidth 属性 边界宽度 break 命令 终止for、while、repeat循环语句 brush 属性 画刷 caption 属性 标签文字的内容 changefileext 函数 改变文件的后缀 chdir 函数 改变当前目录 checked 属性 确定复选框选中状态 chr 函数 返回指定序数的字符 closefile 命令 关闭打开的文件 color 属性 标签的颜色 columns 属性 显示的列数 comparestr 函数 比较字符串(区分大小写) concat 函数 合并字符串 continue 命令 继续for、while、repeat的下一个循环 copy 函数 返回一字符串的子串 cos 函数 余弦函数 ctl3d 属性 是否具有3d效果 cursor 属性 鼠标指针移入后的形状 date 函数 返回当前的日期 datetimetofiledate函数 将delphi的日期格式转换为dos的日期格式 datetimetostr 函数 将日期时间格式转换为字符串 datetimetostring 函数 将日期时间格式转换为字符串 datetostr 函数 将日期格式转换为字符串 dayofweek 函数 返回星期的数值 dec 函数 递减变量值 decodedate 函数 将日期格式分解为年月日 decodetime 函数 将时间格式分解为时、分、秒、毫秒 delete 函数 从字符串中删除子串 deletefile 命令 删除文件 diskfree 函数 返回剩余磁盘空间的大小 disksize 函数 返回指定磁盘的容量 dispose 函数 释放动态变量所占的空间 disposestr 函数 释放字符串在堆栈中的内存空间 ditherbackgrounddi2001.jpg? 使背景色的色彩加重或减少50% dragcursor 属性 当鼠标按下时光标的形状 dragmode 属性 按动的作用方式 dropdowncount 属性 容许的显示数据项的数目 editmask 属性 编辑模式 enabled 属性 是否使标签呈现打开状态 encodedate 函数 将年月日合成为日期格式 encodetime 函数 将时、分、秒、毫秒合成为时间格式 endmargin 属性 末尾边缘 eof 函数 对有类型或无类型文件测试是否到文件尾 eoln 函数 返回文本文件的行结束状态 erase 命令 删除外部文件 exceptaddr 函数 返回引起当前意外的地址 exclude 函数 从集合中删除一些元素 exceptobject 函数 返回当前意外的索引 exit 命令 立即从当前的语句块中退出 exp 函数 指数函数 expandfilename 函数 返回包含绝对路径的字符串 extendedselect 属性 是否允许存在选择模式,true时,multiselect才有意义 extractfiledir 函数 返回驱动器和路径 extractfileext 函数 返回文件的后缀 extractfilename 函数 返回文件名 extractfilepath 函数 返回指定文件的路径 fileage 函数 返回文件已存在的时间 fileclose 命令 关闭指定的文件 filecreate 命令 用指定的文件名建立新文件 filedatetodatetime 函数 将dos的日期格式转换为delphi的日期格式 fileexists 函数 检查文件是否存在 filegatattr 函数 返回文件的属性 filegetdate 函数 返回文件的dos日期时间标记 fileopen 命令 用指定的存取模式打开指定的文件 filepos 函数 返回文件的当前指针位置 fileread 命令 从指定的文件读取 filesearch 命令 在目录中搜索指定的文件 fileseek 函数 改变文件的指针 filesetattr 函数 设置文件属性 filesetdate 函数 设置文件的dos日期时间标记 filesize 函数 返回当前文件的大小 filewrite 函数 对指定的文件做写操作 fillchar 函数 用指定的值填充连续字节的数 findclose 命令 终止findfirst/findnext序列 findfirst 命令 对指定的文件名及属性搜索目录 findnext 命令 返回与文件名及属性匹配的下一入口 floattodecimal 函数 将浮点数转换为十进制数 floattostrf 函数 将浮点数转换为字符串 floattostr 函数 将浮点数转换为字符串 floattotext 函数 将给定的浮点数转换为十进制数 floattotextfmt 函数 将给定的浮点数转换为十进制数 flush 函数 将缓冲区的内容刷新到输出的文本文件中 fmtloadstr 函数 从程序的资源字符串表中装载字符串 fmtstr 函数 格式化一系列的参数,其结果以参数 result 返回 font 属性 设置字体 format 函数 格式化一系列的参数并返回pascal字符串 formatbuf 函数 格式化一系列的参数 formatdatetime函数 用指定的格式来格式化日期和时间 formatfloat 函数 指定浮点数格式 frac 函数 返回参数的小数部分 freemem 函数 按给定大小释放动态变量所占的空间 getdir 返回指定驱动器的当前目录 getheapstatus 返回内存管理器的当前状态 getmem 建立一指定大小的动态变量,并将指针指向该处 getmemorymanager 返回内存管理器的入口点 glyph 函数 按钮上的图象 halt 停止程序的执行并返回到操作系统 hi 返回参数的高地址位 high 返回参数的上限值 hint 属性 提示信息 int 返回参数的整数部分 include 添加元素到集合中 insert 在字符串中插入子串 inttohex 将整型数转换为十六进制数 inttostr 将整型数转换为字符串 ioresult 返回最新的i/o操作完成状态 isvalidident 测试字符串是否为有效的标识符 items 属性 默认显示的节点 kind 属性 摆放样式 largechange 属性 最大改变值 layout 属性 图象布局 length 函数 返回字符串的动态长度 lines 属性 缺省显示内容 ln 函数 自然对数函数 lo 函数 返回参数的低地址位 loadstr 函数 从应用程序的可执行文件中装载字符资源 lowercase 函数 将给定的字符串变为小写 low 函数 返回参数的下限值 max 属性 最大值 maxlength 属性 最大长度 min 属性 最小值 mkdir 命令 建立一子目录 move 函数 从源到目标复制字节 multiselect 属性 允许同时选择几个数据项 name 属性 控件的名字 new 函数 建立新的动态变量并设置一指针变量指向它 newstr 函数 在堆栈上分配新的字符串 now 函数 返回当前的日期和时间 odd 测试参数是否为奇数 onactivate 事件 焦点移到窗体上时触发 onclick 事件 单击窗体空白区域触发 ondblclick 事件 双击窗体空白区域触发 onclosequery 事件 使用者试图关闭窗体触发 onclose 事件 窗体关闭后才触发 oncreate 事件 窗体第一次创建时触发 ondeactivate 事件 用户切换到另一应用程序触发 ondragdrop 事件 鼠标拖放操作结束时触发 ondragover 事件 有其他控件从他上面移过触发 onmousedown 事件 按下鼠标键时触发 onmouseup 事件 释放鼠标键时触发 onmousemove 事件 移动鼠标时触发 onhide 事件 隐藏窗体时触发 onkeydown 事件 按下键盘某键时触发 onkeypress 事件 按下键盘上的单个字符键时触发 onkeyup 事件 释放键盘上的某键时触发 onpaint 事件 窗体上有新部分暴露出来触发 onresize 事件 重新调整窗体大小触发 onshow 事件 在窗体实际显示之前瞬间触发 ord 返回序数类的序数 outlinestyle 属性 类型 outofmemoryerror 引起 outofmemory 意外 pageindex 属性 页索引 pages 属性 页 paramcount 函数 返回在命令行上传递给程序的参数数量 paramstr 函数 返回指定的命令行参数 pen 属性 画刷设置 pi 函数 返回圆周率pi picture 属性 显示图象 pictureclosed 属性 设置closed位图 pictureleaf 属性 设置leaf位图 pictureminus 属性 设置minus位图 pictureopen 属性 设置open位图 pictureplus 属性 设置plus位图 pos 函数 在字符串中搜索子串 pred 函数 返回先前的参数 random 函数 返回一随机函数 randomize 函数 用一随机数初始化内置的随机数生成器 read 函数 对有格式的文件,读一文件组件到变量中;对文本文件,读一个或多个值到一个或多个变量中 readln 函数 执行read过程,然后跳到文件下一行 readonly 属性 只读属性 reallocmem 函数 分配一动态变量 rename 函数 重命名外部文件 renamefile 函数 对文件重命名 reset 函数 打开已有的文件 rewrite 函数 建立并打开一新的文件 rmdir 函数 删除空的子目录 round 函数 将实数值舍入为整型值 runerror 函数 停止程序的执行 scrollbars 属性 滚动条状态 seek 函数 将文件的当前指针移动到指定的组件上 seekeof 函数 返回文件的文件结束状态 seekeoln 函数 返回文件的行结束状态 selectedcolor 属性 选中颜色 setmemorymanager 函数 设置内存管理器的入口点 settextbuf 函数 给文本文件指定i/o缓冲区 shape 属性 显示的形状 showexception 函数 显示意外消息与地址 sin 函数 正弦函数 sizeof 函数 返回参数所占的字节数 smallchange 属性 最小改变值 sorted 属性 是否允许排序 sqr 函数 平方函数 sqrt 函数 平方根函数 startmargin 属性 开始边缘 state 属性 控件当前状态 str 函数 将数值转换为字符串 stralloc 函数 给以null结束的字符串分配最大长度-1的缓冲区 strbufsize 函数 返回存储在由stralloc分配的字符缓冲区的最大字符数 strcat 函数 将一字符串附加到另一字符串尾并返回合并的字符串 strcomp 函数 比较两个字符串 strcopy 函数 将一个字符串复制到另一个字符串中 strdispose 函数 释放堆栈上的字符串 strecopy 函数 将一字符串复制到另一个字符串并返回结果字符串尾部的指针 strend 函数 返回指向字符串尾部的指针 stretch 属性 自动适应控件的大小 strfmt 函数 格式化一系列的参数 stricomp 函数 比较两个字符串(不区分大小写) stringtowidechar 函数 将ansi字符串转换为unicode字符串 strlcat 函数 将一字符串中的字符附加到另一字符串尾并返回合并的字符串 strlcomp 函数 以最大长度比较两个字符串 strlcopy 函数 将一个字符串中的字符复制到另一个字符串中 strlen 函数 返回字符串中的字符数 strlfmt 函数 格式化一系列的参数,其结果中包含有指向目标缓冲区的指针 strlicomp 函数 以最大长度比较两个字符串(不区分大小写) strlower 函数 将字符串中的字符转换为小写 strmove 函数 将一个字符串中的字符复制到另一个字符串中 strnew 函数 在堆栈上分配一个字符串 strpas 函数 将以null结束的字符串转换为pascal类的字符串 strpcopy 函数 将pascal类的字符串复制为以null结束的字符串 strplcopy 函数 从pascal类的最大长度字符串复制为以null结束的字符串 strpos 函数 返回一个字符串在另一个字符串中首次出现指针 strrscan 函数 返回字符串中最后出现字符的指针 strscan 函数 返回字符串中出现首字符的指针 strtodate 函数 将字符串转换为日期格式 strtodatetime 函数 将字符串转换为日期/时间格式 strtofloat 函数 将给定的字符串转换为浮点数 strtoint 函数 将字符串转换为整型 strtointdef 函数 将字符串转换为整型或默认值 strtotime 函数 将字符串转换为时间格式 strupper 函数 将字符串中的字符转换为大写 style 属性 类型选择 suce 函数 返回后继的参数 swap 函数 交换参数的高低地址位 tabs 属性 标记每一项的内容 tabindex 属性 标记索引 text 属性 显示的文本 texttofloat 函数 将字符串(以null结束的格式)转换为浮点数 time 函数 返回当前的时间 timetostr 函数 将时间格式转换为字符串 trim 函数 从给定的字符串中删除前导和尾部的空格及控制字符 trimleft 函数 从给定的字符串中删除首部的空格及控制字符 trimright 函数 从给定的字符串中删除尾部的空格及控制字符 trunc 函数 将实型值截取为整型值 truncate 函数 截去当前文件位置后的内容 unselectedcolor 属性 未选中颜色 upcase 将字符转换为大写 uppercase 将给定的字符串变为大写 val 函数 将字符串转换为整型值 vararraycreate 函数 以给定的界限和维数建立变体数组 vararraydimcount 函数 返回给定变体的维数 vararrayhighbound 函数 返回给定变体数组维数的上界 vararraylock 函数 锁定给定的变体数组 vararraylowbound 函数 返回给定变体数组维数的下界 vararrayof 函数 返回指定变体的数组元素 vararrayredim 函数 通过改变上限来调整变体的大小 vararrayunlock 函数 解锁指定的变体数组 varastype 函数 将变体转换为指定的类型 varcase 函数 将变体转换为指定的类型并保存它 varclear 函数 清除指定的变体 varcopy 函数 将指定的变体复制为指定的变体 varformdatetime 函数 返回包含日期时间的变体 varisarray 函数 测试变体是否为数组 varisempty 函数 测试变体是否为unassigned varisnull 函数 测试变体是否为null vartodatetime 函数 将给定的变体转换为日期时间 vartype 函数 将变体转换为指定的类型并保存它 visible 属性 控件的可见性 wantreturns 属性 为true时,按回车键产生一个回车符;为false时,按下ctrl+enter才产生回车符 write 命令 对有格式的文件,写一变量到文件组件中;对文本文件,写一个或多个值到文件中 writeln 命令 执行write过程,然后输出一行结束标志 widecharlentostring 函数 将ansi字符串转换为unicode字符串 widecharlentostrwar 函数 将unicode字符串转换为ansi字符串变量 widechartostring 函数 将unicode字符串转换为ansi字符串 widechartostrvar 函数 将unicode字符串转换为ansi字符串变量

用随机函数random产生100到1000的随机数,用pascal语言,语句怎么写?

去你麻壁的,想咋写咋写

pascal randomize随机产生1~100的整数

先在Begin后面打一个 randomize; 以初始化随机函数生成器然后可以用赋值语句来产生随机数。例: n:=random(100); 这代表随机生成一个0~99 的数。所以 你应该用 n:=random(100)+1

pascal中procedure啥意思

就是过程的意思,function是函数

procedure 和function 在pascal里有什么区别

procedure就是纯运行的过程(可以不命名),function则是函数,是有值的,有时可以直接输出procedure多用于深搜,function多用于递归,比较(以下都是正确打法):①procedure;②proceduredfs(x:longint);//(此处dfs只能调用,不能以ans:=dfs(x)或writeln(dfs(x))的形式出现)③functiona:(x:boolean):longint;//(此处a被赋为longint,可以直接输出或作为longint使用,如ans:=a(x),当然,每次都会重新算一遍,boolean则是变量x"的定义,如果a被赋为boolean,是不可以输出的,但同样能作为boolean使用)

怎么用free pascal编游戏

你还是用DELPHI试试吧!

free pascal里的graph中都有些什么函数?怎么用的?谢谢你

执行一些绘图过程之前必须调用InitGraph过程,否则将产生错误。提示:GRAPH单元一般是用来做那种程序的,这种程序退出时要靠单机哪或按什么键的。如果不是做这种程序,是很难看到效果的。1、Procedure Arc (X,Y : Integer; start,stop, radius : Word); 以x,y为中心画一部分圆,参数radius为半径,从角start开始,到角stop结束。这些角度是逆时针测量的。{好像是画圆弧}2、Procedure Bar (X1,Y1,X2,Y2 : Integer); 画一个矩形,起始点是(X1,X2),结束点是(X2,Y2),并用当前颜色和填充模式填充。3、Procedure Bar3D (X1,Y1,X2,Y2 : Integer; depth : Word; Top : Boolean); 画一个三维矩形,起始点是(X1,X2),结束点是(X2,Y2),并用当前颜色和填充模式填充。depth指定显示深度的像素数。如果Top为True,则绘制一个三维的顶部。4、Procedure Circle (X,Y : Integer; Radius : Word); 画一个圆形,以(X,Y)为圆心,Radius为半径。5、Procedure ClearDevice ; 清除屏幕上的图形,光标转到(1,1)。6、Procedure ClearViewPort ; 清除当前视图,光标转到(1,1)。7、Procedure CloseGraph ; 关闭图形系统,恢复到激活图形模式之前的模式。8、Procedure DetectGraph (Var Driver, Modus : Integer); 检查计算机的硬件和驱动程序来确定屏幕可用,分别靠参数Driver和Modus返回,在InitGraph过程中可能用到。9、Procedure DrawPoly (NumberOfPoints : Word; Var PolyPoints); 使用当前颜色和线条风格绘制一个边数为NumberOfPoints的多边形,PolyPoints是一个为PointType的记录。10、Procedure Ellipse (X,Y : Integer; Start,Stop,XRadius,YRadius : Word); 以(X,Y)为中心绘制椭圆的一部分,XRadius、YRadius为椭圆的水平和垂直半径,Start、Stop为这部分椭圆的开始和结束角,它们是逆时针从X轴开始衡量的(3时等于0度)。11、Procedure FillEllipse (X,Y : Integer; Xradius,YRadius: Word); 以(X,Y)为中心绘制椭圆,XRadius、YRadius为椭圆的水平和垂直半径,椭圆以当前颜色和填充样式填充。12、Procedure FillPoly (NumberOfPoints : Word; Var PolyPoints); 绘制一个边数为NumberOfPoints的多边形,并以当前颜色和填充模式填充。PolyPoints是一个为PointType的记录。13、Procedure FloodFill (X,Y : Integer; BorderColor : Word); 用BorderColor颜色填充(X,Y) 以内的所有地方。14、Procedure GetArcCoords (Var ArcCoords : ArcCoordsType); 返回最后一次执行 Arc或Ellipse时的坐标。15、Procedure GetAspectRatio (Var Xasp,Yasp : Word); 设置屏幕的有效分辨率,纵横比为Xasp/Yasp。16、Function GetBkColor : Word; 返回当前的背景颜色。17、Function GetColor : Word;返回当前的绘图颜色。18、Procedure GetDefaultPalette (Var Palette : PaletteType); 用Palette返回当前的调色板。19、Function GetDriverName : String; 返回一个字符串,其中包含了当前的驱动程序名称。20、Procedure GetFillPattern (Var FillPattern : FillPatternType); 用FillPattern返回当前填充颜色。21、Procedure GetFillSettings (Var FillInfo : FillSettingsType); 用FillInfo返回当前填充设置。22、Function GetGraphMode : Integer; 返回当前的图像模式。23、Procedure GetImage (X1,Y1,X2,Y2 : Integer, Var Bitmap; 输出一幅位图到屏幕(x1,Y1)到(X2,Y2)区域。24、Procedure GetLineSettings (Var LineInfo : LineSettingsType); 用LineInfo返回当前行设置。25、Function GetMaxColor : Word; 返回最大可设定颜色数,但对于Turbo Pascal这个颜色并不总是保证是白色的(例如在256 +彩色模式)。26、Function GetMaxMode : Word; 返回当前驱动器的最高运作模式。27、Function GetMaxX : Word; 返回屏幕最大水平长度。28、Function GetMaxY : Word; 返回屏幕最多可容纳几行。29、Function GetModeName (Var modus : Integer) : String; 返回modus代表的模式名称。30、Procedure GetModeRange (Driver : Integer; LoModus, HiModus: Integer); 返回当前驱动器最高和最低的运作模式。如果没有模式支持这个驱动器,则HiModus值为-1。31、Procedure GetPalette (Var Palette : PaletteType); 用Palette返回当前调色板。32、Function GetPaletteSize : Word; 返回当前调色板项的最大数目。33、Function GetPixel (X,Y : Integer) : Word; 返回(X,Y)处的颜色。34、Procedure GetTextSettings (Var TextInfo : TextSettingsType); 返回当前文字样式:字体、方向、大小、位置。35、Procedure GetViewSettings (Var ViewPort : ViewPortType); 返回当前视口和剪辑设置。36、Function GetX : Integer; 返回图形指针在当前窗口中的横坐标。37、Function GetY : Integer; 返回图形指针在当前窗口中的纵坐标。38、Procedure GraphDefaults ; 重置视点,调色板,前景和背景图案,线条风格和模式的所有设置,填充样式,填充颜色和图案,字体,文本的位置和文本的大小。39、Function GraphErrorMsg (ErrorCode : Integer) : String; 返回一个字符串描述ErrorCode表示的错误。这个字符串可以用来让用户知道哪里出了问题。39、Function GraphResult : Integer; 返回在过去图形操作中产生的错误代码,如果返回值为0,则代表没有错误产生。如果返回的不是0,则代表有错误产生,除了在屏幕上画东西的所有操作,下面过程也可能产生一个非0的错误代码。InstallUserFont 、SetLineStyle、SetWriteMode、SetFillStyle、SetTextJustify、SetGraphMode、SetTextStyle40、Function ImageSize (X1,Y1,X2,Y2 : Integer) : Word; 返回存储定义矩形图像(X1,Y1)到(X2,Y2)所需字节数。41、Procedure InitGraph (var GraphDriver,GraphModus : integer; const PathToDriver : string); 初始化图形包,GraphDriver有两个值:如果GraphDriver=0,则执行一个自动检测并初始化最颜色尽可能高的模式,1024×768×64K是驱动器可能支持的分辨率的最大数值。如果你需要一个更高的分辨率,你必须编辑MODES.PPI,如果你需要其他模式,就将GraphDriver设置成不同于0和graphmode的模式数值。PathToDriver是BGI文件夹路径。例子:var gd,gm : integer; PathToDriver : string; begin gd:=detect; { highest possible resolution } gm:=0; { not needed, auto detection } PathToDriver:="C:PPBGI"; { path to BGI fonts, drivers aren"t needed } InitGraph(gd,gm,PathToDriver); if GraphResult<>grok then halt; { whatever you need } CloseGraph; { restores the old graphics mode } end.42、Function InstallUserDriver (DriverPath : String; AutoDetectPtr: Pointer) : Integer; 添加设备驱动器DriverPath到BGI驱动器列表。AutoDetectPtr是一个指针。43、Function InstallUserFont (FontPath : String) : Integer; 添加一个字体FontPath到BGI系统字体列表。44、Procedure Line (X1,Y1,X2,Y2 : Integer); 用当前颜色和线条模式画一条线,起始点是(X1,Y1),终止点是(X2,Y2),光标转至(X2,Y2).45、Procedure LineRel (DX,DY : Integer); 用当前颜色和线条模式绘制一条从当前点到指定点的线(DX,DY是相对于当前位置,指定位置为(当前位置横坐标+DX,当前位置纵坐标+DY)),指针转到线的末端。46、Procedure LineTo (DX,DY : Integer); 同LineRel.47、Procedure MoveRel (DX,DY : Integer; 将指针移到(DX,DY)(相对于当前指针的位置)。48、Procedure MoveTo (X,Y : Integer; 将指针移至(X,Y)。49、Procedure OutText (Const TextString : String); 用当前字体和文本设置在当前指针位置输出TextString,指针移到文本末端。50、Procedure OutTextXY (X,Y : Integer; Const TextString : String); 用当前字体和文本设置将TextString输出到(X,Y)处,指针移到文本末端。51、Procedure PieSlice (X,Y : Integer; Start,Stop,Radius : Word); 绘制并填充圆心为(X,Y)的圆,半径为Radius,起始角为Start,结束角为Stop。52、Procedure PutImage (X1,Y1 : Integer; Var Bitmap; How : word) ; 输出位图Bitmap在(X1,Y1),How确定如何将位图放在屏幕上。可能的值是:CopyPut XORPut ORPut AndPut NotPut53、Procedure PutPixel (X,Y : Integer; Color : Word); 将指针转到(X,Y),并设置颜色为Color。54、Procedure Rectangle (X1,Y1,X2,Y2 : Integer); 用当前颜色和样式绘制一个矩形,起始点为(X1,Y1),结束点为(X2,Y2)。55、Function RegisterBGIDriver (Driver : Pointer) : Integer; 注册一个用户自定义的BGI驱动程序。56、Function RegisterBGIFont (Font : Pointer) : Integer; 注册一个用户自定义的BGI驱动程序。57、Procedure RestoreCRTMode ; 恢复启动图形模式之前的屏幕模式。如果想回到你上次使用的图形模式,你可以调用过程SetGraphMode。58、Procedure Sector (X,Y : Integer; Start,Stop,XRadius,YRadius : Word); 以(X,Y)为中心绘制和填充一个椭圆扇形,XRadius、YRadius为椭圆的水平和垂直半径。Start为起始角,Stop为结束角。59、Procedure SetActivePage (Page : Word); 设置Page为所有图形输出活动页。60、Procedure SetAllPallette (Var Palette); 设置Palette为当前调色板,Palette可以是任何类型,但通常是PaletteType类型。61、Procedure SetAspectRatio (Xasp,Yasp : Word); 设置当前屏幕宽高比为Xasp/Yasp。62、Procedure SetBkColor (Color : Word); 设置Color为背景颜色。63、Procedure SetColor (Color : Word); 设置Color为前景色。64、Procedure SetFillPattern (FillPattern : FillPatternType, Color : Word); 设置FillPattern为当前填充模式,设置填充色为Color。65、Procedure SetFillStyle (Pattern,Color : word); 设置Pattern表示的填充类型的颜色为Color。Pattern为下列预定常量之一:EmptyFill 用于背景色。SolidFill 用于填充色。LineFill 填充水平线。ltSlashFill 填充由左下角到右上角的线。SlashFill 同上,用粗线。BkSlashFill 填充从左上角到右下角的粗线。LtBkSlashFill 同上,用正常线条。HatchFill 填充阴影线图案。XHatchFill 填充通口图案,旋转45度。InterLeaveFill WideDotFill 用点填充,宽间距。CloseDotFill 用点填充,窄间距。UserFill 用用户自定义模式填充。66、Procedure SetGraphBufSize (BufSize : Word); 是一个虚拟函数,并不做任何事情,不需要它。67、Procedure SetGraphMode (Mode : Integer); 设置图形模式为Mode并清屏。68、Procedure SetLineStyle (LineStyle,Pattern,Width : Word); 设置行的绘画风格,你可以指定LineStyle为下列预定义的常量之一:Solidln=0;实线绘制。Dottedln=1;绘制点线。Centerln=2;绘制一个中心非破碎的线。Dashedln=3; 绘制虚线。UserBitln=4;用用户定义的模式绘制。如果使用UserBitln,则Pattern为模式,在所有其他情况下,Pattern被忽略。Width指定行有多厚,可以将它设置为以下预定义的常量:NormWidth=1 ThickWidth=369、Procedure SetPalette (ColorNr : Word; NewColor : ShortInt); 改变调色板的第ColorNr个项的值为NewColor。70、Procedure SetRGBPalette (ColorNr,Red,Green,Blue : Integer); 设置调色板的第ColorNr个项为RGB颜色(Red,Green,Blue)。71、Procedure SetTextJustify (Horizontal,Vertical : Word); 控制新的文本的位置,相对于(图形)的光标位置。Horizontal控制水平放置,可以是下列预定义的常量之一:LeftText=0; 文本设定在指针左边。CenterText=1; 文字设定水平居中在指针上。RightText=2; 文本设定在指针右边。Vertical控制文本的垂直放置,相对于(图形)的光标位置,它的值可以是下列预定义的常量之一:BottomText=0; 文本置于指针下方。CenterText=1; 文本垂直放在指针中心。TopText=2;文本置于指针上方。72、Procedure SetTextStyle (Font,Direction,Magnitude : Word); 设置输出到屏幕上的文本的样式。Font可为以下预先定义的常量:DefaultFont = 0; TriplexFont = 1; SmallFont = 2; SansSerifFont = 3; GothicFont = 4; ScriptFont = 5; SimpleFont = 6; TSCRFont = 7; LCOMFont = 8; EuroFont = 9; BoldFont = 10;Direction可为以下常量:HorizDir=0; VertDir=1;73、Procedure SetUserCharSize (Xasp1,Xasp2,Yasp1,Yasp2 : Word); 设置矢量字体的高度和宽度。水平大小为Xasp1/Xasp2,垂直大小为Yasp1/Yasp2。74、Procedure SetViewPort (X1,Y1,X2,Y2 : Integer; Clip : Boolean); 设置当前图形视窗(窗口)为左上角为(X1,Y1)右下角为(X2,Y2)的矩形。如果Clip的值为True,任何在是窗外的图像将不被绘制,此调用后指定的坐标将相对于视窗左上角(X1,Y1)。75、Procedure SetVisualPage (Page : Word); 设置视频页面为页码为Page的页面。76、Procedure SetWriteMode (Mode : Integer); 控制绘制在屏幕上的线,它控制了二元运算时使用的绘制在屏幕上的线。Mode可以为以下常量之一:CopyPut=0; XORPut=1;77、Function TextHeight (S : String) : Word; 返回当前的字体和文字大小的字符串S的高度(单位为像素)。78、Function TextWidth (S : String) : Word; 返回当前的字体和文字大小的字符串S的宽度(单位为像素)。 GRAPH单元中的变量、常量、类型:D1bit = 11; D2bit = 12; D4bit = 13; D6bit = 14; D8bit = 15; D12bit = 16; D15bit = 17; D16bit = 18; D24bit = 19; D32bit = 20; D64bit = 21; lowNewDriver = 11; highNewDriver = 21;detectMode = 30000; m320x200 = 30001; m320x256 = 30002; m320x400 = 30003; m512x384 = 30004; m640x200 = 30005; m640x256 = 30006; m640x350 = 30007; m640x400 = 30008; m640x480 = 30009; m800x600 = 30010; m832x624 = 30011; m1024x768 = 30012; m1280x1024 = 30013; m1600x1200 = 30014; m2048x1536 = 30015; lowNewMode = 30001; highNewMode = 30015;ArcCoordsType = record X,Y,Xstart,Ystart,Xend,Yend : Integer; end; FillPatternType = Array [1..8] of Byte; FillSettingsType = Record Pattern,Color : Word end; LineSettingsType = Record LineStyle,Pattern, Width : Word; end; PaletteType = Record Size : Byte; Colors : array[0..MAxColor] of shortint; end; PointType = Record X,Y : Integer; end; TextSettingsType = Record Font,Direction, CharSize, Horiz, Vert : Word end; ViewPortType = Record X1,Y1,X2,Y2 : Integer; Clip : Boolean end;

求某位电脑高手帮助做个pascal程序!要自创,有新意,切记不能抄!!要快,此问题仅持续到今天!

什么题目,不要暗箱操作。

求一份free pascal 初学者会用得到的ascii码表

工具菜单里就有ascii table

PASCAL compilation aborted 解答

a=c+700000这个地方超界了。你的abc都是integer,范围是-32768~32767

请问PASCAL中的INC函数问题

是,inc(x) 和 x:=x+1 是一样的

[Pascal Error] Unit1.pas(1): Unable to invoke Code Completion due to errors in source code

无法调用代码完成,由于源代码中有错误,使用delphi7,第一次看到这样的提示是在我自定义过程的时候,忘记在句尾打引号出现的。其实就是这样一个小小的错误,造成的。对照检查一下,就可以排除。

GTX2000系列究竟是Volta还是Pascal升级版

可能推出Ampere(安培)架构(还是要看明年发布会)伏特成本太高,目前只出了一款针对顶级科学计算的:计算卡TeslaV100AMD今年旗舰VEGA在游戏卡表现不佳,超高功耗同时,游戏性能无法匹敌GTX1080TI(非完整版GP102核心)2000系列,还是叫1100,倾向2000最后还是看明年发布会用 Volta的确2060很强,想战1080还是不可能,因为NVIDIA会刀法阉割,在没有强敌不可能让甜品卡打上代次旗舰(除非AMD发布要出更厉害卡,给压力)英伟达掌门黄仁勋在近日的一次电话会议中明确表示:“在短时间内,甚至在下一个假日期间,我觉得Pascal架构将仍然立于不败之地。”言下之意就是Pascal架构将继续服役,这让那些期待下一代Volta架构显卡的人们感到失望。对此老黄也在会上否认了Volta的消息,他说:“我们目前没有透露任何有关Volta架构游戏卡的消息,我现在能说的就是,目前产品线上还有很多为玩家们准备的新东西,也有更多为他们准备的新科技。”英伟达年内或不会换代,黄仁勋:Pascal是不可战胜的。也就是说,Pascal架构可能不会止步于GTX1080 Ti,之后应该还会有新的基于该架构的显卡型号,当然也有可能会出一些性价比更高的中端卡。现在AMD刚刚公布了基于Vega架构的游戏级显卡,性能单从数据上看和GTX 1080相当,但由于显卡还没有上市,所以是否会对英伟达的现有产品线构成威胁还不得而知。尽管老黄对Pascal很有信心,但也不排除会即时调整策略的可能性,这主要是看AMD的战斗力如何了。

pascal基础assign语法问题

Assign是文本文件用的,文本文件又称为正文文件或行文文件,可以直接阅读,是人机通信的基本数据形式之一。文本文件的内容由ASCII字符集中的字符组成,因此文本文件也称ASCII码文件。文本文件具体是由一系列行组成,每一行可以包括0个或多个字符型成分,并以行结束符结尾。文本文件可用文字编辑程序(如Free Pascal的编辑窗口中或记事本中)直接建立、阅读和修改, 也可以由Pascal程序在运行过程中建立。 一、文本文件的定义  文本文件的类型为text,它是由ASCII字符组成的,是Pascal提供的标准文件之一。标准文件text已由Pascal说明如下:type text=file of char;因此,同标准类型integer、real等一样可以直接用于变量说明之中,无需再由用户说明。 例如:  var f1,f2:text;  这里定义了两个文本文件变量f1和f2。二、文本文件的建立  文本文件的建立有两种方法:一是直接用Free Pascal的Edit建立原始数据文件;二是用程序的方式建立中间数据或结果数据文件。例如将下表中的数据存入名为A.dat的文件中。  3 4  29 30 50 60  80 90 70 75  60 50 70 45  操作步骤:进入Free Pascal的编辑状态;输入数据;存盘,文件名取A.dat。  此时,已将数据存入文本文件A.dat中。文本文件也可用记事本等文本编辑器在windows下建立。  如果用程序的方式建立文件,操作步骤为:  1、定义文本文件变量;  2、把一外部文件名赋于文本文件变量,使该文本文件与相应外部文件相关联;  命令格式:assign(f,name)  f为定义的文本文件变量,name为实际文件文件名  如:assign(f1,"filein.in") {相对路径}  或:assign(f1,"d:pasfileout.out") {绝对路径}  这样在程序中对文本文件变量f1的操作,也就是对外部实际文件"filein.in"或"fileout.out"的操作。上例中文件"filein.in"是存贮在当前目录中,而文件"fileout.out"则是存贮在d:pas子目录中。  3、打开文本文件,写准备;  命令格式:rewrite(f)  功能:创建并打开新文件准备写,若已有同名文件则删除再创建。  4、对文件进行写操作;  命令格式:write(f,<项目名>)或:writeln(f,<项目名>)  功能:将项目内容写入文件f中  5、文件操作完毕后,关闭文件。  命令格式:close(f)例11.1 从键盘输入下列数据,然后用程序写入名为B.dat的文件中。3 4  29 30 50 60  80 90 70 75  60 50 70 45program exp11_1;var i,j,n,m,x:integer;f:text;beginwrite("n,m=");readln(n,m);assign(f,"b.dat");rewrite(f);writeln(f,n," ",m);for i:=1 to n dobeginfor j:=1 to m dobeginread(x);write(f,x," ");end;readln;writeln(f);end;close(f);end. 三、读取文本文件   文本文件内容读取操作步骤:  1、定义文本文件变量;  2、用assign(f,name)命令,将内部文件f与实际文件name联系起来;  3、打开文本文件,读准备;  命令格式:reset(f)  功能:打开一个已经存在的磁盘文件,该文件只能读,指向文件元素的指针指向第一个元素。4、对文件进行读操作;  命令格式:read(f,<变量名表>) 或readln(f,<变量名表>)  功能:读文件f中指针指向的数据于变量中。  5、文件操作完毕,用close(f)命令关闭文件。例11.2 读出例1生成的文本文件B.dat中的内容,并输出到屏幕。program exp11_2;var i,j,n,m,x:integer;f:text;beginassign(f,"b.dat");reset(f);read(f,n,m);writeln(n," ",m);for i:=1 to n dobeginfor j:=1 to m dobeginread(f,x);write(x," ");end;writeln;end;close(f);readlnend.由于文本文件是以ASCII码的方式存储,故查看文本文件的内容是极为方便,在windows状态可使用记事本等软件进行查看,在Free Pascal中可以象取程序一样取出文件进行查看。

关于Pascal中的assign用法

你把input和output改成自己喜欢的名字(如file1和file2)然后想输入或输出到文件时就写readln(file1,变量名);{file1是你喜欢的名字}writeln(file2,变量名);{file2是也你喜欢的名字}要在键盘与屏幕上读写时就写readln(变量名);{不要写文件名}writeln(变量名);{不要写文件名}就OK啦!举例:program example;var file1,file2:text; p:integer;begin assign(file1,"a.txt"); assign(file2,"b.txt"); readln(file1,p);{读文件中的值} writeln(file2,p);{输出到文件} readln(p);{读键盘上的值} writeln(p);{输出到屏幕}end.

Pascal 高精度的问题

求n!的值可以直接用一个高精度乘法就解决了吧..a/b不就是高精度除法么..n累加..先转换为字符串后转换为高精度加法..如果嫌麻烦可用公式(n+1)*n/2就用一个乘法和很简单的除法就可以了..阶乘和就一边调用加一边调用乘嘛..

odd和ord在free pascal里分别是什么用处

odd是求括号里是不是奇数ord是求括号里的ASCII码

在pascal编程中odd是什么意思

i mod 2<>0等同于odd(i)

pascal 中return的用法

return 在pascal中用exit function tmp(a:integer):integer;begin exit(5);{相当于tmp:=5;exit;}end;

pascal中 warning:range check error while evaluating constants这条警告是什么意思,速度回答呀!

数组赋值越界

学pascal看哪本书可以一本俱全?

《全国青少年信息学奥林匹克联赛培训教材》南京大学出版社

Pascal:指针

类pascal就是像pascal语言的伪代码。这个语句的意思是说把指针p所指的的.link赋给指针q所指的.link

pascal 语言常见错误

你买本书

Pascal一般所有函数 例如:case...of ,eof等等和用法

Pascal用到的数和符号1、PASCAL语言的字符表 是ASCII字符集,主要有: ⑴26个英文字母(不分大小写) ⑵十个数字符号 ⑶特殊符号。如+-*/=><][:;.等2、标识符以字母开头的字母数字序列(大小写等效,可跟下划线_),用来标识常量、变量、程序、函数等。自定义标识符时要注意遵循此规则。3、标准标识符与保留字标准标识符有40个,五类(false true maxint Boolean real integer char abs trunc read write)详见书P16。保留字是Pascal语言中具有特定的含义的字符。在PASCAL7.0中书写保留字的时候,字符颜色会变为白色。一共36个保留字(program function begin end procedure var const array if then else case for to do repeat until while and div in mod not or nil)。4、常量和变量:程序设计中经常要用到常量和变量,这些都必须先定义后才能使用。1).常量指程序运行过程中,其值不能改变的量。分为四类:⑴整型常量十进制整数表示,不能有小数点。Maxint表示计算机中最大的整数=32767,即(27-1),由一个字节存贮,第一位为符号位。补码表示,范围为:-32768~32767。运算速度快。可进行+、-、*、DIV(整除)、MOD(取余)注意不能用/,因为得到的结果可能不为整型。⑵实型常量包括正实数、负实数和零。运算慢,无法精确表示。有两种表示方法:十进制表示法和科学记数法。可进行+、-、*、/运算。整数与实数运算时自动转为实数进行运算。⑶字符常量字符常量是由单个字符组成的,所有字符都来自ASCII字符集。字符的数据是用两个单引号把单个字符括起来表示的。每个字符都有一个序值(在ASCII字符集的位置),可以用六个关系运算符来比较大小。⑷布尔型常量只有true和false两个值。也有序,true 为1,false为0。布尔型有三个运算符:and or notconst <常量标识符>=<常量>;   例:const pi:=3.14;2).变量变量是指在程序执行过程中,其值可以改变的量。变量三要素:变量名、变量类型、变量值。⑴变量名用一个合法的标识符来表示。⑵变量在某一固定时刻是用来存放常量的,而常量是有类型的数据,因而变量也是有类型的。类型不能有两义性。⑶变量值。在程序中由赋值语句来赋值。var <变量标识符列表>:<类型>;   例:var a,b:integer; c,d:real;5、表达式程序中由运算对象(操作数)和运算符(操作符)按照一定次序组成的有意义的式子称为表达式。操作符(算术、关系、布尔)操作数(因子(无符号常量、变量、函数调用、not 布尔因子、项、括号括起来的表达式)、项、简单表达式组成)。具体优先顺序:⑴括号内先算⑵函数⑶运算符优先顺序NOT* / DIV MOD AND+ - OR< <= > >= = <>⑷同级运算按从左到右的次序。注意:运算符两端,除实型和整数型外不允许为两种不同的数据类型。表达式的数据类型根据它的值来划分。(所以表达式分为算术表达式、字符表达式、布尔表达式)书写表达式的注意事项:⑴只可出现圆括号;⑵运算符不能省略;⑶表达式中的所有字符必须写在同一行上。6、标准函数的使用。对于在程序中反复出现的程序段,我们可以把它作为一个独立的整体,指定一个标识符,以后作用的时候只要给出它的标识符就可以了,这样的程序段我们称为子程序。子程序主要包括函数与过程。我们先来看一下系统内部定义的标准函数。标准函数是由系统预先定义、用户可以直接使用的函数。格式:函数名(自变量);使用时注意自变量的类型和函数的类型,两者类型可能不同(如类型转换函数),不同函数对自变量的要求也不同。①.算术函数可参加算术运算,其自变量与函数值均为数值型。⑴abs(x)。即|x|⑵sqr(x), sqrt(x)⑶sin(x), cos(x),arctan(x)⑷exp(x), ln(x)②.类型转换函数⑴trunc(x)⑵round(x)⑶序号函数:ord(x)⑷字符函数:CHR(X)的自变量为字符ASCII的十进制数值,IBMPC上取值为0到255,可打印字符为32到126。它正好与序号函数ORD(X)相反.如:CHR(65)="A",ORD(‘A")=65③.顺序函数在有序数据中求某个数据的前一项或后一项。⑴前导函数:pred(x)⑵后续函数:succ(x)④.逻辑函数函数值为布尔型的函数,在程序中主要用来作判断用。⑴奇数函数odd(x)⑵行结束函数eoln(x)⑶文件结束函数eof(x)回到前面的表达式进行例题讲解。7、数据类型。数据类型是数据的重要特征,决定了它的表示形式、取值范围和能参加的各种运算。PASCAL的数据类型:(见书P24)简单类型(不能再被分解)、结构类型(由其他类型组合而成)和指针类型。(静态数据类型和动态数据类型)(顺序类型、有序类型)①.标准类型:四种。实数类型除real外,其他的需在说明的开始部分(在const,var等前面)用{$N+}打开编译开关。字符类型中还有字符串类型。用sting作标识符。可存取255个字符。整型数取值范围:BYTE(0—255 8位) SHORINT(-128—127)INTEGER(16),WORD(16),LONGINT(32) ②.自定义类型:枚举与子界。

计算机pascal

从第一个字符ACILL马开始比较f<j教授 和 讲师 相同于是比较第二、第三个....得到"jiao shou">"jiang shi">"fu jiao shou"

pascal运算符解释

@表示取地址运算,例如p:=@x;把变量x的地址取出来,赋予指针变量pand可以作为逻辑运算,表示与,例如(x>0)and(x<10),除此以外and、shl、shr、xor还是位运算,对两个整数的二进制形式的位进行运算,and是与、shl是左移、shr是右移、xor是异或in是集合运算,判断是否在集合中,例如:vars:setofchar;c:char;begins:=["a","e","i","o","u"];readln(c);ifcinsthenwriteln("是元音")elsewriteln("不是元音");end.

pascal快捷键!

百度文库首页|下载客户端|百度首页|登录注册1、先用Ctrl+KT标记一个单词,然后在将光标移动到制定的位置,同时按住Ctrl+K,然后再按K,可以选中所要选的块。2、Ctrl+Ins复制所选块的内容,Shift+Ins粘贴所选块的内容。Ctrl+N在光标所在位置前面插入一个空行。3、Ctrl+W将当前文档窗口所显示的内容上移一行,Ctrl+Z将当前文档窗口所显示的内容下移一行。4、光标右移→,光标上移↑,光标下移↓;右移一个词Ctrl+→,左移一个词Ctrl+←,下移一页PgDn ,上移一页PgUp;下移文件尾Ctrl+PgDn ,上移文件头Ctrl+PgUp,下移屏底Ctrl+End;上滚一行Ctrl+W,下滚一行Ctrl+Z;左移行首Home,右移行尾End;移至块首Ctrl+QB,移至块尾Ctrl+QK,移至原位Ctrl+QP。5、插入/改写Ins或Inert,标记一单词Ctrl+KT,复制块至光标处Ctrl+KC,删除光标所在行Ctrl+Y 标记一行Ctrl+KL 删除块Ctrl+KY,在光标前插入行Ctrl+N 标记块首Ctrl+KB 将块另存Ctrl+KW,删除光标左边字符BackSpace←标记块尾Ctrl+KK 从盘读到光标处Ctrl+KR,删除光标所在字符Del或Delete 移动块至光标处Ctrl+KV 解除块标记Ctrl+KH,删除字符至行尾Ctrl+QY 6、F1 帮助,F2 保存,F3 打开文件,F4 运行到光标处,F5 切换当前窗口状态(最大化/还原),f7 单步跟踪运行(进入自定义函数或过程)(Trace Into) ,F8 同F7但不进入自定义函数或过程(Step Over) ,F9 编译(Make) ,Alt+F5 察看运行窗口,Alt+F9 编译(Cmopile) ,Ctrl+F3 监视系统栈(有递归过程时使用),Ctrl+F7 添加监视,Ctrl+F9 运行,Alt+X 退出Pascal。用手机扫此二维码:24以下结果由提供:24百度翻译百科词条:24百度百科1234567890ABCDEFGHIJKLMNabcdefghijklmn!@#$%^&&*()_+.一三五七九贰肆陆扒拾,。青玉案元夕东风夜放花千树更吹落星如雨宝马雕车香满路凤箫声动玉壶光转一夜鱼龙舞蛾儿雪柳黄金缕笑语盈盈暗香去众里寻他千百度暮然回首那人却在灯火阑珊处复制 | 搜索 | 翻译 | 百科 | 分享 | 二维码文字已复制分享至:×0 财富值限时!免财富值下载到手机/1

pascal语言还有用吗

想用pascal编图形界面, 有delphi, 这个很好用的ide工具

pascal是哪个国家的

??

pascal中的pos函数是怎么使用的?

在 p:=pos(ch,s)中,ch可为char,也可为string, (LZ不妨试一试用string)当返回值p=0时,则在s中没有ch出现,否则p就为ch最早在s中出现在第p位例如:p:=pos(‘j","adjadj"); 则p=3;p:=pos("c","adjadj"); 则p=0;p:=pos("dj","adjadj");则p=2;比如pos("l","liang") ,那么结果是1

C语言转换为pascal

var cnt_cun,cnt_scl:longint; jv:array[505]of longint; dp:array[505,505]of longint;procedure dpdt;var now_size,next_size:longint;beginfillchar(dp,0x7f,sizeof(dp));dp[0,0]:=0;for x:=1 to cnt_scl do dp[1][x]=0; now_size:=0;next_size:=1;for x:=2 to cnt_cun do beginnow_size:=(1+x)div 2;dp[x,1]=dp[x-1,1]+jv[x]-jv[now_size];next_size:=now_size; end;for x:=2 to cnt_cun do beginfor y=2 to cnt_scl do beginif(y>=x)then begin dp[x,y]:=0;break;end; fewr=dp[x-1][y-1];next_sze=x;next_jv=0;for z:=x-1 downto z>=1 dobeginnow_sze:=(1+x+z)/2; now_jv:=next_jv+abs(jv[z]-jv[now_sze]);next_sze:=now_sze;next_jv=now_jv;if(now_jv+dp[z-1][y-1]<fewr)then fewr:=now_jv+dp[z-1,y-1]; end; dp[x,y]=fewr; end; end; return; end;beginreadln(cnt_cun,cnt_scl);for int x=2 to cnt_cun do begina=0;read(a); jv[x]:=jv[x-1]+a; dpdt;write(dp[cnt_cun,cnt_scl]);end.可能有少许编译错误,请自行检查

pascal中有关栈的问题.

1.算术函数 函数标识符 自变量类型 意义 结果类型 abs 整型、实型 绝对值 同自变量 arctan 整型、实型 反正切 实型 cos 整型、实型 余弦 实型 exp 整型、实型 指数 实型 frac 整型、实型 小数部分 实型 int 整型、实型 整数部分 实型 ln 整型、实型 自然对数 实型 pi 无自变量 圆周率 实型 sin 整型、实型 正弦 实型 sqr 整型、实型 平方 同自变量 sqrt 整型、实型 平方根 实型 例:abs(-4)=4 abs(-7.49)=7.49 arctan(0)=0.0 sin(pi)=0.0 cos(pi)=-1.0 frac(-3.71)=-0.71 int(-3.71)=-3.0 sqr(4)=16 sqrt(4)=2 2.标准函数 函数标识符 自变量类型 意义 结果类型 odd 整型 判断奇数 布尔型 pred 离散类型 求前趋 同自变量 succ 离散类型 求后继 同自变量 例:odd(1000)=false pred(2000)=1999 succ(2000)=2001 odd(3)=true pred("x")="w succ("x")="y" 3.转换函数 函数标识符 自变量类型 意义 结果类型 chr byte 自变量对应的字符 字符型 ord 离散类型 自变量对应的序号 longint round 实型 四舍五入 longint trunc 实型 截断取整 longint 例:chr(66)="B" ord("A")=65 round(-4.3)=-5 trunc(2.88)=2 4.杂类函数 函数标识符 自变量类型 意义 结果类型 random 无自变量 [0,1间的随机实数 real random word [0,自变量间的随机整数) word randomize 无自变量 初始化内部随机数产生器 longint upcase 字符型 使小写英文字母变为大写 字符型 downcase 字符型 使小写英文字母变为大写 字符型 SYSTEM TP的运行库,包括常用的标准函数和过程,可以在程序中直接使用,不需USES语句说明。 DOS 具有日期、时间、目录查找、程序执行等功能 CRT 具有屏幕模式控制、扩展键盘码、颜色、窗口、声音等 功能 PRINTER 支持打印输出操作。 GRAPH 高级图形软件包,支持多种图形适配器。 GRAPH3 实现TP3.0的图形软件包。 TURBO3 兼容TP3.0的源程序。 OVERLAY 实现高级覆盖管理 SYSTEM单元常用过程与函数 ABS(X) F 求变量的绝对值 ADDR(X) F 测变量地址 APPEND(F) P 打开一个存在的文本文件,并将文件指 针指向文件末尾准备添加元素 ARCTAN(X) F 反正切 ASSIGN(F,C) P 将字符串C所表示的外部文件名赋给文 件变量F ASSIGNED(X) P 测试程序当中的指针或变量是否为空 BLOCKREAD(F,D,NUM) P 读类型文件。 BLOCKWRITE(F,D,NUM) P 写无类型文件 BREAK P 中止或结束循环 CHDIR(PATH) P 改变当前目录 CHR(X) F 求ASCII码值为X的字符 CLOSE(F) P 关闭文件 CONCAT(S1,S2...S3) F 字符串合并 CONTINUE P 继续循环 COPY(S,POS,LEN) F 返回一个字符串的子串 COS(X) F 余弦函数 CSEG F 返回CS寄存器的当前值 DEC(X) F X:=X-1 DELETE(S,POS,LEN) P 删除一个字符串的子串 DISPOSE(P) P 释放一个动态变量 DSEG F 返回DS寄存器的当前值 EOF(F) F 判断文件是否结束 EOLN(F) F 判断文件类型中的一行是否结束 ERASE(F) P 删除一个存在的外部文件。 EXIT P 过程中止 EXP(X) F 以E为底的指数函数 FILEPOS(F) F 文件记录的当前位置 FILESIZE(F) F 文件记录数 FILLCHAR(D,LEN,DATE) P 填充数值或字符 FLUSH(F) P 清空文件缓存区 FRAC(X) F 取实形变量的小数部分 FREEMEM(P,I) P 释放变长动态变量 GETDIR(DRV,PATH) P 取当前盘,当前目录 GETMEM(P,I) P 分配变长的动态变量,并把块地址存放在一个指针变量中 HALT P 立即中止程序执行,返回TP编辑器或DOS HI(I) F 返回一个变量的高位字节 INSERT(S,D,POS) F 在一个字符串中某一位置开始插入一个子串 INT F 取整数部分 IORESULT F 返回最后一次输入/出操作的结果状态 LENGTH(S) F 取字符串的长度 LN(R) F 求自然对数 LO(I) F 返回一个变量的低位字节 MAXAVAIL F 返回最大内存空间 MEMAVAIL F 返回可用内存数目 MKDIR(PATH) P 建立一个子目录 MOVE(S,D,LEN) P 快传送 NEW(P) P 建立一个新的动态变量 ODD(X) F 判断一个变量的值是否为奇数 OFS(X) F 侧变量偏移地址 ORD(CH) F 求一个字符的ASCII码值 PARAMCOUNT F DOS参数串长度 PARAMSTR(N) F DOS参数串 PI F 圆周率的值 pos(str1,str2) f 测一个字符串中包含的另一个子串的开始位置 pred(x) f 求前驱 ptr(i) f 指针赋值 random f 返回0~1之间的随机实数 randomize p 初始化随机数发生器 read/readln(f,x) p 读入/输入数据 rename(f,str) p 给一个外部文件改名 reset(f) p 打开文件,并将文件指针指向开始,并准备读数据 rewrite(f) p 打开文件,并将文件指针指向开始,准备写资料 rmdir(path) p 删除一个子目录 round(x) f 求实数的近似数 runerror p 停止程序的运行 scrollto p 滚动显示窗口的某部分内容 seek(f,n) p 将文件指针定位于文件f的第n个文件成分上 seekrof(f) f 定位到文件尾 seekroln(f) f 定位到行尾 seg(n) f 测变量段地址 settextbuf(f) p 将输入/出缓冲区与一个文本文件建立关联 sin(x) f 正弦函数 sizeof(x) f 测变量大小 sptr f 返回sp寄存器的当前值 sqr(x) f 平方 sqrt(x) f 平方根 sseg f 返回ss寄存器的当前值 str(i,s) f 将一个整数转换成字符串 succ(X) f 后继函数 swap(x) f 交换一个变量的高位和低位字节 trunc(x) f 截去实数的小数部分 truncate(f) p 截去文件当前指针以后的内容 upcase(ch) f 将小写字母转换成大写字母 val(s,r,p) p 将一个字符串转换成数值 writeln(f,x) p 输出 dos单元常用过程与函数 getdate p 返回系统当前日期 detftime p 返回最后一次写入的日期和时间 gettime p 返回系统当前时间 packtime p 转换系统日期和时间,封装成4个字节的长整形格式 setdate p 设置系统当前日期 setftime p 写入新的系统日期和时间,覆盖系统最后一次写入的 系统日期和时间文件 settime p 设置系统当前时间 uppacktime p 将系统日期和时间转换成纪录格式 diskfree f 返回指定磁盘可用剩余空间 disksize f 返回指定磁盘的总容量 get/setverity p 返回/设置dos状态下的磁盘读写标记 fexpand f 返回函数名的全称 fsearch f 在一个目录中查找文件 fsplit f 将一个文件名分成目录、文件名、扩展名 findfirst p 在当前目录或指定目录下查找第一个与给定属性相匹 配的文件名 3 turbo pascal基本函数过程及解释 findnext p 返回下一个满足匹配条件的文件名 getfattr p 返回文件的属性 setfattr p 设置文件属性 gerintvec p 返回某个中断变量值 intr p 执行软中断 msdos p 执行dos 系统调用 setintvec p 设定中断值 exec p 通过一个特定命令行执行特定程序段 keep p 中断程序的执行但仍驻留在内存中 swapvectors p 用当前变量交换所有中断变量值 dosexitcode f 回到子程序出口 dosversion f 显示dos版本 crt单元 assigncrt(f) p 将文本文件f与显示器crt建立联系 clreol p 清除当前行光标所在位置以后的字符 clrscr p 清除当前窗口或屏幕,光标返回到左上角 delay(t) p 等待t毫秒 delline p 清除光标所在行上所有内容 gotoxy(x,y) p 将光标移到屏幕某处 highvideo p 选择高亮度显示字符 insline p 在当前光标位置插入空行 keypressed f 测定键盘输入状态 lowvideo p 低亮度显示字符 normvideo p 选择正常文本属性从光标所在位置开始显示字符 nosound p 关闭内部扬声器 readkey p 等待从键盘输入一个字符 sound(hz) p 以hz指定的频率发声 textbackground(soor) p 设置正文背景颜色 textcolor(color) p 设置正文前景颜色 textmode p 选择特定的文本显示模式 wherex/y f 返回当前光标位置的坐标值 window(x1,y1,x2,y2) p 在屏幕定义一个文本窗口 其他单元 chain(f) p 目标程序链接 execute(f) p 执行目标程序 mark(p) p 标记动态变量 release(p) p 释放动态变量区 srtinit p 屏幕初始化 crtline p 汉字屏幕方式转换 graphbackground(color) p 选择背景色 graphcolormode p 中分辨率彩色图形方式,320*200彩色 graphmode p 中分辨率黑白图形方式,320*200黑白 graphwindow(x1,y1,x2,y2,color)p 定义图形方式窗口 hires p 高分辨率单色图形方式,640*200黑白 hirescolor(color) p 高分辨率彩色图形方式,640*200彩色 palette(color) p 中分辨率彩色图形颜色组 ovrpath(path) p 指定覆盖文件路径 draw(x1,y1,x2,y2,color) p 画线 intr(n,m) p 8086中断调用 plot(x,y,color) p 画点 random(integer) f 产生随机整数 seg(x) f 测变量段地址 colortable(c1,c2,c3,c4) p 重定义颜色组 arc(x,y,radius,color) p 画圆弧 circle(x,y,radius,color) p 画圆 getpic(buffer,x1,x2,y1,y2) p 屏幕转储到屏幕 putpic(buffer,x,y) p 缓冲器转储到屏幕 getdotcolor(x,y) p 读点 fillscreen(color) p 填充屏幕 fillshape(x,y,fillcol,bordercol) p 填充一个区域 常用数学函数 求绝对值函数abs(x) 定义:function Abs(X): (Same type as parameter); 说明:X可以是整型,也可以是实型;返回值和X的类型一致例子: 取整函数int(x) 定义:function Int(X: Real): Real; 注意:X是实型数,返回值也是实型的;返回的是X的整数部分,也就是说,X被截尾了(而不是四舍五入)例子: var R: Real; begin R := Int(123.567); { 123.0 } R := Int(-123.456); { -123.0 } end. 截尾函数trunc(x) 定义:function Trunc(X: Real): Longint; 注意:X是实型表达式. Trunc 返回Longint型的X的整数部分例子: begin Writeln(1.4, " becomes ", Trunc(1.4)); { 1 } Writeln(1.5, " becomes ", Trunc(1.5)); { 1 } Writeln(-1.4, "becomes ", Trunc(-1.4)); { -1 } Writeln(-1.5, "becomes ", Trunc(-1.5)); { -1 } end. 四舍五入函数round(x) 定义:function Round(X: Real): Longint; 注意:X是实型表达式. Round 返回Longint型的X的四舍五入值.如果返回值超出了Longint的表示范围,则出错. 例子: begin Writeln(1.4, " rounds to ", Round(1.4)); { 1 } Writeln(1.5, " rounds to ", Round(1.5)); { 2 } Writeln(-1.4, "rounds to ", Round(-1.4));{ -1 } Writeln(-1.5, "rounds to ", Round(-1.5));{ -2 } end. 取小数函数frac(x) 定义:function Frac(X: Real): Real; 注意:X 是实型表达式. 结果返回 X 的小数部分; 也就是说,Frac(X) = X - Int(_X). 例子: var R: Real; begin R := Frac(123.456); { 0.456 } R := Frac(-123.456); { -0.456 } end. 求平方根函数sqrt(x)和平方函数sqr(x) 定义:平方根:function Sqrt(X: Real): Real; 注意:X 是实型表达式. 返回实型的X的平方根. 平方:function Sqr(X): (Same type as parameter); 注意:X 是实型或整型表达式.返回值的类型和X的类型一致,大小是X的平方,即X*X. 例子: begin Writeln("5 squared is ", Sqr(5)); { 25 } Writeln("The square root of 2 is ",Sqrt(2.0)); { 1.414 }

pascal语言用来干什么呢?

沛公归来了啊~~~~~~哈哈这个问题我就不回答了。你说的也差不多了。顶~~~~~~~~~另:http://zhidao.baidu.com/question/123070591.html你这个是巧合了,正好没有组合值相等的。若果是1,2,3,5用排列组合就囧了。。。。

编程软件PASCAL怎么运行

直接按Ctr + F9 ,ALT+F5显示

Pascal属于汇编语言还是高级语言?

pascal是高级语言。delphi用的是面向对象的pascal(oopascal),它和早先的pascal是有很大区别的。如果你是想问delphi里用的pascal,那么在delphi区提问即可。

pascal命名法规则是?

帕斯卡(pascal)命名法:与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写  如:publicvoidDisplayInfo();stringUserName;二者都是采用了帕斯卡命名法.

为什么很少有人用pascal?有哪些缺点阿?

Basic容易入门,用法简单,但功能与效率都欠佳; Pascal的优点在于源程序机构性强,而且很容易看懂和理解,故用于教学为主,为以后的学习其他编程语言的算法打下基础;C语言的效率最高,但是较难; 以上几种都是面向过程的结构化程序设计语言,C++和它们不同,是面向对象的,更合适大型的应用和团队开发。大多数软件用c++编译的,同时Java现在也有开发的利处,在软件应用上较佳

Pascal 详解"指针类型"

为什么要用指针类型 以前,程序中所用的各种类型的全程变量一经说明,就在内存中占有固定不变的存贮单元,一直保持到程序结束;而各种类型的局部变量在其作用域内一经说明也占有固定不变的存贮单元,直至退出作用域为止,这类变量不能在执行时随时分配存贮单元,也不能在不使用时将已占用的存贮单元释放掉,因而称为静态变量。静态变量在其存贮分配时具有一定局限性,例如程序中使用的数组必须一开始在说明时确定元素个数,如果数组定义太大,会浪费存贮空间,定义太小,则又会出现下标越界的错误。 Pascal提供了一种称为指针的类型,在程序执行时,通过指针实现动态存贮的目的。 第一节 动态变量 一 定义指针类型 在Pascal中,指针变量中存放的某个存贮单元的地址,即指针变量指向某个存贮单元。一个指针变量仅能指向某一种类型的存贮单元,这种数据类型是在指针类型的定义中确定的,称为指针类型的基类型。指针类型定义形式如下: 类型名=基类型名; 例如: type intepter=^integer; var p,q,r:intepter; 说明:intepter是一指向整型存贮单元的指针类型,其中“^”为指针符。p,q,r 均定义为指针变量,分别可以指向一个整型存贮单元。 上例也可定义为: var p,q,r:^integer; 指针也可指向有结构的存贮单元,例如: type person=record name:string[10]; sex:(male,female); age:20..60 end; var pts:^person; pts为指向记录类型person的指针变量。 二 动态变量 引用一个指针指向的动态存贮单元即动态变量的形式如下: 指针变量名^ 例如: p^、q^、r^等等。 指针变量p与它所指示的动态变量p^之间的关系可用下图表示: 以下语句可把整数5存放到p所指向的动态变量p^中去: p^:=5; 下列语句则可把p所指向的p^中的值赋给整型变量i中去: i:=p^; 如果指针变量p并未指向任何存贮单元,则可用下列赋值语句: p:=Nil; 其中Nil是Pascal保留字,表示“空”的意思,为唯一的一个指针类型常量。 第二节 对动态变量的操作 一 动态变量的建立和撤消 在Pascal程序中,动态变量不能由var定义而是通过调用标准过程new建立的。过程形式为: new(指针变量名); 如果有下列变量定义语句: var p:^integer; 仅说明了p是一个指向整型变量单元的指针变量,但这个整型单元并不存在,在指针变量p中尚没有具体的地址值。在程序中必须通过过程调用语句: new(p); 才在内存中分配了一个整型变量单元,并把这个单元的地址放在变量p中,一个指针变量只能存放一个地址。在同一时间内一个指针只能指向一个变量单元。当程序再次执行new(p)时,又在内存中新建立了一个整型变量单元,并把新单元的地址存放在p中,从而丢失了老的变量单元的地址。 为了节省内存空间,对于一些已不使用的现有动态变量,应该使用标准过程dispose予以释放。过程形式为: dispose(指针变量名); 为new(指针变量名)的逆过程,其作用是释放由指针变量所指向的动态变量的存贮单元。 例如在用了new(p)后再调用dispose(p),则指针p所指向的动态变量被撤消,内存空间归还Pascal系统可作它用,这时p的值为Nil。 二 程序举例 1. 输入两个整数,要求先打印大数后打印小数的方式输出。 program ex11_1; type intepter=^integer; var p1,p2: intepter; procedure swap(var q1,q2: intepter); var p: intepter; begin p:=q1; q1:=q2; q2:=p; end; {swap} begin new(p1); new(p2); write("Input two data: "); readln(p1^ ,p2^ ); if p1^ <p2^ then swap(p1, p2); writeln("Output two data: ",p1^ :4, p2^ :4); end. 程序中用指针p1和p2指向整型动态变量p1^和p2^,当p1^的值小于p2^的值时,就执行过程swap(p1,p2),使p1总指向大数单元,在过程中所交换的是两个存贮单元的地址,而两个存贮单元中的值并未改变。 2. 输入n个字符串,请按从小到大的顺序打印输出字符串。 type str=string[20]; var s:array[1..11] of ^str; i,j,n:integer; begin write(‘n(<=10)=");readln(n); for i:=1 to n+1 do new(s[i]); for i:=1 to n do readln(s[i] ^); for i:=1 to n-1 do for j:=i+1 to n do if s[i] ^>s[j] ^ then begin s[11]:=s[i]; s[i]:=s[j]; s[j]:=s[11] end; for i:=1 to n do writeln(s[i] ^); end. 同例1一样,过程swap只是交换了p1,p2中的地址值,但并未改变指向的字符串变量的值。这种方式的交换避免了大量字符串移动的操作,从而能提高程序运行的效率。 写出下列程序的结果: 1. type pt= ^integer; var p1,p2: pt; begin new (p1); p1^:=5; p2 :=p1; new(p2); p2^:=5; if p1=p2 then writeln(‘p1=p2") else writeln(‘p1<> p2"); if p1^ =p2^ then writeln(‘p1^=p2^") else writeln(‘p1^<>p2^"); end. 2. type pt= ^integer; var p1,p2: pt; begin new (p1); p1^:=5; p2 :=p1; new(p2); p2^:=5; if p1=p2 then writeln(‘p1=p2") else writeln(‘p1<> p2"); if p1^ =p2^ then writeln(‘p1^=p2^") else writeln(‘p1^<>p2^"); end. 写出下列程序的结果: (1) var p1,p2,p3:^integer; begin new(p1); p1^:=5; new(p2); p2^:=8; p1^:=p1^+p2^; writeln(p1^:8,p2^); end. (2) var p1,p2,p3:^integer; begin new(p1); new(p2); p1^:=9; p2^:=5*(p1^ mod 5); p3:=p1;p1:=p2;p2:=p3; writeln(p1^:6,p2^:6,p3^); end. (3) type rec=record a:integer; b:char; end; var p1,p2:^rec; begin new(p1); new(p2); p1^.a:=90; p1^.b:="B"; p2^.a:=100;p2^.b:="C"; p1:=p2; writeln(p1^.a:6,p2^.a); end. 指针练习 例1:设有类型定义和变量说明: type link=^integer; var p1,p2:link; n:integer; 以下过程首部: procedure p1(var p:link;I,j:integer); 则合法的调用过程是 。 A. p1(p1^,p2,n); B. p1(p1,p2^,3); C. p1(p1,p2,2.0); D. p1(p1^,p2^,n); 例2:指针变量的基类型不能是 。 A.顺序类型 B.构造类型 C.实数类型 D.指针类型 例3:下面的类型定义正确的是 。 A. type Link=^p; P=record Name:packed array [1..100] of char; Next:^p; End; B. type Link=^p; P=record Name:packed array [1..100] of Boolean; Next:^link; End; C. type Link=^p; P=record Name:packed array[1..100] of real; Next:link; End; D. type P=record Name:packed array [1..100] of integer; Next:link Link=^p; End; 例4:设有说明VAR p1,p2:^integer;若在内存中开辟两个存储单元,并使其内容均为1,则应采用的语句组为 。 A. p1^:=1;p2^:=1; B. new(p2);p1^:=1;p2:=p1; C. new(p1);p1^:=1;new(p2);p2^:=1; D. new(p1);p1^:=1;p2^:=p1^; 例5:设有变量说明如下: var p,q:^integer; s:array [2..19] of integer; 则下面的 语句是合法的。 A. p^:=5;q^:=7;s[p]:=q; B. p^:=5;q^:=7;s[p]:=q^; C. p^:=5;q^:=7;s[p^]:=q; D. p^:=5;q^:=7;s[p^]:=q^; 例6:设有说明: var p1,p2:^integer; 则下面程序段的运行结果是 。 new(p1); p1^:=5; p2:=p1; new(p1); p1^:=p2^+3; writeln(p1^,p2^); 作业:(h6041401) 1. 设有类型定义和变量说明: type t=^integer; var p,q:t; 以下过程首部: procedure pr(a:integer;q:t); 则合法的调用过程是 。 A. pr(p,q); B. pr(p^,q^); C. pr(p^,q); D. pr(p,q^); 3. program allie(output); type p=^integer; var p1,p2:p; begin new(p1); p1^:=4; p2:=p1; new(p2); p2^:=4; if p1=p2 then writeln("p1=p2") else writeln("p1<>p2") if p1^=p2^ then writeln("p1^=p2^) else writeln("p1^<>p2^") end. 程序运行结果为 。 A. p1<>p2 p1^=p2^ B. p1=p2 p1^=p2^ C. p1=p2 p1^<>p2^ E. p1<>p2 p1^<>p2^ 4. program pro(input,output); var p1,p2,p3:^integer; begin new(p1); new(p2); p1^:=783 mod 10+round(2.91); p2^:=p1^ div 3+2; p3:=p1;p1=p2;p2:=p3 writeln(p1^:5,p2^:5,p3^:5); end. 5. 设有以下说明 var n:integer; p,q:^integer; 且各变量已赋值,则以下语句不合法的是 。 a.q:=p b.p:=n c.p^:=q^ d.n:=p^ 11. 设有说明var p1,p2:^integer;若p1,p2已建立,且有赋值语句p1^:=10;p2^:=20;用矩形表示内存单元,矩形框内数字表示内存单元内容,则实现如图所示的操作可用赋值语句 。 A.p1^:=p2^ B.p1:=p2 C.p1:=p2^ D.p1^:=p2 14. program s(input,output); var p1,p2,p3:^integer; begin new(p1);new(p2); p1^:=5 p2^:=p1^ mod 2; if p1^<>p2^ then p3:=p1 else p3:=p2; writeln(p1^,p2^,p3^) end. 运行结果 。 A.515 B.511 C.121 D.522 第十届全国青少年信息学奥林匹克联赛复赛试题 ( 提高组 )津津的储蓄计划 (save.pas/dpr/c/cpp) 【问题描述】 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。 例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。 津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。 现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。 【输入文件】 输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。 【输出文件】 输出文件save.out包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。 【样例输入1】 290 230 280 200 300 170 340 50 90 80 200 60 【样例输出1】 -7 【样例输入2】 290 230 280 200 300 170 330 50 90 80 200 60 【样例输出2】 1580 回答者:zjh777007 - 助理 二级 11-9 13:1310.1 指针的动态变量 1.定义指针类型 在Turbo Pascal中,指针变量中存放的某个存储单元的地址,即指针变量指向某个存储单元。一个指针变量仅能指向某一种类型的存储单元,这种数据类型是在指针类型的定义中确定的,称为指针类型的基类型。指针类型定义如下: 类型名=^基类型名; 例如:type q=^integer; var a,b,c:q; 说明q是一指向整型存储单元的指针类型,其中"^"为指针符。a,b,c均定义为指针变量,分别可以指向一个整型存储单元。 上例也可定义为: var a,b,c:^integer; 指针也可以指向有结构的存储单元。 例如:type person=record name:string[10]; sex:(male,female); age:20..70 end; var pt:^person; pt为指向记录类型person的指针变量。 2.动态变量 应用一个指针指向的动态存储单元即动态变量的形式如下: 指针变量名^ 例如:p^、q^、r^ 指针变量p和它所指向的动态变量^p之间有如下关系: 以下语句把整数5存放到p所指向的动态变量p^ 中去: p^:=5; 以下语句把p所指向的p^中的值赋给整型变量i: i:=p^; 如果指针变量p并未指向任何存储单元,则可用下列赋值语句: p:=nil; 其中nil是Turbo Pascal保留字,表示“空”,相当于C里面的null 10.2 对动态变量的操作 在Turob Pascal程序中,动态变量不能由var直接定义而是通过调用标准过程new建立的。过程形式为: new(指针变量名); 如果有下列变量定义语句: var p:^integer; 仅仅说明了p是一个指向整型变量单元的指针变量,但这个整型单元并不存在,在指针变量p中还没有具体的地址值。在程序中必须通过过程调用语句:new(p);才在内存中分配了一个整型变量单元,并把这个单元的地址放在变量p中,一个指针变量只能存放一个地址。在同一时间内一个指针只能指向一个变量单元。当程序再次执行new(p)时,又在内存中新建立了一个整型变量单元,并把新单元的地址存放在p中,从而丢失了旧的变量单元的地址。 为了节省内存空间,对于一些已经不使用的现有动态变量,应该使用标准过程dispose予以释放。过程形式为:dispose(指针变量名);为new(指针变量名)的逆过程,其作用是释放由指针变量所指向的动态变量的存储单元。例如在用了new(p)后在调用dispose(p),则指针p所指向的动态变量被撤销,内存空间还给系统,这时 p的值为 nil。 例:输入两个数,要求先打印大数后打印小数的方式输出,用动态变量做。 program dongtai; type intepter=^integer; var p1,p2:intepter; procedure swap(var,q1,q2:intepter); var p:integer; begin p:=q1;q1:=q2;q2:=p; end; begin new(p1);new(p2); writeln("input 2 data: ");readln(p1^,p2^); if p1^<p2^ then swap(p1,p2); writeln("output 2 data: ",p1^:4,p2^:$);

pascal 语言怎么样?

pascal语言是编译型的、面向过程的高级程序设计语言。主要特点是结构化,容易理解,适合0基础的初学者,是OI的首选,但实用价值不大。学会以后转型到delphi,C++(这两种语言都是面向对象的)等实用的语言容易些。

pascal矩阵

const max=100;var a:array[1..max,1..max]of longint; n,i,j,sum,m,mm:longint;begin readln(n); i:=1;j:=1;m:=n;mm:=1; while sum<>n*n do begin for i:=mm to m do begin inc(sum); a[i,j]:=sum; if sum=n*n then break; end; for j:=mm+1 to m do begin inc(sum); a[i,j]:=sum; if sum=n*n then break; end; for i:=m-1 downto mm do begin inc(sum); a[i,j]:=sum; if sum=n*n then break; end; for j:=m-1 downto mm+1 do begin inc(sum); a[i,j]:=sum; if sum=n*n then break; end; dec(m);inc(mm); end; for j:=1 to n do begin for i:=1 to n do write(a[i,j]:4); writeln; end; readln;end.

free pascal 是什么

Free Pascal是个由国际组织开发的完全的win32的pascal语言编译器,类似delphi,可编写windows程序; Free Pascal是一个32位的编译器,是一个跨平台的编译器;

PASCAL怎么下载

http://www.freepascal.org/down/i386/win32.var

PASCAL中inc是什么意思

inc就是和+1一样

谁有的pascal语言的网站

pascal1、关于TurboPascalPascal是一种计算机通用的高级程序设计语言。它由瑞士NiklausWirth教授于六十年代末设计并创立。以法国数学家命名的Pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有:严格的结构化形式;丰富完备的数据类型;运行效率高;查错能力强。正因为上述特点,Pascal语言可以被方便地用于描述各种算法与数据结构。尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。在Pascal问世以来的三十余年间,先后产生了适合于不同机型的各种各样版本。其中影响最大的莫过于TurboPascal系列软件。它是由美国Borland公司设计、研制的一种适用于微机的Pascal编译系统。该编译系统由1983年推出1.0版本发展到1992年推出的7.0版本,其版本不断更新,而功能更趋完善。下面列出TurboPascal编年史出版年代版本名称主要特色1983TurboPascal1.0TurboPascal2.0Turbo-87Pascal提高实数运算速度并扩大值域1985TurboPascal3.0增加图形功能TurboBCDPascal特别适合应用于商业1987TurboPascal4.0提供集成开发环境(IDE),引入单元概念1988TurboPascal5.0增加调试功能1989TurboPascal5.5支持面向对象的程序设计(OPP)1990TurboPascal6.0提供面向对象的应用框架和库(TurboVision)1992TurboPascal7.0面向对象的应用系统、更完善的IDETurboVision2.01993BorlandPascal7.0开发ObjectWindows库、__(ForWindows)提供对OLE多媒体应用开发的支持1995DelphiVisualPascalTurboPascal语言是编译型程序语言,它提供了一个集成环境的工作系统,集编辑、编译、运行、调试等多功能于一体ps:高级语言发展过程中,PASCAL是一个重要的里程碑。PASCAL语言是第一个系统地体现了E.W.Dijkstra和C.A.R.Hoare定义的结构化程序设计概念的语言。1971年,瑞士联邦技术学院尼克劳斯·沃尔斯(N.Wirth)教授发明了另一种简单明晰的电脑语言,这就是以电脑先驱帕斯卡的名字命名的PASCAL语言。PASCAL语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。它一出世就受到广泛欢迎,迅速地从欧洲传到美国。沃尔斯一生还写作了大量有关程序设计、算法和数据结构的著作,因此,他获得了1984年度“图灵奖”。Pascal有5个主要的版本,分别是UnextendedPascal、ExtendedPascal、Object-OrientedExtensionstoPascal、BorlandPascal和DelphiObjectPascal。其中,UnextendedPascal、ExtendedPascal和Object-OrientedExtensionstoPascal是由Pascal标准委员会所创立和维护的,UnextendedPascal类似于瑞士NiklausWirth教授和K.Jensen于1974年联名发表的Pascal用户手册和报告,而ExtendedPascal则是在其基础上进行了扩展,加入了许多新的特性,它们都属于正式的Pascal标准;Object-OrientedExtensionstoPascal是由Pascal标准委员会发表的一份技术报告,在ExtendedPascal的基础上增加了一些用以支持面向对象程序设计的特性,但它属于非正式的标准。BorlandPascal和DelphiObjectPascal是由Borland公司专门为其开发的编译工具设计的Pascal语言,前者是用于DOS的TurboPascal系列和Windows3.x的TurboPascalforWindows的传统高级语言,后者是用于Windows的Delphi和Linux的Kylix的面向对象程序设计语言,它们都不是正式的Pascal标准,具有专利性。但由于TurboPascal系列和Delphi功能强大并且广为流行,BorlandPascal和DelphiObjectPascal已自成为一种标准,为许多人所熟悉。在中国的信息学奥林匹克竞赛中,过去比较常用的Pascal编程工具是TurboPascal。TurboPascal是DOS下的一种16位编程工具,在Delphi出现之前,它是世界上最多人使用的Pascal编程工具,拥有编译速度极快的先进编译器和功能强大而又简便易用的集成开发环境(IDE),在微机程序员中广为流行,正是它的出现奠定了Pascal在DOS/Windows平台上不可动摇的根基,现在常见的版本有TurboPascal5.5、TurboPascal6.0和BorlandTurboPascalwithObjects7.0。TurboPascal6.0与TurboPascal5.5相比,主要是IDE更为强大,而其程序设计功能改变不大,只是增加了一些新的功能,例如可以内嵌asm汇编语句等。而BorlandTurboPascalwithObjects7.0(简称BorlandPascal7.0)则有了新的飞跃,首先是IDE进一步加强,提供了程序浏览器,然后是程序设计功能有了很大的提升,新增了一些十分有用的标准子程序,支持比较完善的面向对象程序设计功能,并提供了DOS实模式、DOS保护模式和Windows模式三种程序编译模式,能够编写出可以使用扩充内存(XMS)的保护模式应用程序或者在Windows3.x下运行的Windows程序,另外还提供了一个对象窗口库(OWL),使用它可以快速的开发出具有一致的视窗界面(DOS或Windows3.x)的应用程序。BorlandPascal7.0在1992年推出,是TurboPascal系列在DOS下的最后版本。现在,随着TurboPascal逐渐被淘汰,全国信息学奥林匹克竞赛决赛(NOI)和国际信息学奥林匹克竞赛(IOI)已经指定FreePascal为比赛使用的Pascal编程工具。FreePascal是由一个国际组织开发的32位Pascal编程工具,属于共享软件,可用于各种操作系统。根据编译选项的不同,它可以使用BorlandPascal兼容语法、Delphi2ObjectPascal语法或者其它语法进行编写程序。由于它拥有32位的编译器,而且一直在更新发展中,因此它的功能比BorlandPascal更加强大,拥有许多现代程序设计的特征,但同时也很不成熟,存在很多漏洞。FreePascal正处于发展初期,相应的函数库十分少,对程序员的吸引力远比不上拥有VCL和CLX的Delphi和Kylix。2、帕斯卡(Pascal,Blaise,1623年6月19日-1662年8月19日)是法国数学家、物理学家、思想家。生於克莱蒙费朗,早逝於巴黎。父亲是数学家、“梅森学会”成员,对他的早期教育影响很大。他自幼聪颖,求知欲极犟,12岁始学几何,即通读欧几里得(Euclid)的《几何原本》(Elements)并掌握了它。16岁时发现著名的帕斯卡六边形定理:内接於一个二次曲_的六边形的三双对边的交点共_。据说他后来由此推出400多条推论。17岁时写成《圆锥曲_论》(1640),是研究德札尔格(GirardDesargues)射影几何工作心得的论文,包括上述定理。这些工作是自希腊阿波罗尼奥斯(ApolloniusofPerga)以来圆锥曲_论的最大进步。1642年他设计并制作了一台能自动进位的加减法计算装置,被称为是世界上第一台数字计算器,为以后的计算机设计提供了基本原理。1654年他开始研究几个方面的数学问题,在无穷小分析上深入探讨了不可分原理,得出求不同曲_所围面积和重心的一般方法,并以积分学的原理解决了摆_问题,於1658年完成《论摆_》。他的论文手稿对莱布尼茨(GottfriedLeibniz)建立微积分学有很大启发。在研究二项式系数性质时,写成《算术三角形》向巴黎科学院提交,后收入他的全集,并於1665年发表。其中给出的二项式系数展开后人称为“帕斯卡三角形”,实际它已在约1100年由中国的贾宪所知。在与费马(PierreFermat)的通信中讨论赌金分配问题,对早期概率论的发展颇有影响。他还制作了水银气压计(1646),写了液体平衡、空气的重量和密度等方向的论文(1651-1654)。自1655年隐居修道院,写下《思想录》(1658)等经典著作。

pascal中怎样声明过程、函数

加向前引用声明,例如在过程A中要调用A之后的过程B则在A的定义之前加上 如下语句:PROCEDURE b(x:real;VAR y:real); FORWARD;并将原来B的头部改为如下形式:PROCEDURE b;即可详细资料请参阅以下网页。

pascal属于高级语言吗

它肯定是属于高级语言的。

Pascal的快排代码

假设数组a中有k个元素按升序排列: for t:=1 to k-1 do for i:=1 to k-1 do if a[i]>a[i+1] then begin c:=a[i]; a[i]:=a[i+1]; a[i+1]:=c; end; 假设数组a中有k个元素按降序排列: for t:=1 to k-1 do for i:=1 to k-1 do if a[i]<a[i+1] then begin c:=a[i]; a[i]:=a[i+1]; a[i+1]:=c; end;函数名等楼主就自己加吧

pascal所有数据类型有哪些?

标准类型:integer,real,char,boolean,text.x0dx0ax0dx0areal 实数x0dx0ainteger 整数x0dx0alongint 长整型x0dx0ashortint 短整型x0dx0aint64 超长整型x0dx0asingle 单精度x0dx0adouble 双精度x0dx0achar 单个字符x0dx0astring 字符型x0dx0aansistring 内存字符型x0dx0aint64 -2^63-2^63-1的整数类型x0dx0aqword 无符号的整型(0~2^64-1)

Pascal如何定义数组

这个有一点点小问题"n=10"后面好像应该加分号吧。其中n必须是常量且不能后来确定(但你可以把n的值定大一点),string是字符串。

pascal命名法规则是什么?

帕斯卡(pascal)命名法:与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写  如:public void DisplayInfo(); string UserName; 二者都是采用了帕斯卡命名法.

如何用pascal产生文件?

文件的概念 文件是一种构造型的数据类型。在程序中都需要产生一些输出,也需要接受若干个输入。这些输入、输出实际上是用文件的方法来实现的,在Pascal中用标准文件“input”和“output”来实现,它们分别对应标准输入设备和标准输出设备。这也就是一些程序的程序书写如下的原因了:   program exp(input,output);(可省略不写)   ... 但有时大量数据的读入和输出都是来自磁盘文件,这就要求必须熟练掌握对磁盘文件的操作。  Pascal中的文件主要用于存放大量的数据。如:成绩管理,原始数据很多,使用文件先将其存入磁盘,通过程序读出文件中的数据再进行处理,比不使用文件要来得方便、有效。它的名字就是文件名。使用文件有以下几点好处:  (1)文件可以永久保存,其中的数据不会因为应用程序的结束或关机而消失。  (2)文件中的数据可以为多个应用程序所共享。  (3)文件中的数据可以多次重复使用。  (4)文件中的存放数据的数量在理论上没有限制。 Pascal中所谈及的文件,称之为内部文件。内部文件的特点是文件的实体(实际文件)也是存储在外存储器上,成为外部文件的一分子,但在使用时必须在程序内部以一定的语句与实际文件联系起来,建立一一对应的关系,用内部文件的逻辑名对实际文件进行操作。内部文件的逻辑名必须符合Pascal语言标识符的取名规则。  在Pascal语言中,文件是由一系列基本数据元素排列而成的,这些数据元素的数据类型是相同的,但通常有不同的取值。文件的基本数据元素的数据类型称为文件的基类型。文件中所含的数据元素的个数称为文件的长度。文件的长度和文件所占有的字节数可能不同。文件中元素的个数即文件的长度不是固定不变的。用于暂时存放文件中的数据的内存区称为文件缓冲区。对于文件的操作至少要由以下5个过程:  (1)说明文件类型,定义文件标识符;  (2)建立内部文件与外部文件的联系;  (3)打开文件;  (4)对文件进行操作;  (5)关闭文件。  按照对文件的读写方式,可以把文件分为顺序文件和随机文件。顺序文件的特点是对文件的读或写操作都只能按文件中元素的顺序,所以顺序文件的读和写不能交叉进行。随机文件的特点是可以直接对文件中某个元素进行读或写,而不需要先对它前面的元素作相同的操作。对于随机文件的读和写可以交叉进行。  Pascal语言中,按照文件的存储方式可以把文件分为文本文件和类型文件。若文件中的数据都是以ASCII码形式存储的,则这种文件称为文本文件。若文件中的数据都是以非ASCII码形式存储的,则这种文件称为类型文件。Pascal中文本文件都是顺序文件,类型文件都是随机文件。 文本文件  文本文件又称为正文文件或行文文件,可以直接阅读,是人机通信的基本数据形式之一。文本文件的内容由ASCII字符集中的字符组成,因此文本文件也称ASCII码文件。文本文件具体是由一系列行组成,每一行可以包括0个或多个字符型成分,并以行结束符结尾。文本文件可用文字编辑程序(如Free Pascal的编辑窗口中或记事本中)直接建立、阅读和修改, 也可以由Pascal程序在运行过程中建立。 一、文本文件的定义  文本文件的类型为text,它是由ASCII字符组成的,是Pascal提供的标准文件之一。标准文件text已由Pascal说明如下:type text=file of char;因此,同标准类型integer、real等一样可以直接用于变量说明之中,无需再由用户说明。 例如:  var f1,f2:text;  这里定义了两个文本文件变量f1和f2。 二、文本文件的建立  文本文件的建立有两种方法:一是直接用Free Pascal的Edit建立原始数据文件;二是用程序的方式建立中间数据或结果数据文件。 例如将下表中的数据存入名为A.dat的文件中。  3 4  29 30 50 60  80 90 70 75  60 50 70 45  操作步骤:进入Free Pascal的编辑状态;输入数据;存盘,文件名取A.dat。  此时,已将数据存入文本文件A.dat中。文本文件也可用记事本等文本编辑器在windows下建立。  如果用程序的方式建立文件,操作步骤为:  1、定义文本文件变量;  2、把一外部文件名赋于文本文件变量,使该文本文件与相应外部文件相关联;  命令格式:assign(f,name)  f为定义的文本文件变量,name为实际文件文件名  如:assign(f1,"filein.in") {相对路径}  或:assign(f1,"d:pasfileout.out") {绝对路径}  这样在程序中对文本文件变量f1的操作,也就是对外部实际文件"filein.in"或"fileout.out"的操作。上例中文件"filein.in"是存贮在当前目录中,而文件"fileout.out"则是存贮在d:pas子目录中。  3、打开文本文件,写准备;  命令格式:rewrite(f)  功能:创建并打开新文件准备写,若已有同名文件则删除再创建。  4、对文件进行写操作;  命令格式:write(f,<项目名>)或:writeln(f,<项目名>)  功能:将项目内容写入文件f中  5、文件操作完毕后,关闭文件。  命令格式:close(f) 例11.1 从键盘输入下列数据,然后用程序写入名为B.dat的文件中。 3 4  29 30 50 60  80 90 70 75  60 50 70 45 program exp11_1; var i,j,n,m,x:integer; f:text; begin write("n,m="); readln(n,m); assign(f,"b.dat"); rewrite(f); writeln(f,n," ",m); for i:=1 to n do begin for j:=1 to m do begin read(x); write(f,x," "); end; readln;writeln(f); end; close(f); end. 三、读取文本文件   文本文件内容读取操作步骤:  1、定义文本文件变量;  2、用assign(f,name)命令,将内部文件f与实际文件name联系起来;  3、打开文本文件,读准备;  命令格式:reset(f)  功能:打开一个已经存在的磁盘文件,该文件只能读,指向文件元素的指针指向第一个元素。 4、对文件进行读操作;  命令格式:read(f,<变量名表>) 或readln(f,<变量名表>)  功能:读文件f中指针指向的数据于变量中。  5、文件操作完毕,用close(f)命令关闭文件。 例11.2 读出例1生成的文本文件B.dat中的内容,并输出到屏幕。 program exp11_2; var i,j,n,m,x:integer; f:text; begin assign(f,"b.dat"); reset(f); read(f,n,m); writeln(n," ",m); for i:=1 to n do begin for j:=1 to m do begin read(f,x); write(x," "); end; writeln; end; close(f); readln end. 由于文本文件是以ASCII码的方式存储,故查看文本文件的内容是极为方便,在windows状态可使用记事本等软件进行查看,在Free Pascal中可以象取程序一样取出文件进行查看。 四、文本文件的特点  1、行结构  文本文件由若干行组成,行与行之间用行结束标记隔开,文件末尾有一个文件结束标记。由于各行长度可能不同,所以无法计算出给定行在文本文件中的确定位置,从而只能顺序地处理文本文件,而且不能对一文本文件同时进行输入和输出。  2、自动转换功能  文本文件的每一个元素均为字符型,但在将文件元素读入到一个变量(整型,实型或字符串型)中时,Pascal会自动将其转换为与变量相同的数据类型。与此相反在将一个变量写入文本文件时,也会自动转移为字符型。 五、例题分析 例11.3 某学习小组有10人,参加某次测验,考核6门功课, 统计每人的总分及各门的平均分,将原始数据及结果数据放入文本文件中。  分析  (1)利用Free Pascal的edit建立原始数据文件textin.txt存贮在磁盘中,其内容如下:  10 6  1 78 89 67 90 98 67  2 90 93 86 84 86 93  3 93 85 78 89 78 98  4 67 89 76 67 98 74  5 83 75 92 78 89 74  6 76 57 89 84 73 71  7 81 93 74 76 78 86  8 68 83 91 83 78 89  9 63 71 83 94 78 95  10 78 99 90 80 86 70  (2)程序读入原始数据文件,求每人的总分及各门的平均分;  (3)建立结果数据文件,文件名为textout.txt。 program exp11_3; var f:text; i,j,n,m,s:integer; data:array[1..11,0..7] of integer; p:array[1..6] of integer; procedure data_in; var i,j:integer; begin assign(f,"textin.txt"); reset(f); read(f,n);readln(f,m); for i:=1 to n do for j:=0 to m do read(f,data[i,j]); close(f); end; procedure data_out; var i,j:integer; begin assign(f,"textout.txt"); rewrite(f); for i:=1 to n do begin for j:=0 to m+1 do write(f,data[i,j]:4); writeln(f); end; write(f," "); for j:=1 to m do write(f,p[j]:4); writeln(f); close(f); end; begin data_in; fillchar(p,sizeof(p),0); for i:=1 to n do begin s:=0; for j:=1 to m do begin s:=s+data[i,j]; p[j]:=p[j]+data[i,j]; end; data[i,m+1]:=s; end; for i:=1 to n do begin for j:=0 to m+1 do write(data[i,j]:4); writeln; end; write(" "); for j:=1 to m do begin p[j]:=p[j] div n; write(p[j]:4); end; writeln; data_out; end. 例11.4 读入一个行长不定的文本文件。排版,建立一个行长固定为60个字符的文件, 排版要求:(1)当行末不是一个完整单词时,行最后一个字符位用"-"代替, 表示与下一行行头组成完整的单词;(2)第一行行头为两个空格,其余各行行头均不含有空格。  分析  (1)建立原始数据文件。  (2)程序边读入原始数据文件内容,边排版。因为行长和文件长度不固定,所以要使用下面函数: eoln函数  形式:eoln(f);  功能:若文件指针指向行结束符或文件结束符,则返回true,否则返回false。 eof函数  形式:eof(f);  功能:若文件指向文件尾,则返回true,否则返回false。  (3)每排完一行行长为60字符,并符合题中排版条件,写入目标文件中。  设原始数据copy.in文件内容如下:  Pavel was arrested.  That dat Mother did not light the stove.  Evening came and a cold wind was blowing.  There was a knock at the window.  Then another.  Mother was used to such knocks,but this time she gave a little start of joy.  Throwing a shawl over her shoulders,she opened the door. program exp11_4; const maxlen=60; var f1,f2:text; ch,ch1:char; s:string[maxlen]; i,j:integer; inname:string[20]; begin write("enter textin filename"); readln(inname); assign(f1,inname); reset(f1); assign(f2,"copy.out"); rewrite(f2); j:=0;s:=" "; while not eof(f1) do begin while not eoln(f1) do begin inc(j); read(f1,ch); if j=maxlen+1 then case ch of " ":begin writeln(f2,s);s:="";j:=0; end; ".":begin writeln(f2,s);j:=1;s:=ch; end else begin ch1:=s[60]; if s[59]=" " then s[60]:=" " else s[60]:="-"; writeln(f2,s);j:=2;s:=ch1+ch; end; end else s:=s+ch; end; readln(f1); end; writeln(f2,s); close(f1); close(f2); end. 对copy.in文本文件运行程序得到排版结果文件copy.out内容如下:    Pavel was arrested.That dat Mother did not light the stov-  evening came and a cold wind was blowing.There was a knock  at the window.Then another.Mother was used to such knocks,b-  ut this time she gave a little start of joy.Throwing a shawl  over her shoulders,she opened the door.

Pascal和C的问题

语法差别也不大都差不多

pascal和java、C之间的关系

Pascal是一门面向过程的语言。与C语言在同一等级上。二者的区别在于:书写C语言更像再写数学。而写Pascal更像在用英文写文章。比如C中的花括号,在Pascal中用 Begin End。Pascal不区分大小写。Pascal常用语教学。有些高中,大学都用它。国际一些算法比赛同时允许C和Pascal作为算法描述语言。同时,Delphi采用了Pascal的语法,并加入了对面向对象的支持。如果是要找工作,那么建议你学Java。因为需求量大。目前很多公司用Delphi开发的系统都迁移到了Java。招聘Delphi程序员的公司很少。相对Java薪水也少。如果是大学生,建议先学C再学Java,这样学得更透彻。如果是大学以下,建议直接学习Java入门经典《Thinking in Java》中文版http://wenku.baidu.com/view/f0ab6408581b6bd97f19ea46.html

关于pascal的文件类型

一般竞赛用的规格是 var 里面不定义输入输出文件变量在主程序里这样写 assign(input,"###.in");reset(input);assign(output,"###.out");rewrite(output);结尾加上close(input);close(output);

pascal所有数据类型

byte (字节型) shortint(短整型) integer(标准型) word(字型) longint(长整型) int64(64位长整型) real(实型)char(字符型) string(字符串型)boolean(布尔型 true or false)

pascal类型转换函数大全

IntToStr function 整型->字符串型函数原型: function IntToStr(Value: Integer): string; overload; function IntToStr(Value: Int64): string; overload;StrToBool function 字符串型->布尔型函数原型: function StrToBool(const S: string): Boolean;StrToDate function 字符串型->日期时间型函数原型: function StrToDate(const S: string): TDateTime; overload; function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime; StrToFloat function 字符串型->浮点型函数原型: function StrToFloat(const S: string): Extended; overload; function StrToFloat(const S: string; const FormatSettings: TFormatSettings): Extended; StrToInt function 字符串型->整型函数原型: function StrToInt(const S: string): Integer;FloatToStr function 浮点型->字符串型函数原型: function FloatToStr(Value: Extended): string; overload; function FloatToStr(Value: Extended; const FormatSettings: TFormatSettings): string;

pascal编译系统属于什么

pascal编译系统属于编程语言。它由瑞士Niklaus Wirth教授于六十年代末设计并创立的。Pascal语言语法严谨,层次分明,程序易写,可读性强,是第一个结构化编程语言。Pascal语言广泛用于各种软件,程序分为名称(program后自拟)、设置(var后规定)、开始(begin)、程序(正文)、读取(read/read ln)、结束(end),结构层次强,严谨而又紧密。具有丰富的数据类型和简洁灵活的操作语句。高级语言发展过程中,Pascal是一个重要的里程碑。Pascal语言是第一个系统地体现了E.W.Dijkstra和C.A.R.Hoare定义的结构化程序设计概念的语言。扩展资料Pascal强调的结构化编程带来了非结构化语言如Fortran之流无法比拟的美和乐趣,Unix崇尚的“小即是美”、“没有消息就是好消息”。正因为上述特点,Pascal语言可以被方便地用于描述各种算法与数据结构。尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。IOI(国际信息学奥林匹克竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)把Pascal语言和c语言、c++语言作为竞赛使用程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。高级语言发展过程中,PASCAL是一个重要的里程碑。1971年,瑞士联邦技术学院尼克劳斯·沃尔斯(N.Wirth)教授发明了另一种简单明晰的电脑语言,这就是以电脑先驱帕斯卡的名字命名的PASCAL语言。PASCAL语言语法严谨,编程语言。沃尔斯一生还写作了大量有关程序设计、算法和数据结构的著作,因此,他获得了1984年度“图灵奖”。

C语言与pascal的语法对比

c在性能上优于pascal,语言也相对简洁,但学起来也更有难度,相比起来pascal容易掌握.其实只要掌握了一门语言,再去学别的语言都会比较容易的.

pascal分布是什么

pascal分布没听过,不过如果是X1,...,Xn是来自服从几何分布Geo(p)的独立同分布样本,Y=X1+...+Xn服从负二项分布P{Y=k}=(1-p)^n*p^(n+k-1)*(n+k-1中取n)(n+k-1中取n)就是有n+k-1个物品,不分次序地取出n个的方法数量证明可以用拉普拉斯变换pascal分布应该就是我说的负二项分布了,名字不同而已

入门PASCAL语言,很想知道它与其他语言的区别。

我高中的时候为了参加信息学奥赛才学的pascal,可惜没拿到什么成绩。总的来说,pascal是一种高级编程语言,是第一个结构化的编程语言,Pascal语言可以被方便地用于描述各种算法与数据结构,尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。所以呢,如果为了参赛或者初步了解计算机语言,你可以线学习pascal,方便学习数据结构和算法(这个很重要!!!)。传统PASCAL的标准库中缺乏对网络编程的支持,并且仅通过自带的graph单元难以实现较好的图形界面(GUI),这些缺点大多需要嵌入汇编语言代码才能得到解决,缺乏与机器语言的接口。另一方面,作为一个面向过程的编程语言,和90年代兴起的面向对象的语言相比,不利于大型软件的开发。因此,pascal很难用于大型编程,商业用途小,教学还可以。所以,如果你以后打算从事计算机软件编程相关专业,从长远来看,以后也要开始学习c,或者c++,然后逐步转到java,安卓,asp等等。我现在大四,真心给你的忠告,如果是初中或者高中,可以深入学习一下,然后再逐步转到别的,如果大学或者以上,那就算了。学习编程比较枯燥,加油哦!!!

C语言与PASCAL语言有什么区别

。。。强...

什么是PASCAL矩阵

帕斯卡矩阵:由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。杨辉三角形表是二次项(x+y)^n展开后的系数随自然数n的增大组成的一个三角形表。如4阶帕斯卡矩阵为:Pascal(4)=[1111123413610141020]

PASCAL的诞生

 1 2  下一页  尾页