pascal程序

键盘输入一个多位自然数,然后将各数数字重新排列成一个仍由原来数字组成的位数不变的比原数大的最小数。... 键盘输入一个多位自然数,然后将各数数字重新排列成一个仍由原来数字组成的位数不变的比原数大的最小数。 展开
 我来答
偷星17425
2014-07-13 · 超过58用户采纳过TA的回答
知道答主
回答量:164
采纳率:66%
帮助的人:54.1万
展开全部
你用的是Free Pascal还是Turbo Pascal?Free Pascal 与 Turbo Pascal 的区别  虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:
  1. Free Pascal是一个32位的编译器,而Turbo Pascal只是16位编译器;
  2. Free Pascal是一个跨平台的编译器,而Turbo Pascal只在windows和DOS上使用。
  如果你的代码是遵守ANSI Pascal的,那么代码从Turbo Pascal移植到Free Pascal是没有问题的。
  下面是在Turbo Pascal上可以使用,但是在Free Pascal就不能使用的一些语言特性:
  1. 函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数,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理论上可以使用256m的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制)。这是Free Pascal由于32位的编译器。但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。 PASCAL程序设计介绍   PASCAL语言介绍
   PASCAL语言是由瑞士的沃斯(N.Wirth)教授于1971年提出来的。它的命名是为了纪念法国数学家Pascal。它是世界上第一个结构化的高级程序设计语言。结构化程序设计主要由三种基本结构(顺序结构、选择结构、循环结构)组成。后来有人把函数和过程作为第四种基本结构。这四种结构对外看都只有一个入口和一个出口,结构清晰,避免了由GOTO语句所引起的混乱。另外在程序设计方法方面,主张采用自顶向下,逐步求精的方法。即将一个大的复杂问题,划分成若干少的易解决的问题。每个小问题,又可划分成一些更小的更易解决的问题。这样,只要把每个小问题都解决了,整个大问题也就解决了。这种方法也为多个人合作编程提供方便。
  由于PASCAL语言具有良好的结构程序设计特性,适合于教学,特别是适合于培养学生掌握自顶向下逐步求精的结构化程序设计思想和方法,并养成良好的程序设计风格和习惯,因此,国内外许多大学都将PASCAL作为一门程序设计教学语言。 PASCAL程序的结构初步认识
   例1-1:输入半径求园的周长和面积?
  program circle(input,output);
  const
  Pi=3.14;
  var
  r,L,s:real;
  begin
  write('r=');
  readln(r);
  L:=2*pi*r;
  s:=pi*r*r;
  writeln('R=',r:8:2,' L=',L:8:2,' S=',s:8:2);
  end . 集成环境、编辑程序、保存程序
   1. 请确定Turbo.exe文件所在磁盘目录。假如它是放在F:盘的TP7文件夹(又称子目录)中。
  2. 把您要保存程序文件的盘设为当前盘,并保存文件于当前盘的当前目录中。假如您的程序文件要存在H:盘的当前目录,则在DOS方式提示符“>”后输入下面命令。
  > h:←┘
  3.调入并执行Turbo.exe,进入Turbo Pascal集成环境。
  > f:\tp7\turbo.exe←┘
  4.在程序编辑窗口中,输入例1-1程序。注意一个编辑窗口只能编辑一个程序文件。常用的编辑键有:
  ← ↑ → ↓ :光标移动键。
  Delete :删除光标所在字符。
  ←┘ :回车键,用于换行或在光标处插入一行之用。
  5.程序编辑完后,按F10 键,执行主菜单[File]中的[Save]项目菜单保存程序到磁盘中,并试用“yz1-1.PAS”作为例1-1程序存盘文件名。 运行程序、观察运行结果、跟踪调试程序
   1. 按F10 键,执行主菜单[ RUN ]中的[Run]项目菜单,运行程序,然后在提示后输入一个调试用的半径值:
  r= 10←┘
  2. 按F10 键,执行主菜单[Debug]中的[ output ]项目菜单,打开输出窗口观察到结果如下:
  R= 10.00 L= 62.80 S= 314.00
  如果有错,请找出错误并修改它,重复第1步,再执行直到有正确输出结果。
  3.重复第1步,再次运行程序,输入另一个园的半径值5,观察输出结果是否也正确,从而确定该程序能否正确解决不同半径的园的周长和面积的求解问题。
  程序调试中我们常用的操作还有:
  双线框的窗口称为“当前活动窗口”。
  F1 键: 得到光标所在位置的项目的帮助信息。
  F4 键: 要求运行到当前光标处暂停。
  F5 键: 放大或缩小当前活动窗口。
  F6 键: 切换其它窗口为当前活动窗口。
  F7 键: 单步执行程序并能跟踪进入子程序。
  F8 键: 单步执行程序但不能跟踪进入其子程序。
  F10 键:在菜单和活动窗口间转换。
  CTRL + Break 键:强制终止当前程序的运行。
  其它功能按键请同学们以后自己查看英文帮助说明,出色的程序员都习惯查看英文帮助。
  4.学习跟踪调试方法,它可帮助我们检查分析出算法上存在的错误。
  (1) 按F10 键,执行主菜单[Debug]中的[ Watch ]项目菜单,打开监视窗口
  (2) 按 Insert 键,输入常量pi ←┘
  Insert 键,输入变量r ←┘
  Insert 键,输入变量l ←┘
  Insert 键,输入变量s ←┘
  (3) 请按F8 键或F7单步执行程序直到程序结束,观察上述常量和变量如何变化。
  (4) 观察程序执行过程中Watch监视窗口中常量和变量的值变化,分析算法是否正确。
  说明:如果想在程序还未结束前终止程序的单步执行或跟踪调试,可按F10 键,执行主菜单[Run]中的[ Program Reset ]项目菜单。
  1.1.5 关闭当前活动窗口、退出Turbo Pascal集成环境
  1. 按 F6 键切换当前活动窗口,执行主菜单[Windows]中的[Close]菜单项关闭当前活动窗口,如果当前活动窗口是程序编辑窗,在关闭前可能因程序已修改过而提问用户是否需要保存编辑窗口中的被更改后的程序。试逐一关闭所有窗口。
  2. 执行主菜单[File]中的[Exit]菜单项可退出Turbo Pascal集成环境,返回DOS提示符状态。
  1.1.6 深入理解例1-1程序各语句意义 保留字
   1. 在Pascal中有些词具有特定的含义,用户必须正确理解其含义和正确使用,否则会运行出错。这些具有特定含义的词称为“保留字”。“保留字”不能做常量名、变量名或程序名。在Turbo Pascal7.0编辑窗口中,保留字默认用白色显示。例1-1中的包含的保留字有:program,const,var,begin,end,它们的特定含义分别是:program 指出后面定义的是程序名;const指出后面定义的是程序将用到的常量;var指出后面定义的是程序将用到的变量;begin指出程序执行代码开始;end指出程序执行代码结束。 标识符
   2. 除了保留字外,还用到标识符,用于表示常量、变量、类型、文件、函数、过程或程序的名字。标识符是以字母开头的字母、数字组合,标识符又分为标准标识符和用户自定义标识符。如例1-1中,用户自定义标识符有:程序名为circle,常量pi,实数型变量r、l和s,它们由程序设计者定义的;标准标识符有:实数标准类型名real,读数标准过程名readln,输出标准过程名write和writeln ,标准输入文件input,标准输出文件output。在Pascal编译系统中,标准标识符也具有特殊的含义,我们定义标识符时也应尽量避免与标准标识符取相同名字。PASCAL中的保留字及标识符是不区分大小写的。
  保留字 program , const , var , begin ,end
  标识符 标准标识符 Real,readln,write,writeln,input,output
  用户自定义标识符 circle , pi , r , l , s 注意程序的书写格式
   程序名说明: program <用户自定义的程序名>(input,output);其中圆括号的内容称为程序的参数。程序参数指明程序与外部联系的文件名。input是标准输入文件,例如键盘;output是标准输出文件,例如屏幕、打印机等。对于标准设备常可省略(input,output)的说明,简写为:program <用户自定义的程序名>;如例1-1可省略简写为:“ program circle; ”
  常量定义:Const
  <常量标识符>=<常量>;
  ......
  <常量标识符>=<常量>;
  变量定义:var
  <变量表> :<类型>;
  ......
  <变量表> :<类型>;
  主程序语句部分: begin
  <语句>;
  ......
  <语句>;
  end .
  赋值语句: <变量名标识符>:=<表达式>; 其意义是把右边表达式的运算结果送到左边变量名所对应的数据区中。
  读数据标准过程(又称读语句):read(变量表),园括符内必须是已定义过的变量标识符,有多个时变量时可用逗号分隔构成变量表。
  输出数据标准过程(又称写语句):write(数据项表)或writeln(数据项表),有多个数据项时要用逗号分隔。数据项可以是字符串(如:'L=',' S=')、变量(如:l、s),如:s:8:2,表示要求输出时数据保留2位小数位,总长度包括小数点为8位;write与writeln区别是writeln完成所有输出后自动换行。
  1.2 PASCAL基本组成
  1.2.1 PASCAL语言使用的几类基本符号
  (1) 大小写英文字母:A,B,...Z,a,b,..z
  (2) 数字:0,1,2,3,4,5,6,7,8,9
  (3) 其它符号:+ , - , * , / , = , < > , >= , <= , < , > , ( , ) ,[ ,] , := , ' , , . : , .. , ∧ 等。
  注意:PASCAL的标识符及保留字定义只能采用上述基本符号,其它特殊符号。例如:αβε∮∞≈,汉字等只能在字符型常量中使用。 PASCAL语言使用的保留字
   在PASCAL语言中,有些词具有特定的含义。用户必须了解其含义,以便正确的使用,否则会造成错误,这些具有特定含义的词被称为保留字,保留字不能作其它用途,如作变量名等。在Turbo pascal7.0中,保留字默认用白色显示,保留字如下:PROGRAM ,CONST,VAR,BEGIN,END,AND,ARRAY,CASE,DIV,DO,DOWNTO,ELSE,FILE,FOR,FUNCTION,GOTO,IF,IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEAT,SET,THEN,TO,TYPE,UNTIL,WHILE,WITH等。
  1.2.3 语法图说明
  语法是语言的结构规则,语言的所有成分都必须符合语法的要求,如果语言的结构规则描述不严密,就会产生歧义。我们在下面说明语法中,采用语法图进行描述,使说明更加简洁。语法图常用的4种图形元素的意义如下: PASCAL语言中的标识符
   在PASCAL中标识符分标准标识符和用户自定义标识符,它可作为常量、变量、类型、过程、函数和文件的名字。标识符是以字母开头的字母数字序列,构成语法如下图示:
  在PASCAL中有些标识符已定义了特定的含义,称为标准标识符,它们是:
  标准常量:false,true,maxint等;
  标准类型:integer,real,char,boolean,string,text等;
  标准文件:input,output等;
  标准函数:abs,chr,cos,eof,eoln,round,trunc等;
  标准过程:read,readln,write,writeln,new,reset等;
  指出下面用户自定义标识符为什么会错:
  begin(系统保留字),
  1student(不能用数字开头),student 1(不能有空格),
  1.2.5 PASCAL中使用的常量与变量
  程序中数据分为两类:一类是在程序执行过程中其值保持不变的量,称为常量;另一类是在程序执行过程中,其值可以改变的,这类数据称为变量。根据使用方式的不同,常量又可以分为直接常量和用户定义常量两种。
  1.直接常量
  指程序中直接引用的常数,在PASCAL中经常使用的常量有:整型常数,实型常数,字符型常数和布尔型常数等。
  (1) 整型常数语法图如下:
  如:100 , +120 ,-199 , 0等。
  (2) 实型常数语法图如下:
  如:100 , +120 ,2.5 ,0 ,0.005 , +2.418 , 1.24E+3 ,-1.24E+3
  这里E表示用科学记数法表示,1.24E+3相当于数学的1.24×10^(+3) 。
  (3) 字符型常数语法图如下:
  如:'A' ,'a','?','4','aBbc','12.5'等。
  (4) 布尔型常量
  布尔型常量简称为布尔型常数,它只有两个:true和false,分别表示逻辑判断的结果是真(True)和假(False)。
  2.用户自定义常量
  在程序中,如果一个常数反复多次出现在程序中,用户可以通过说明语句来定义一个标识符来代表这个常量。常量说明语法图如下:
  如: const
  pi=3.14;
  country='China';
  success=true;
  3.变量说明
  PASCAL程序中数值可以改变的量称为变量,由于变量可以取不同的值,因此变量必须通过标识符来代表。程序中出现的每个变量都必须在程序的变量说明部分进行类型说明.变量说明语法图如下:
  如: var
  x,y,z:real;
  i,j,k:integer;
  ch:char;
  t,f:boolean;
  name:string; (未完待续)
Needhueger
2014-07-13 · TA获得超过656个赞
知道小有建树答主
回答量:392
采纳率:50%
帮助的人:167万
展开全部
这一题考查的是数字的全排列,当然这是穷举的办法,就是将所有的数字排列可能全部列出来然后排序,找出比原数字大,又是所有可能中最小的数字,在没有数据范围要求的情况下这种方法最多只能算六七位的数字。 需要源代码的话可以说一声,本人正在赶制······ 求采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gcbjoy
推荐于2016-08-03 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:92%
帮助的人:2161万
展开全部
program zaoshu;
var
a:array[1..9] of integer; //存放自然数按位分解的各位数
b:array[1..10000] of longint; //存放位置调整后的每个数
c,sum:longint; //自然数
i,j,k,n:integer; //i,j,n为循环变量;k为找到的大数的个数
l,m,code,temp:integer; //l为串长;m位某位数字
t:longint; // t、temp为中间变量
st,st1:string; //st为自然数对应的串;st1为串中单个字符
find:boolean;
begin
readln(c);
str(c,st);
while st[1]=' ' do st:=copy(st,2,length(st)-1);

l:=length(st);
for i:=1 to l do begin //将自然数分解到数组a中
st1:=copy(st,i,1);
val(st1,m,code);
a[i]:=m;
end;

k:=1; // 找相对大的数,并将找到的数放入数组b中
//改用冒泡排序,且从末位往高位计算
for i:=l downto 2 do
for j:=l downto 2 do begin
if a[j-1]<a[j] then begin
temp:=a[j-1];a[j-1]:=a[j];a[j]:=temp;
sum:=0;
for n:=1 to l do sum:=sum+a[n]*10**(l-n);
b[k]:=sum;
k:=k+1;
end;
end;
k:=k-1;

for i:=1 to k-1 do //对找到的较大的数排序(选择排序)
for j:=i+1 to k do begin
if b[i]<b[j] then begin
t:=b[i]; b[i]:=b[j]; b[j]:=t;
end;
end;

find:=false; // 找出最接近的数
for i:=k downto 1 do begin
if b[i]>c then begin writeln(b[i]); find:=true; exit; end;
end;
if not find then writeln('no found !');

end.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式