free pascal 語言中有哪些運算子

2022-02-19 21:29:06 字數 7922 閱讀 3340

1樓:

單目運算子 (最高優先順序)

@ 取變數或函式的地址(返回一個指標)

not 邏輯取反或按位取反

乘除及按位運算子

* 相乘或集合交集

/ 浮點相除

div 整數相除

mod 取模 (整數相除的餘數)

as 程式執行階段型別轉換 (rtti運算子)and 邏輯或按位求和

shl 按位左移

shr 按位右移

加減運算子

+ 相加、集合並集、字串連線或指標增加一個偏移量- 相減、集合差集或指標減少一個偏移量

or 邏輯或按位或運算

xor 邏輯或按位異或運算

關係及比較運算子(最低優先順序)

= 判斷是否相等

<> 判斷是否不相等

< 判斷是否小於

> 判斷是否大於

<= 判斷是否小於或等於,或是否是一個集合的子集>= 判斷是否大於或等於,或是否是一個集合的父集in 判斷是否是集合成員

is 判斷物件是否型別相容 (又一個rtti運算子)

2樓:匿名使用者

* / div(除後取整數部分)mod(除後取小數部分)(這四個優先順序一樣) + -

(這兩個優先順序一樣)

3樓:方永福

http://www.zjtg.cn 去**看

free pascal 語言程式設計

4樓:快樂幸福的自由

回答即可得2分經驗值第三章 迴圈程式

在程式設計中經常遇到需要多次規律相同的重複處理,這就是迴圈問題。turbo pascal採用不同的迴圈方式來實現,常用的環循有三種: for、repeat、while.

第一節 for 迴圈

for迴圈是一種自動計數型迴圈。

[例3.1] 試列印出1~20的自然數。

解:① 用a代表1~20各數,同時也用a兼作計數,以控制迴圈次數;

② 讓a從1開始;

③ 輸出a;

④ a自動計數(加1),如果未超越所規定的迴圈範圍則重複步驟③,否則結束迴圈。

pascal程式:

program exam12;

var a: byte;

begin

for a:=1 to 20 do

writeln (a);

readln

end.

程式中 for a:=1 to 20 do writeln (a); 是for迴圈語句。

for 迴圈語句有兩種格式:

(1) for 迴圈變數:=初值 to 終值 do 語句;

(2) for 迴圈變數:=初值 downto 終值 do 語句;

第(1)種格式的初值小於等於終值,迴圈變數值按自動加1遞增變化;

第(2)種格式的初值大於或等於終值,迴圈變數值按自動減1遞減變化。for 迴圈是 (以遞增1或以遞減1) 計數型迴圈。

比如: 若將[例3.1]程式改為倒計數(遞減)迴圈,則輸出20~1的自然數數:

program exam31;

var a: byte;

begin

for a:=20 downto 1 do

writeln(a) ;

readln

end.

[例3.2]列印出30至60的偶數。]

解:方法一:

= 1 \* gb3 ①設a表示30至60的所有的數,可用for迴圈列出;

= 2 \* gb3 ②用式子 a mod 2=0 篩選出其中的偶數並輸出。

pascal程式:

program ex32;

var a : integer;

begin

for a := 30 to 60 do

if (a mod 2=0) then writeln(a);

readln;

end.

在這個程式中,for迴圈後的迴圈語句是一個條件分支語句。

方法二:我們知道,在式子a=2*n中,若n取自然數1、2、3、…,時,則a依次得到偶數2、4、6、…。因此要想得到30至60的偶數,就可以讓上面式子中的n取15至30的自然數就可以了。

所以本題還可以按以下步驟處理:

= 1 \* gb3 ①設n表示15至30的所有自然數,可用for迴圈列出;

= 2 \* gb3 ②用式子 a := 2*n 求出其中的偶數;

= 3 \* gb3 ③將結果輸出至螢幕。

pascal程式:

program ex32;

begin

for n := 15 to 30 do

begin

a := 2*n;

writeln(a);

end;

readln;

end.

[例3.3]自然數求和:編一個程式,求從1至100的自然數的和。

解:① 令s=0;

② 令a表示1至100的自然數,用迴圈列出;

③ 將這些自然數用公式s:=s+a 逐一累加到s中去;

= 4 \* gb3 ④ 迴圈結束後,s即為1至100的自然數的和,輸出即可。

pascal程式:

program ex33;

var s,a : integer;

begin

s := 0;

for a := 1 to 100 do

s := s+a;

writeln(『s=』,s);

readln;

end.

[例3.4]一個兩位數x,將它的個位數字與十位數字對調後得到一個新數y,此時y恰好比x大36,請程式設計求出所有這樣的兩位數。

解:① 用for迴圈列舉出所有的兩位數,x為迴圈變數;

② 用公式a:= x div 10分離出x的十位數字;

③ 用公式b:= x mod 10分離出x的個位數字;

④ 用公式y:= b*10+a合成新數y;

= 5 \* gb3 ⑤ 用式子y-x=36篩選出符合條件的數x並輸出。

pascal程式:

program ex34;

begin

for x := 10 to 99 do

begin

a := x div 10;

b := x mod 10;

y := b*10+a;

if y-x=36 then writeln(x);

end;

readln;

end.

[例3.5] 把整數3025從中剪開分為30和25兩個數,此時再將這兩數之和平方,(30+25)2=3025計算結果又等於原數。求所有符合這樣條件的四位數。

解:設符合條件的四位數為n,它應當是一個完全平方數,用(a*a)表示。

① 為了確保n=(a*a)在四位數(1000~9999)範圍內,可確定a在32~99迴圈;

② 計算n=a*a;將四位數n拆分為兩個數n1和n2;

③ 若滿足條件(n1+n2)*(n1+n2)=n 就輸出 n 。

pascal程式:

program exam35;

var n,a, x,n1,n2: integer;

begin

for a:=32 to 99 do

begin

n:=a*a;

n1:= n div 100; {拆取四位數的前兩位數}

n2:= n-n1*100; {拆取四位數的後兩位數}

x:=n1+n2;

if x*x=n then writeln (n);

end;

readln

end.

[例3.6]用「*」號列印出如下的長方形圖案。

*********

*********

*********

*********

解:① 上面給出的圖例共有4行,我們可以用一個迴圈控制行的變化;

② 在每行中又有9列,我們可以在前面控制行的迴圈中再套一個迴圈來控制列的變化。

pascal程式:

program ex36;

begin

for a := 1 to 4 do

begin

for b := 1 to 9 do

write(『*』);

writeln;

end;

readln;

end.

程式中的迴圈對於a的每個值都包含著一個b=(1~9)次的內迴圈。外迴圈for a 將內迴圈for b 包含在裡面,稱為for迴圈的巢狀。巢狀形式如:

for a:=n1 to n2 do

for b:=m1 to m2 do 迴圈體語句;

[例3.7] 列印出九九乘法表:

解:設a為被乘數,範圍為1~9;b為乘數,範圍為1~a;乘式為a*b=(a,b的乘積),則

a=1: b=1~a 1*1=1

a=2: b=1~a 2*1=2 2*2=4

a=3: b=1~a 3*1=3 3*2=6 3*3=9

a=4: b=1~a 4*1=4 4*2=8 4*3=13 4*4=16

: :

a=9 b=1~a 9*1=9 9*2=18 … 9*9=81

⑴從上面分解的橫行中看到共有9行,這裡的「行」數變化與a的變化從1~9相同,可用a控制「行」的迴圈;

⑵每「行」裡面相乘的次數與b的範圍相關,由b控制每「行」裡面的「內部」迴圈;

⑶內迴圈被包含在最裡層,執行完每「行」的內部迴圈,就到下一「行」去執行新「行」裡面的迴圈,每「行」都擁有形式相同的( b=1~a )內迴圈。

即每到一「行」都要執行該「行」的內迴圈。這裡所指的「行」可以理解成抽象的行,不一定是實際上具體對應的行,可以是一個處理「塊」。

pascal程式:

program exam37;

var a,b: byte;

begin

for a:=1 to 9 do

begin

for b:=1 to a do

write(a,』* 』,b,』= 』,a*b,』 』:3);

writeln

end;

readln

end.

根據這種格式還可以實現多層迴圈巢狀,例如:

for a:=n1 to n2 do

for b:=m1 to m2 do

for c:=k1 to k2 do 迴圈體語句;

[例3.8]從七張撲克牌中任取三張,有幾種組合方法?請程式設計輸出所有組合形式。

解:設每次取出三張分別為a,b,c。用三重迴圈分別從1~7的範圍裡取值;為了排除取到重號,用(a-b)*(b-c)*(a-c) < >0進行判斷。

pascal程式:

program exam38;

const n=7;

var a,b,c,t: integer;

begin

t:=0;

for a:=1 to n do

for b:=1 to n do

for c:=1 to n do

if (a-b) * (b-c) * (a-c) < >0 then

begin

inc (t);

writeln (a:3, b:3, c:3)

end;

writeln ( total:, t :5);

readln

end.

[例3.9] 數學上把除了1和它本身,沒有別的數能夠整除它的自然數叫做素數(或質數)。現在由鍵盤輸入一個自然數n,程式設計判斷n是否是素數,是則輸出「yes」,否則輸出「no」。

解:根據定義,對於給定的自然數n,只需判斷除1和它本身外,還有沒有第三個自然數即可。

① 令k從1迴圈至n;

② 根據n mod k是否為0可統計k的約數的個數;

③ 若n的約數的個數超過2個,則判定n不是素數。

pascal程式:

program exam39;

var n,m,k,t: integer;

begin

write(『n=』);

readln(n);

t:=0;

for k:=1 to n do

if n mod k=0 then t := t+1;

if t>2 then writeln(『no』)

else writeln(『yes』);

readln;

end.

程式中的變數yse為布林(或邏輯)型別(boolean)。布林值只有兩個:

true(真) false(假)

布林值與條件判斷結果為真(條件成立)或為假(條件不成立)的作用相同,常用於條件語句和迴圈語句中。

上面程式中用 if yes and (t mod 7=0) then writeln;實現每行列印七個素數換行,程式中布林變數yes為真,在邏輯上表示是素數;關係式(t mod 7=0) 的值為真時,表示該行輸出素數巳是7個;用and將這兩個「條件」連起來是作一種布林(邏輯)運算。

pascal 共有四種邏輯運算子:

① and (與) 兩條件都為true時,其結果值為true;否則為false;

② or (或) 兩條件中只要有一個為true ;其結果值為true;否則為false;

③ xor (異或) 兩條件的邏輯值不相同時,其結果值為true;否則為false;

④ not (非) 條件為true時,其結果值為false;否則為true;(取反)

習題3.1:

1.列印出1至20的平方數表。

2.列印出100至200之間的奇數。

3. 雞兔同籠(用for迴圈程式完成)

4.一輛快車和一輛慢車開往同一地點,快車票價為18元,慢車票價為13. 5元,共售出400張,共計5940元,求快車票和慢車票各多少張?.

5.求出能被5整除的所有四位數的和。

6.在下面式子中的二個□內填入一個合適的同樣的數字,使等式成立。

□3*6528=3□*8256

7.有一個三位數,它的各位數字之和的11倍恰好等於它自身,請程式設計求出這個三位數。

8.在自然數中,如果一個三位數等於自身各位數字之立方和,則這個三位數就稱為是水仙花數。如:153=13+53+33,所以153是一個水仙花數。求所有的水仙花數。

9.程式設計序列印出下列圖案:

平行四邊形 等腰三解形 菱形

****** * *

****** *** ***

****** ***** *****

****** ******* ***

****** ********* *

10.程式設計列印出如下圖案:

1222

33333

4444444

555555555

11.有三種明信片:第一種每套一張,售價2元;第二種每套一張,售價4元; 第三種每套9張,售價2元。

現用100元錢要買100張明信片,要求每種明信片至少要買一套,問三種明信片應各買幾套?請輸出全部購買方案。

12.某人想把一元錢換成伍分、貳分、壹分這樣的零錢, 在這三種零錢中每種零錢都至少各有一個的情況下,共有多少種兌換方案。並打出這些方案。

13.14. 輸出100 以內的全部素數,要求每行顯示5 個。

15.a、b兩個自然數的和、差、積、商四個數加起來等於243,求a、b兩數。

16.百錢買百雞:今有錢100元,要買100只雞,公雞3元一隻,母雞1元一隻,小雞1元3只,若公雞、母雞和小雞都至少要買1只,請程式設計求出恰好用完100元錢的所有的買雞方案。

,回答被採納可同步增加經驗值和財富值

c語言中有哪些算術運算子C語言中有哪些算術運算子

c語言中算術運算子有以下這些 例項 include int main 當上面的 被編譯和執行時,它會產生下列結果 line 1 c 的值是 31 line 2 c 的值是 11 line 3 c 的值是 210 line 4 c 的值是 2 line 5 c 的值是 1 line 6 c 的值是 2...

在C語言中,有如下定義

執行後輸出的結果是 5 do while 是怎樣迴圈的啊?第一趟迴圈不判別迴圈條件,直接執行迴圈體 if i 2 i 2為f i i為1 s s i s為1 第二趟迴圈,判別迴圈條件i 3為t,執行迴圈體if i 2 i 2為t i i為4 s s i s為5 第二趟迴圈,判別迴圈條件i 3為f,退...

c語言中怎麼用C語言中怎麼用

最近 盤 字很流行,盤是什麼意思?為什麼能成為網路熱詞?結果是3 解答過程 自 首先算a b 表示異或 十進位制a 1,等於二進位制0001 十進位制b 2,等於二進位制0010 異或為對應位不同時取真,故0001 0010結果為0011,即為十進位制的3 再算 a b c 表示按位與,a b的結果...