Pascal中能不能将布尔型数组赋值为0或1比如for i:=1 to n do a[i]:=0;和赋值为true或false有什么不同

作者&投稿:荀敬 (若有异议请与网页底部的电邮联系)
pascal布尔类型的使用~

布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。 1、 布尔常量 在Pascal语言中"真"用ture表示,"假"用False表示。所以布尔类型只有TRUE与FALSE两个常量。 2、 布尔变量(BOOLEAN) 如果我们将某些变量说明成布尔型,那么这些变量就是布尔变量,它们只能用于存放布尔值(ture或false)。 例如,VAR A,B:BOOLEAN;
3、 布尔类型是顺序类型 由于这种类型只有两个常量,Pascal语言中规定ture的序号为1,false的序号为0。若某种类型的常量是有限的,那么这种类型的常量通常都有一个序号,我们称这种类型为顺序类型。如前面我们学过的整型(integer),以及后面要学到的字符型(char)都是顺序类型。 4、 布尔类型的输入与输出 a)输出 VAR A,B:BOOLEAN; BEGIN A:=TRUE;B:=FALSE; WRITELN(A,B); END. 输出结果TRUE FALSE
b)★布尔类型变量不能直接用读语句输入,只能用赋值语句.
1、什么是关系表达式 用小括号、>、=、将两个算术表达式连接起来的式子就称为关系表达式(比较式)。 如:3+7>8,x+y6是错的,故它的值为FALSE。同样,45>=32是对的,故该表达式的值为true。 关系表达式用于表示一个命题。如:"m为偶数"可表示为:m mod 2=0。"n为正数"可表示为:n>0。
3.布尔运算及布尔表达式 为了表示更复杂的命题,Pascal还引入三种逻辑运算符:not、and、or。它们分别相当于数学上的"非"、"且"和"或"的意义。 这三个运算符的运算对象为布尔量,其中not为单目运算,只有一个运算对象,and与or为双目运算,有两个运算对象。
于是,对于一个关系表达式,或多个关系表达式用布尔运算符连接起来的式子就称为布尔表达式。布尔表达式的值也为布尔值。 如果一个表达式里出现两个或两个以上的运算符, 则必须规定它们的运算次序。pascal规定: ①表达式中相同优先级的运算符,按从左到右顺序计算; ②表达式中不同优先级的运算符,按从高到低顺序计算; ③括号优先级最高,从内到外逐层降低; 对于一个复杂的表达式可能同时包含算术运算、关系运算和逻辑运算以及函数运算。
运算的优先顺序为:括号 、函数、not、/、div、mod、and、+、-、or、xor关系运算。 对于复杂的命题,我们可以用布尔表达式来表示。例如,命题:"m,n都是偶数或都是奇数"可表示为"(m mod 2=0)and(n mod 2=0) or (m mod 2=1)and(n mod 2=1)"。

  1.数组的定义
  数组是程序中最常用的结构数据类型,用来描述由固定数目的同一类型的元素组成的数据结构。数组的每个元素和下标相关联,根据下标指示数组的元素。数组的存储方式为按行存储,在编译阶段,计算机根据数组的类型说明,确定其存储空间的大小。数组可以是任何顺序类型。
  数组的定义形式:
  array [,……] of
  其中n称为数组的维数,每维的下标类型必须是一个顺序类型,通常为子界类型或枚举类型,其作用是指定数组下标的编制方式和下标取值范围。
  例如:
  type
  color=(red,yellow,blue);
  sample1=array [1..10]of integer;{有10个元素的一维数组}
  sample2=arrayp[1..5,1..5]of real;{有25个元素的二维数组,依次按[1,1]……,[1,5],[2,1]……,[2,5],……[5,1],……[5,5]}
  2.数组的操作
  当数组的元素类型为简单类型时,其下标变量和简单类型变量一样使用。例如:
  a[50]:=50; a[20]:=a[5];
  一个数组,下标的起始值和终止值是在类型定义中给定的,不能在程序执行中再通过其他途径来改变,所以数组元素的个数在程序运行期间是固定不变的。数组变量作为整体仅允许同类型数组之间的赋值运算。
  例如:var x,y:array[1..10]of integer;
  x::=y
  例:读入5个学生的学号和成绩,计算他们的平均分,若比平均分高10分的等第为A,若比平均分高小于10分的等地为B,若低于平均分,则等第为C,输出他们的成绩和等第。
  program sample7d1(input,output);
  const n=5;
  type
  no=array[1..n] of integer;
  s=array[1..n]of real;
  var
  i:integer;
  k:real;
  num:no;
  score:s;
  begin
  k:=0;
  for i:=1 to n do
  begin
  readln(num[i],score[i]);
  k:=k+score[i];
  end;
  k:=k/n;
  for i:=1 to n do
  begin
  write(num[i],score[i]);
  if (score[i]-k)>=10 then writeln('A')
  else if((score[i]-k)0) then writeln('B')
  else writeln('C');
  end;
  end.
  pascal二维数组

  一维数组在编程中多用于描述线性的关系:如一组数;一组成绩;一组解答等。数组元素只有一个下标,表明该元素在数组中的位置。二维数组在编程中多数用于描述二维的关系:如地图、棋盘、城市街道、迷宫等等.
  〖语法分析〗


  一维数组在编程中多用于描述线性的关系:如一组数;一组成绩;一组解答等。数组元素只有一个下标,表明该元素在数组中的位置。二维数组在编程中多数用于描述二维的关系:如地图、棋盘、城市街道、迷宫等等。而二维数组元素有两个下标:第一个下标表示该元素在第几行,第二个下标表示在第几列。二维数组的定义格式如下:
  var
  a:array[1..10,1..5] of integer;
  其中:a是数组名,由程序员自定;array和of是定义数组的保留字;(这两点和一维数组定义的格式一样)中括号中的两个范围表示二维数组共有多少行、多少列(第一个范围表示行数,第二个范围表示列数);最后一个表示数组元素的类型,规定和一维数组一样。如上例,定义了一个二维数组a,共有10行5列。

  使用二维数组要注意:
  1、数组元素的指称:数组名[行号,列号]。如第三行第四个元素:a[3,4]。
  对某一行进行处理。如累加第4行的数据。则固定行号为4。如:for i:=1 to 5 do s:=s+a[4,i];
  对某一列进行处理。如累加第4列的数据。则固定列号为4。如:for i:=1 to 10 do s:=s+a[i,4];

  2、二维数组的输入输出要用双重循环来控制:
  for i:=1 to 10 do{————控制行数}
  begin
  for j:=1 to 5 do read(a[i,j]){————第一行读入5个元素}
  readln;{————读入一个换行符}
  end;
  {————最常用的方法:从键盘读入数据初始化二维数组}
  for i:=1 to 10 do
  for j:=1 to 5 do a[i,j]:=0;
  {————最常用的方法:将二维数组清0}
  for i:=1 to 10 do
  begin
  for j:=1 to 5 do write(a[i,j]:4);
  writeln;
  end;
  {————最常用的输出方法:按矩阵形式输出二维数组的值}

  3、二维数组的应用:
  例1:竞赛小组共有20位同学,这学期每位同学共参与了三项比赛,请统计每位同学的平均分。
  分析:定义一个20行3列的二维数组来存放这些成绩。定义一个20个元素的一维数组来存放平均分。
  program p1;
  var
  a:array [1..20,1..3] of integer;
  b:array [1..20] of real;
  i,j:integer;
  begin
  for i:=1 to 20 do
  begin
  for j:=1 to 3 do read(a[i,j]);
  readln;
  end;
  {————从键盘上读入20个同学的三次竞赛成绩}
  for i:=1 to 20 do b[i]:=0;
  {————先将平均分数组清0}
  for i:=1 to 20 do
  begin
  for j:=1 to 3 do b[i]:=b[i]+a[i,j];{————计算总分}
  b[i]:=b[i]/3;{————计算平均分}
  end;
  for i:=1 to 20 do write(b[i]:5:1);
  {————输出平均分}
  writeln;
  end.

  练习题:
  1、求一个5 X 5数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大的数。如下:
  5 6 7 8 9
  4 5 6 7 8
  3 4 5 2 1
  2 3 4 9 0
  1 2 5 4 8
  则1行1列上的数就是马鞍数。

在Pascal中,这是不可以的。你如果数组定义为a:array[1..100]of boolean;就只能赋值为true或者为false,但是你如果想把这个布尔型的值赋值给一个整型的变量,可以是s:=ord(a[i]);true为1,false为0。

赋值为0时布尔数组的值为false,没什么不同,个人习惯问题
一样的。

if a[i] 意思是
如果a[i]为true 则执行
否则不执行
等于
if a[i]=true then

至于ord(e=5) 应该是非法的~ pascal不会允许用一个非布尔型的值来做if的条件语句

可以的 0就是false,1就是true
你可以理解为 布尔型就只有两个值 0,1
if 判断的时候 按照非零即真 的原则
即使你判断一个整数也是这样的

楼主这是不可以的,你只能吧布尔型数组定义为TRUE或者FALSE,if a[i]的意思就是if a[i]=true的意思,下面也一样的!

如何将布尔类型转成整数?pascal
答:f:=false;ord(f)=0;函数就是那个ord 不管你信不信,我反正是信了。百度百科有云:序数函数:ord(ch),值为ch字符的ASCII 码,结果为整型。参考资料:百度百科

pascal中,哪个函数能把一个布尔型变量在true和false中切换?
答:其实是有的,就是Not(B:布尔型)。如果B为True,那么返回False;如果B为False,那么返回True。不过原理和你写的是一样的,但既然本来就有,那为什么要再写一个?

pascal布尔类型的使用
答:在Pascal语言中"真"用ture表示,"假"用False表示。所以布尔类型只有TRUE与FALSE两个常量。2、布尔变量(BOOLEAN)如果我们将某些变量说明成布尔型,那么这些变量就是布尔变量,它们只能用于存放布尔值(ture或false)。例如,VAR A,B:BOOLEAN;3、布尔类型是顺序类型 由于这种类型只有两个常量,Pascal语言...

pascal中场宽是怎么回事
答:n应为正整数。如:write('OK!':8);表示项目字符串‘OK!’的场宽是8。 按单场宽输出的项目可以是整形、字符型、布尔型,但不能是实型。如:设m为整形数1997,ch为字符‘?’,f为布尔型true。 writeln(m:5); writeln(ch:5); writeln(f:5); writeln('ok!

pascal 中的 Boolean函数哪位高人给指点一下
答:数据类型 Boolean 变量存储为 16 位(2 个字节)的数值形式,但只能是 True 或是 False。Boolean 变量的值显示为 True 或 False(在使用 Print 的时候),或者 #TRUE# 或 #FALSE#(在使用 Write # 的时候)。使用关键字 True 与 False 可将 Boolean 变量赋值为这两个状态中的一个。当转换其他...

pascal布尔型变量的巨大疑问
答:你如果看不贯not f,也可以取消它,就是把:while (n>0) and (not f) do 修改为:while (n>0) do 执行结果是一样的,只是机器多执行一些步骤,也就是当某一次循环已经f为true了,仍然继续下次循环。现在的程序能在找到的时候退出循环,程序效率高一点点,少做一点冤枉工。

1-1在Pascal语言中,下面哪些是合法的标识符?
答:不允许:28. .03 e2 体会一下 1-3 CONST pi=2.71828; {real实型} width=7; {integer整型} size=5e+03;{integer} space=' '; {char字符型} B=FALSE; {boolean布尔型} seven=number; {不合法。应“seven='number'。”string字符串} c='1994'; {string} p=5+0.005; {不合法。应...

布尔类型是什么意思?
答:boolean数据类型boolean变量存储为8位(1个字节)的数值形式,但只能是True或是False。当作为一个构造函数(带有运算符new)调用时,Boolean()将把它的参数转换成一个布尔值,并且返回一个包含该值的Boolean对象。如果作为一个函数(不带有运算符new)调用时,Boolean()只将把它的参数转换成一个原始的...

「2.Delphi语法基础」4.Object Pascal运算符与表达式
答:符合 Object Pascal 规定的算术表达式要考虑三个方面:语法、优先级、类型。我们举例说明:例如:逻辑运算符包括:布尔运算符、位运算符和关系运算符。1.布尔运算符 布尔运算符只能对布尔型操作数进行运算,结果为布尔型。基本的布尔运算符:2.位运算符 位运算是对整型操作数的二进制位执行操作,“位”...

pascal所有数据类型
答:AnsiString/LongString/WideString的内存都是动态分配的,最大可至2GB,因此可以近似认为它们是无限长的。AnsiString包含的字符使用单字节存储的,而WideString包含的字符则是用多个字节存储的。在Delphi7中WideString被实现为用2个字节存储一个字符。PChar并不是Pascal的标准类型,而是为了与操作系统和其他语言...