网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月02日漏签0天
pascal吧 关注:14,951贴子:132,342
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 16回复贴,共1页
<<返回pascal吧
>0< 加载中...

pascal乘法口诀与Basic程序对比

  • 只看楼主
  • 收藏

  • 回复
  • 贴吧用户_Q85UR6C
  • 方格取数
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一 pascal的乘法口诀程序:
program Main;
var i,j:integer;
begin
writeln;
write('乘法口诀');
writeln;
writeln;
for i:=1 to 9 do
begin for j:=1 to i do write(i,'x',j,'=',i*j:2,' ');
writeln;
end;
end.
二 Basic乘法口诀程序
2 print
4 print "云码Basic乘法口诀"
10 FOR i = 1 TO 9
20 FOR j = i TO 9
22 p=i*j
30 PRINT i;" x "; j ;"=";p
40 NEXT j
60 NEXT i
怎么感觉Basic程序要简单、明了一些。
pascal反而复杂。


  • yynet123456
  • 骗分导论
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
BASIC少了一个换行


2025-07-02 18:16:25
广告
  • plu_icesheep
  • read
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1 x 1 = 1 2 x 2 = 4 3 x 3 = 9
1 x 2 = 2 2 x 3 = 6
1 x 3 = 3
如果要这种格式呢?


  • 浅雪斋
  • 骗分导论
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
pascal/delphi的语义更丰富


  • yynet123456
  • 骗分导论
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我喜欢PASCAL,因为我学了快30年了,还没忘


  • plu_icesheep
  • read
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3楼的问题我自己挽尊一下,注意到规律是每一行两个因数之间的差从 0 逐渐增加到 8,
所以把循环的语句改写为如下形式即可。
for i := 0 to 8 do begin
for j := 1 to 9 do if i+j<9 then
write(j,'x',i+j,'=',j*(i+j):2,' ');
writeln
end


  • HappyLive6
  • asset
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看来您是使用Basic的专业人士,能麻烦您把下面的Pascal代码转成Basic吗?万分感激
program FQs;
var
 a:array of longint;
 l:longint;
 i:longint;
procedure E(var a,b:longint);
var
 c:longint;
begin
 c:=a;
 a:=b;
 b:=c;
end;
procedure S(n,u:longint);
var
 p,i,j:longint;
begin
 if n+1=u then
  begin
   if a[n]>a[u] then E(a[n],a[u]);
  end
 else
  begin
   p:=a[n];
   i:=n;
   j:=u+1;
   repeat
    i:=i+1;
    j:=j-1;
    if i=j then
     begin
      if p<a[i] then
       begin
        E(a[n],a[i-1]);
        if n<(i-1)-1 then S(n,(i-1)-1);
        if (i-1)+1<u then S((i-1)+1,u);
        Exit;
       end
      else
       begin
        E(a[n],a[i]);
        if n<i-1 then S(n,i-1);
        if i+1<u then S(i+1,u);
        Exit;
       end;
     end
    else
     begin
      for i:=i to j-1 do
       if a[i]>p then break;
      if i+1<j then
       begin
        for j:=j downto i+1 do
         if a[j]<p then break;
        E(a[i],a[j]);
        if j-1=i then
         begin
          if p<a[i] then
           begin
            E(a[n],a[i-1]);
            if n<(i-1)-1 then S(n,(i-1)-1);
            if (i-1)+1<u then S((i-1)+1,u);
            Exit;
           end
          else
           begin
            E(a[n],a[i]);
            if n<i-1 then S(n,i-1);
            if i+1<u then S(i+1,u);
            Exit;
           end;
         end;
       end
      else
       begin
        if a[i]>a[j] then
         E(a[i],a[j]);
        if p<a[i] then
         begin
          E(a[n],a[i-1]);
          if n<(i-1)-1 then S(n,(i-1)-1);
          if (i-1)+1<u then S((i-1)+1,u);
          Exit;
         end;
        if p=a[i] then
         begin
          if n<i-1 then S(n,i-1);
          if i+1<u then S(i+1,u);
          Exit;
         end;
        if p>a[i] then
         if p<=a[j] then
          begin
           E(a[n],a[i]);
           if n<i-1 then S(n,i-1);
           if i+1<u then S(i+1,u);
           Exit;
          end
         else
          begin
           E(a[n],a[j]);
           if n<j-1 then S(n,j-1);
           if j+1<u then S(j+1,u);
           Exit;
          end;
       end;
     end;
   until (i+1=j) or (i=j);
  end;
end;
begin
 a:=[];
 readln(l);
 setlength(a,l);
 for i:=0 to l-1 do
  read(a[i]);
 readln;
 S(0,l-1);
 for i:=0 to l-1 do
  write(a[i],' ');
 writeln;
end.


  • xxmw
  • A+B
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
' Gambas module file
'九几年教pascal的时候,极其讨厌它的啰哩啰嗦语法,C语言里半个大括号的事,它独占一行罗嗦半天,把个程序弄得羊拉屎一样
'这个程序没有注释,用了递归,也不知道是干啥用的,懒得分析了,机械的翻译成basic语言(linux下的Gambas),将就看吧
Public a As New Long[]
Public Sub Main()
Dim l, i As Long
Input l
a.Resize(l)
For i = 0 To l - 1
Input a[i]
Next
S(0, l - 1)
For i = 0 To l - 1
Print a[i]; " ";
Next
Print
End
Sub S(n As Long, u As Long)
Dim p, i, j As Long
If n + 1 = u Then
If a[n] > a[u] Then Swap a[n], a[u]
Else
p = a[n]
i = n
j = u + 1
Do
i = i + 1
j = j - 1
If i = j Then
If p < a[i] Then
Swap a[n], a[i - 1]
If n < (i - 1) - 1 Then S(n, (i - 1) - 1)
If (i - 1) + 1 < u Then S((i - 1) + 1, u)
Else
Swap a[n], a[i]
If n < i - 1 Then S(n, i - 1)
If i + 1 < u Then S(i + 1, u)
Endif
Return
Else
For i = i To j - 1 '这样使用循环变量,是认真的么?
If a[i] > p Then Break
Next
If i + 1 < j Then
For j = j To i + 1 Step -1 '怪异的循环变量用法
If a[j] < p Then Break
Next
Swap a[i], a[j]
If j - 1 = i Then
If p < a[i] Then
Swap a[n], a[i - 1]
If n < (i - 1) - 1 Then S(n, (i - 1) - 1)
If (i - 1) + 1 < u Then S((i - 1) + 1, u)
Else
Swap a[n], a[i]
If n < i - 1 Then S(n, i - 1)
If i + 1 < u Then S(i + 1, u)
Endif
Return
Endif
Else
If a[i] > a[j] Then Swap a[i], a[j]
If p < a[i] Then
Swap a[n], a[i - 1]
If n < (i - 1) - 1 Then S(n, (i - 1) - 1)
If (i - 1) + 1 < u Then S((i - 1) + 1, u)
Else If p = a[i] Then
If n < i - 1 Then S(n, i - 1)
If i + 1 < u Then S(i + 1, u)
Else If p > a[i] Then
If p <= a[j] Then
Swap a[n], a[i]
If n < i - 1 Then S(n, i - 1)
If i + 1 < u Then S(i + 1, u)
Else
Swap a[n], a[j]
If n < j - 1 Then S(n, j - 1)
If j + 1 < u Then S(j + 1, u)
Endif
Endif
Return
Endif
Endif
Loop Until (i + 1 = j) Or (i = j)
Endif
End


2025-07-02 18:10:25
广告
  • xxmw
  • A+B
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
直接贴代码,缩进就看不清了,贴图吧


  • xxmw
  • A+B
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 16回复贴,共1页
<<返回pascal吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示