任务
求出 100 到 500 之间所有整数的总和。 
让我们编写一个程序来解决这个问题而不使用公式。 如果我们只是将加法的结果写入变量 s,例如,作为
 \(s=100+101+102+103+...+500\), 
我们将在录音本身上花费大量时间,因为计算机不会理解如何在算术表达式中使用省略号,我们将不得不写下从 100 到 500 的所有数字。这样一个程序的价值将是微不足道。特别是如果我们想改变我们的数字并采用不同的范围。
 我们该怎么办?
如果我们注意上面的条目,那么我们经常使用加法“ +”。 
您可以尝试逐渐向  s 变量添加数字。例如,使用这个符号
 s=s+i. 
我们在这里做了什么: 
1) 在右边我们放置了表达式s+i,  即我们取变量s的值 并添加变量的值给它i; 
2)左边我们设置了变量的名称 s,即右边的整个计算结果都会存储在同一个 变量s中,所以我们将更改变量 s  的值。  
它仍然只是在所需范围内更改变量 i 的值。这可以通过 for.  循环来完成
  
我们范围内的100到500的数字依次进入 i变量。 
 例子
# 重要的!首先你需要重置变量s,
# 所以在第一步数字 100 被添加到零,
# 而不是内存中的内容!
小号 = 0
for i in range(100, 501): # 循环头,其中 i
    s += i # 将其值从 100 更改为 500,步长为 1,
                  # 在循环体中逐渐到变量s,
  # 添加变化变量 i 的值,
                  # 并将结果保存回变量 s
 
 
此解决方案与计算操作的总和非常相似: 
 \(s = 0 + 100 = 100, \\ s = 100 + 101 = 201, \\ s = 201 + 102 = 303 \\ ... \)跨度 
  
  
            
            
                  
            
             
                    
            
                 
      
                  
           | 
	
		
 
     
              
              
                  
                       
            
                
          
            给定数中的最大数
在研究条件运算符时,我们谈到了从输入的多个数字中找到最大数字的主题。在“四个数的最大值”问题中我们使用了以下算法: 
1. 将变量M的值赋给四个变量中的第一个; 
2. 如果第二个变量的值大于变量M中的值,则将变量M 的值替换为第二个变量的值;  
3. 如果第三个变量的值大于变量M中的值,则用第三个变量的值替换变量M的值;< br />
4. 如果第四个变量的值大于M变量中的值,则用第四个变量的值替换M 变量的值。  
 
可以看出,每一个 我们与变量M比较的数字 (让我们用X表示),如下: 
 
伪代码
<前>
输入 X
如果 (M < X) 那么
  M = X
 
这段代码的主要内容是确定变量 M 的初始值。 
通常,在解决寻找最大值或最小值的问题时,变量 M 的初始值被分配为等于第一个数字。 
因此,上面的代码必须执行小于数字个数的1次(因为第一个数字必须被输入并存储为变量M的初始值)。 
如果我们从键盘上设置了数字的数量(例如,在变量 n 中),那么我们可以组织一个循环(from 2 to n),使用相同的数字来存储数字变量。 
 
尝试自己编写程序。
            
            
                  
            
             
                    
            
                 
      
                  
           | 
	
		
 
     
              
              
                  
                       
            
                
          
            最大不在所有之中
如果我们不需要在所有输入的数字中找到最大值(最小值),而只是在满足特定条件的数字中找到最大值(最小值),那么我们必须考虑到这样一个事实,即我们取的第一个数字作为最大值的初始值(最低)并不总能满足我们的要求。 
 
例如,如果我们正在寻找最大负数,那么数据集为:\(\{5, -2, 4, 2, -1, -3\}\ ) 我们将得到最大值初始值中的数字5,它是正数并且大于任何负数。因此条件 X > M 永远是 false。 
 
因此,仅在上一题的算法中添加一个负数检查是不够的,还需要考虑到第一个数字可能不满足要求的条件(在这种情况下,为负数) ). 
 
您可以通过在循环内添加以下条件来解决此问题: 
 
伪代码
<前>
如果 X 为负,则
  如果 M >= 0 或 M <; X,那么
    M=X
 
在指定的代码中, M >= 0 条件允许您执行  M = X 操作,即使 M  变量最初包含一个明显大于其余值的值(在我们的示例中,该值等于 5)。 
 
我们还注意到,如果已知数字的范围,则可以将指定范围内的最小(最大)数字作为最大(最小)值的初始值。
            
            
                  
            
             
                    
            
                 
      
                  
           | 
	
		
 
     
              
              
                  
                       
            
                
          
            任务
给出了 N 个数字。查找序列中第二大的元素。
这个问题有两种解释。 
例如,如果给我们一组数字: \(10\ 15\ 20\ 35\ 14\ 35\ 10\),那么答案应该是什么? 
在“第二大元素”下或者简称“次大”,可以理解为: 
1) 如果我们将所有值\u200b\u200bin 非降序排列(排序)(每一个都大于或等于前一个),将会在倒数第二位的值。那么对于所考虑的一组数字,答案将是值 35; 
2) 元素的值,仅大于最大值。那么答案是20。 
如果数字集合中只有一个最大元素(其他的都更少),那么两种解释都是一样的,两种情况的答案都是一样的,否则答案是不同的。
 
考虑第一种情况(我们将在  伪代码). 
为了找到答案,我们将使用两个变量: 
1) maximum1——最大值(第一个最大值); 
2)  maximum2 - 第二个最大值(我们的答案)。
 
如果值变化的范围是已知的,那么我们取一个明显小于范围下限的数字作为初始值(例如,范围从  -1000   到   1000 -取数  -1001) 
如果取值范围未知,那么可以将前两个输入的数分别写入变量 max1和 max2的初始值,然后比较这些两个变量。
<前>
input N //数字个数
输入 a, b
最大值 1 = 一个
最大值2 = b
如果 b >一个,然后
   最大值 1 = b
    max2 = 一个
 
接下来,我们考虑所有其他元素(前2个已经看过,所以我们从第3个开始)
<前>
nc 代表我从 3 到 n
    输入一个
    如果一个> maximum1 //有一个值大于maximum1
      那
        max2 = max1 //之前的第一个高点变成第二个
        max1 = a //新元素将是第一个最大值
      否则
        //下一个元素不超过max1
        // 需要和maximum2值比较
        如果一个>最多 2
          那
            max2 = a //作为新值max2
                           // 在这种情况下 max1 不会改变
        全部
    全部
节拍
 
尝试自己实现这个算法。  
            
            
                  
            
             
                    
            
                 
      
                  
           |