free pascal qword free pascal
摘要:关于pascal的一个问题(关于qword 和 int64的)这是一种好习惯,一般用的哪个变量之前总会先清空它一下,以免值发生改变,因为每个变量或者每个数组,它在定义的时候可能会产生一些没有规律的乱值...
发布日期:2020-08-28关于pascal的一个问题(关于qword 和 int64的)
这是一种好习惯,一般用的哪个变量之前总会先清空它一下,以免值发生改变,因为每个变量或者每个数组,它在定义的时候可能会产生一些没有规律的乱值,你没有清空就会影响程序运行。
关于楼主新的补充,你大可不必放心,因为pascal里的函数运行时间相当少,不会影响最后的测评时间的。
free pascal调试时变量值乱七八糟(具体看描述)
循环变量一直是0是pascal的问题。
因种种原因,FP直到如今的2.4.0版仍很不稳定。
主说的问题是pascal经常遇到的通病,一般重开,或者重启电脑乃至重装FP以解决问题。
注意到在家和机房的电脑都是这样,尤其是全局变量,那就是程序问题了,因为一般不可能出同样的问题。
而编译开关就有点不靠谱了。
byte,ansistring,qword,int及实型都可能出问题。
len:=length(s); 如果你开的是ansistring,那就囧了。
另据大牛说,F7或F8极不稳定,F4较好,可以重试。
若以上都不行的话,那就换个版本吧。
pascal中整形定义最大是什么
NOIP2011复赛注意事项一、比赛不提供纸质试题,只提供电子版文件。
该文件压缩包保存在计算机桌面上。
监考人公布密码后,选手自行解密试题。
二、今年我省复赛选手上机仍使用windows操作系统。
中国计算机学会将使用NOILINUX下的Arbiter评测系统进行评测。
三、比赛时选手注意事项:1.除经允许的、必须的竞赛用品外,选手不得将书包、手机、U盘、书、纸等带入考场,一经发现,取消本次竞赛资格。
2.选手进人考场后按指定位置就座。
如发现问题,向监考人示意协助解决。
3.选手入座后应仔细核对考桌上的参赛标签,看内容是否与本人的信息一致,如有错误须立刻上报监考人员,否则视为默认同意,赛后不得更改。
选手须将身份证件和准考证放在考桌上参赛标签旁,以便监考人员查验。
4.比赛开始15分钟后不得进人考场,以旷考处理;开考60分钟内,选手不得退出考场,退场后不得返回考场。
5. 竞赛期间须保持安静,不准相互交谈,如有疑问,选手可举手示意,询问监考人员。
如有传递纸条、替他人代考等违纪作弊行为,该选手将被立刻取消参赛资格,并从次年算起被禁赛3年。
6.监考人员发出竞赛结束的指令后,须停止答卷,待监考人员检查无误后离开考场,不得在考场逗留。
如竞赛结束的指令下达后继续答题,该选手成绩以零分记。
7. 选手如发现监考人员及相关人员在竞赛过程中有违纪行为或有影响公平竞赛的行为,可向主办单位署名投诉(邮件: noi@ict.ac.cn 该E-mail地址已受到防止垃圾邮件机器人的保护,您必须启用浏览器的Java Script才能看到。
),主办单位将严格为投诉者保密。
四、比赛文件夹要求比赛开始前,竞赛组织方事先已在桌面上建立以选手参赛编号命名的文件夹,选手应检查该文件夹名称是否正确(包括编号及大小写字母)。
确认无误后,选手须为每道试题再单独建立一个子目录,子目录名与对应的试题英文名相同(参见试题封面页)。
选手提交的每道试题的源程序必须分别存放在相应的子目录下。
在规定目录下,不得包含除有效答案(源程序)以外的任何文件和目录。
未按规定建立子目录、建立的子目录名出现错误或提交的源程序没有存放在相应的子目录下等都可能导致选手成绩为0分,责任由选手承担。
例如:假设题目有cashier、dune、manhattan三题,选手ZJ-001分别使用C、Pascal、C++答题,其最终提交的文件为cashier.c、dune.pas、manhattan.cpp,则该选手应建的目录结构如下所示:|---ZJ-001 (此文件夹已经建好)|---cashier/| |---cashier.c|--- dune/| |--- dune.pas|---manhattan/|---manhattan.cpp五.竞赛语言环境:分类 软件 版本 说明系统软件 Windows XP SP3 操作系统编译器 Gcc 4.4.4 C编译器G++ 4.4.4 C++编译器FreePascal 2.4.0 Pascal编译器调试器 Gdb 7.1 命令行启动FP-gdb 6.8 命令行启动集成开发环境 GUIDE 1.0.1 单文件程序IDE(C/C++/Pascal)Dev-cpp 4.9.9.2 C/C++ IDEFreePascal 2.4.0 Pascal IDE**注意:Dev-Cpp连接的编译器版本为MinGW 3.4.2。
与NOI官方评测GNU 4.4.4有较大差距,请慎用。
FreePascal同时提供了2.0.4版本,在C盘FPC目录下,有需要的同学可以自行选择。
Guide连接的编译器默认MinGW4.4.4和FreePascal2.4.0。
int64,qword不能用是几年前的事了,从NOIP2009开始就可以用了。
1000的阶乘等于多少?
000!=4023872600770937735437024339230039857193748642107146325437999104299385123986290205920442084869694048004799886101971960586316668729948085589013238296699445909974245040870737599188236277271887325197795059509952761208749754624970436014182780946464962910563938874378864873371191810458257836478499770124766328898359557354325131853239584630755574091142624174743493475534286465766116677973966688202912073791438537195882498081268678383745597317461360853795345242215865932019280908782973084313928444032812315586110369768013573042161687476096758713483120254785893207671691324484262361314125087802080002616831510273418279777047846358681701643650241536913982812648102130927612448963599287051149649754199093422215668325720808213331861168115536158365469840467089756029009505376164758477284218896796462449451607653534081989013854424879849599533191017233555566021394503997362807501378376153071277619268490343526252000158885351473316117021039681759215109077880193931781141945452572238655414610628921879602238389714760885062768629671466746975629112340824392081601537808898939645182632436716167621791689097799119037540312746222899880051954444142820121873617459926429565817466283029555702990243241531816172104658320367869061172601587835207515162842255402651704833042261439742869330616908979684825901254583271682264580665267699586526822728070757813918581788896522081643483448259932660433676601769996128318607883861502794659551311565520360939881806121385586003014356945272242063446317974605946825731037900840244324384656572450144028218852524709351906209290231364932734975655139587205596542287497740114133469627154228458623773875382304838656889764619273838149001407673104466402598994902222217659043399018860185665264850617997023561938970178600408118897299183110211712298459016419210688843871218556461249607987229085192968193723886426148396573822911231250241866493531439701374285319266498753372189406942814341185201580141233448280150513996942901534830776445690990731524332782882698646027898643211390835062170950025973898635542771967428222487575867657523442202075736305694988250879689281627538488633969099598262809561214509948717012445164612603790293091208890869420285106401821543994571568059418727489980942547421735824010636774045957417851608292301353580818400969963725242305608559037006242712434169090041536901059339838357779394109700277534720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000我是用FREE PASCAL编的var SD:text,sizeof(a):array [1.; a,x.1000000] of Qword; m,0); j:=1;begin assign(SD,",c,b,i:=0; for b:=m to j do begin a[b]:=a[b]*i+x; x:=a[b] div 1000000000000; a[b]:=a[b] mod 1000000000000; end; while x0 do begin j:=j+1; a[j]:=x mod 1000000000000; x:=x div 1000000000000; end; while a[m]=0 do inc(m); end; rewrite(SD); write(SD,c,"!="); write(SD,a[j]); for i:=j-1 downto 1 do if a[i]<10 then write(SD,"00000000000",a[i]) else if a[i]<100 then write(SD,"0000000000",a[i]) else if a[i]<1000 then write(SD,"000000000",a[i]) else if a[i]<10000 then write(SD,"00000000",a[i]) else if a[i]<100000 then write(SD,"0000000",a[i]) else if a[i]<1000000 then write(SD,"000000",a[i]) else if a[i]<10000000 then write(SD,"00000",a[i]) else if a[i]<100000000 then write(SD,"0000",a[i]) else if a[i]<1000000000 then write(SD,"000",a[i]) else if a[i]<10000000000 then write(SD,"00",a[i]) else if a[i]<100000000000 then write(SD,"0",a[i]) else write(SD,a[i]); writeln; readln; close(SD);end.算50000!都只须40S;SD.txt"); fillchar(a,j,y:=1; readln(c); for i:=2 to c do begin x:longint; a[1]:=1; m 展开
Free pascal 和 Turbo pascal 的主要区别
虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:1.Free Pascal是一个32位的编译器,而Turbo Pascal只是16位编译器;2.Free Pascal是一个跨平台的编译器,而Turbo Pascal只在windows上使用。
如果你的代码是遵守ANSI Pascal的,那么代码从Turbo Pascal移植到Free Pascal是没有问题的。
下面是在Turbo Pascal上可以使用,但是在Free Pascal就不能使用的一些语言特性:1.函数和过程在使用时,参数的类型必须和定义时完全一致。
原因是在Free Pascal中添加了函数重载功能。
2.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字。
3.FAR,NEAR不再是关键字了。
原因是Free Pascal是32位系统,不再需要这些关键字。
4.布尔表达式不一定要全部进行计算。
只要最终结果已经能够确定,就不再计算其它还没有计算的部分了。
比如布尔表达式exp1 AND exp2 AND exp3,如果已知exp1的结果是false,那么怎么表达式的结果肯定是false,exp2和exp3就不用进行计算了。
5.在Free Pascal中,集合中的元素都是4个字节长的。
6.表达式执行的顺序是不确定的。
比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。
7.如果用Rewrite打开文件,那么文件就只能被写入了。
如果需要读取这个文件,要对文件执行Reset。
8.Free Pascal在程序结束之前一定要关闭输出文件,否则输出文件可能不能被正确的写入。
9.Free Pascal理论上可以使用4GB的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制)。
这是Free Pascal由于32位的编译器。
但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。
下面是Free Pascal相对于Turbo Pascal扩充的一些功能:1.函数可以返回复杂的类型,比如记录和数组。
2.在函数中,函数的返回值可以作为一个变量来处理。
比如:function a : longint; begin a:=12; while a>4 do begin {...} end; end; 这个例子在Turbo Pascal中,a>4会被认为是函数的递归调用,但是在Free Pascal中会认为a只是一个变量。
如果想在Free Pascal中实现递归调用,就要写成下面的形式:function a : longint; begin a:=12; { this is the recursive call } if a()>4 then begin {...} end; end;3.exit可以接受一个参数作为函数的返回值。
比如:function a : longint; begin a:=12; if a>4 then begin exit(a*67); {函数的返回值就是a*67 } end; end;4.Free Pascal支持函数重载。
可以用相同的名字定义不同的函数,只要这些函数的参数不同,就是不同的函数。
比如:procedure DoSomething (a : longint); begin {...} end; procedure DoSomething (a : real); begin {...} end; 可以使用不同的参数类型longint或者real来调用不同的DoSomething过程。
由于这个功能,函数的提前声明必须有完整的参数声明:procedure x (v : longint); forward; {...} procedure x;{ 这里定义的过程x重载了前面声明的过程x。
因此这里的两个x是不同的} begin {...} end;5.Free Pascal容许运算符重载。
比如,可以自己为矩阵运算定义一个“+”运算。
6.Free Pascal在windows 95及其以上的windows版本上支持长文件名。
对于文件名,由于windows系统对大小写不敏感,因此在程序中,文件名的大小写是无关的。
但是对于其它大小写敏感的系统,比如linux,程序中用到的文件名必须和系统中的文件名完全一致。
但是由于信息学竞赛的评测系统一般是linux,因此要求程序中的文件名和系统中的文件名一样。
free pascal中read和readln的区别
read是读入所有字符(如果读入数字自动忽略空格和回车)readln是只读入当前行的(如果当前行的输入不够则继续读入,超过了就忽略后面的.你可以试试下面两个程序,运行后都直接回车..var c:char;beginread(c);writeln(ord(c));end.---------------------var c:char;beginreadln(c);writeln(ord(c));end.=================================================还有这两个,输入1,2,3,回车4var a,b,c,d:integer;beginread(a,b);read(c,d);writeln(a,b,c,d);end.--------------------------//下面这个程序你要只输入1,2,3,回车4是不会停的.因为readln(a,b)后,3被忽略,然后readln(c,d)是读c和d,可是只有一个4了。
。
你必须再输入一个值var a,b,c,d:integer;beginreadln(a,b);readln(c,d);writeln(a,b,c,d);end.