Pascal数组,字符串

已经两天没和大家见面了,今天我们来学习Pascal语言和算法三大风水宝地之一的数组

三大风水宝地有:

1.循环

2.数组,字符串

3.递归

我们来看看一维数组的原理:

数组的定义是:A(随意改):array[1..10000(随意改)]of longint(随意改);

一维数组就是把数存入a[1],a[2],a[3]....a[n];

二维数组同理,定义是:

a:array[1..5000,1..5000]of longint;

举个栗子

(一维数组)

输入n个正整数,把这n个数按由大到小的顺序排列。( 选择排序
将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序是一种较简单的方法。

【分析】

        假设是十个数据

       要把十个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……。因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它大的,则与之交换,比较结束后,则第一个数已是最大的数(最大的泡往上冒)。同理,第二步,将第二个数与其后各个数再依次比较,又可得出次大的数。如此方法进行比较,最后一次,将第九个数与第十个数比较,以决定次大的数。于是十个数的顺序排列结束。
     如对5个进行排序,这个五个数分别为8 2 9 10 5。按选择排序方法,过程如下:
初始数据 :8 2 9 10 5
第一次排序:8 2 9 10 5
      9 2 8 10 5
      10 2 8 9 5
      10 2 8 9 5
第二次排序:10 8 2 9 5
      10 9 2 8 5
      10 9 2 8 5
第三次排序:10 9 8 2 5
      10 9 8 2 5
第四次排序:10 9 8 5 2
对于十个数,则排序要进行9次。

答案:

var  
       a:array[1..10000]of integer;
       i,j,t,n:integer;
begin
  for i:=1 to n do 
    read(a[i]);         //读入n个初始数据
  for i:=1 to n-1 do                           //进行9次排序
    begin
       for j:=i+1 to n do                 //将第i个数与其后所有数比较
         if a[i]<a[j] then                    //若有比a[i]大,则与之交换
            begin
               t:=a[i];
               a[i]:=a[j];
               a[j]:=t;
            end;
    end;
  for i:=1 to 10  do 
  write(a[i],' ');
end.
字符串:

说到字符串,就不得不用一些函数了,下面的函数请诸位记一记,尤其是蓝色的字

函数和过程名
功      能
说      明
copy(s,m,n)
取s中第m个字符开始的n个字符
若m大于s的长度,则返回空串;否则,若m+n大于s的长度,则截断
length(s)
求s的动态的长度
返回值为整数
pos(sub,s)
在s中找子串sub
返回值为sub在s中的位置,为byte型
insert(sour,s,m)
在s的第m个字符位置处插入子串sour
若返回串超过255,则截断
delete(s,m,n)
删除s中第m个字符开始的n个字符串
若m大于s的长度,则不删除;否则,若m+n大于s的长度,则删除到结尾
str(x[:w[:d]],s)
将整数或实数x转换成字符串s
w 和 d是整型表达式,意义同带字宽的write语句
val(s,x,code)
将字符串S 转换成整数或实数x
若S中有非法字符,则code存放非法字符在S中的下标;否则,code为零。code为整型
upcase(ch)
将字母ch转换成大写字母
若ch不为小写字母,则不转换

举个栗子让诸位运用一下

正确的邮箱地址格式是“用户名@服务器名”,输入一个邮箱地址判断它是不是合法的邮箱地址。

【分析】

此题的题意很简单,在判断邮箱地址合法性上需要考虑:
         1.邮箱地址字符串中是否包括字符“@”;
            2.@字符不能出现在第一个位置也不能出现字符的末尾。

答案

var   
    p : integer;
    s : string;
begin
      readln(s);
      p := pos('@',s);
    if 
         (p>1) and (p<length(s)) then 
         writeln('ok')
    else 
         writeln('error');
end.
谢谢大家,求关注哦!!!




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值