经典算法程序实现15(常见算法)
- 格式:docx
- 大小:27.52 KB
- 文档页数:4
c语言算法100例以下是一些经典的C语言算法题目,总共提供100个例子供你练习和学习:1.编写一个程序,计算并输出斐波那契数列的前20个数。
2.编写一个程序,判断一个数是否为素数。
3.编写一个程序,计算并输出一个数的阶乘。
4.编写一个程序,实现两个数的交换(不使用第三个变量)。
5.编写一个程序,找出一个数组中的最大值。
6.编写一个程序,将一个字符串反转。
7.编写一个程序,判断一个字符串是否为回文字符串。
8.编写一个程序,实现冒泡排序算法对一个数组进行排序。
9.编写一个程序,实现二分查找算法在一个有序数组中查找指定的元素。
10.编写一个程序,计算并输出斐波那契数列的第n个数。
11.编写一个程序,将一个二维数组顺时针旋转90度。
12.编写一个程序,计算并输出一个数的平方根。
13.编写一个程序,判断一个字符串中是否包含重复字符。
14.编写一个程序,实现插入排序算法对一个数组进行排序。
15.编写一个程序,将一个有序数组合并为一个有序数组。
16.编写一个程序,判断一个数是否为完全数(即所有因子之和等于该数本身)。
17.编写一个程序,计算并输出一个数的倒数。
18.编写一个程序,判断一个字符串是否是另一个字符串的子串。
19.编写一个程序,实现选择排序算法对一个数组进行排序。
20.编写一个程序,计算并输出两个数的最大公约数。
21.编写一个程序,实现快速排序算法对一个数组进行排序。
22.编写一个程序,将一个字符串中的所有空格替换为指定的字符。
23.编写一个程序,判断一个数是否是回文数。
24.编写一个程序,计算并输出两个数的最小公倍数。
25.编写一个程序,实现归并排序算法对一个数组进行排序。
26.编写一个程序,判断一个字符串是否是有效的括号串。
27.编写一个程序,计算并输出一个数的立方根。
28.编写一个程序,实现堆排序算法对一个数组进行排序。
29.编写一个程序,判断一个数是否是质数。
30.编写一个程序,计算并输出一个数的二进制表示。
scratch经典算法实例以下是几个经典的算法实例:1. 冒泡排序算法(Bubble Sort):冒泡排序是一种简单的排序算法。
它通过不断交换相邻的两个元素将最大的元素冒泡到最后一位,然后再对剩下的元素进行同样的操作,直到整个数组排序完成。
2. 插入排序算法(Insertion Sort):插入排序是一种简单直观的排序算法。
它将数组分为已排序和未排序两部分,每次从未排序部分选取一个元素,插入到已排序部分的正确位置。
3. 选择排序算法(Selection Sort):选择排序是一种简单直观的排序算法。
它每次从未排序部分选择最小(或最大)的元素,然后与未排序部分的第一个元素进行交换。
4. 快速排序算法(Quick Sort):快速排序是一种高效的排序算法。
它通过选择一个基准元素,将数组分为两部分,一部分小于基准元素,一部分大于基准元素,然后对两部分分别递归地进行快速排序。
5. 归并排序算法(Merge Sort):归并排序是一种高效的排序算法。
它通过将数组分成两部分,对每部分递归地进行归并排序,然后将两个有序的部分合并成一个有序的数组。
6. 二分查找算法(Binary Search):二分查找是一种高效的查找算法。
它通过将有序数组分为两部分,每次根据中间元素与目标值的大小关系,将查找范围缩小一半,直到找到目标值或查找范围为空。
7. 链表反转算法(Reverse Linked List):链表反转是一种常见的操作。
它通过将链表的指针方向逆转,实现原链表的反转。
8. 字符串匹配算法(String Matching):字符串匹配是一种常见的问题。
常用的算法包括暴力匹配、KMP算法和Boyer-Moore算法等,它们通过不同的方法在文本中查找指定的模式串。
以上算法示例都是经典而重要的算法,对算法的理解和掌握有很大帮助。
除了上述算法外,还有很多其他的经典算法,如动态规划、贪心算法、最短路径算法等,它们在实际应用中有着广泛的用途。
c++实现经典算法题目C++是一种功能强大的编程语言,可以用于实现各种经典算法题目。
下面我会给出一些常见的经典算法题目,并给出它们在C++中的实现示例。
1. 二分查找算法:二分查找是一种高效的查找算法,适用于有序数组。
其基本思想是将查找区间一分为二,然后判断目标值在哪个区间,并继续在该区间内进行查找,直到找到目标值或区间为空。
cpp.int binarySearch(vector<int>& nums, int target) {。
int left = 0;int right = nums.size() 1;while (left <= right) {。
int mid = left + (right left) / 2; if (nums[mid] == target) {。
return mid;} else if (nums[mid] < target) {。
left = mid + 1;} else {。
right = mid 1;}。
}。
return -1; // 目标值不存在。
}。
2. 快速排序算法:快速排序是一种高效的排序算法,基于分治的思想。
它选择一个基准元素,将数组分为两个子数组,小于基准元素的放在左边,大于基准元素的放在右边,然后递归地对子数组进行排序。
cpp.void quickSort(vector<int>& nums, int left, int right) {。
if (left >= right) {。
return;}。
int pivot = partition(nums, left, right);quickSort(nums, left, pivot 1);quickSort(nums, pivot + 1, right);}。
int partition(vector<int>& nums, int left, int right) {。
算法学习中的经典算法实现与应用案例在计算机科学领域中,算法是解决问题的一种方法或步骤的描述。
它是一种确定性的、有限的、有效的计算过程,可以将输入转换为输出。
算法学习是计算机科学的基础,它涉及到各种经典算法的实现和应用。
一、排序算法排序算法是算法学习中最基础也是最常用的一类算法。
它们的目标是将一组元素按照特定的顺序进行排列。
其中,冒泡排序是最简单的一种排序算法,它的基本思想是通过相邻元素的比较和交换来实现排序。
另一个经典的排序算法是快速排序,它基于分治法的思想,通过选择一个基准元素将数组划分为两个子数组,然后递归地对子数组进行排序。
这些排序算法在实际应用中有着广泛的应用。
例如,在搜索引擎中,对搜索结果进行排序可以提高用户的搜索体验。
在电商平台中,对商品进行排序可以帮助用户更快地找到自己想要的产品。
此外,在数据分析和机器学习领域,排序算法也扮演着重要的角色。
二、图算法图算法是解决图论问题的一类算法。
图是由节点和边组成的数据结构,它可以用来表示各种关系和网络。
图算法的应用非常广泛,例如最短路径算法可以用来计算两个节点之间的最短路径,广度优先搜索算法可以用来遍历图中的所有节点,深度优先搜索算法可以用来查找图中的环路等等。
在社交网络中,图算法可以用来发现社区结构和关键节点。
在交通规划中,图算法可以用来寻找最佳路径和优化交通流量。
此外,图算法还被广泛应用于网络安全、电信网络优化、推荐系统等领域。
三、动态规划算法动态规划算法是一种通过将问题分解为子问题并存储子问题的解来解决复杂问题的方法。
它通常用于求解具有重叠子问题和最优子结构性质的问题。
动态规划算法的核心思想是通过利用已解决的子问题的解来构建更大的问题的解。
动态规划算法在实际应用中有着广泛的应用。
例如,在旅行商问题中,动态规划算法可以用来求解最短路径问题。
在背包问题中,动态规划算法可以用来求解最大价值问题。
此外,动态规划算法还被广泛应用于自然语言处理、图像处理、机器人路径规划等领域。
常用算法程序一、求两个整型数的最大公约数和最小公倍数while ( r=m%n ){ m=n;n=r ;}最小公倍数为两数之积除以最大公约数。
或:最大公约数:能同时被m和n整除的最大数。
r=m>n?n:mfor(i=1; i<r; i++)if(m%i==0&&n%i==0)a=i;printf("%d", a);二、将12345 的每位分别打印出来。
12345%10=5 12345/10=12341234%10=4 1234/10=123123%10=3 123/10=1212%10=2 12/10=11%10=1 1/10=0while(n){ printf("%d\t",n%10);n=n/10;}三、求素数判断一个数t 是否为素数,用2到t-1循环除。
for( i=2; i<t ; i++)if(t%i==0)break;if (i==t) printf("是素数。
\n");else printf("不是素数\n");四、枚举法,把可能的值一一枚举出来,把满足条件的输出。
例如:鸡兔共有30只,脚共有90只,问鸡兔各有多少?void main(void){ int i; /*i代表鸡,则兔为30-i只*/for(i=0; i<=15; i++)if(2*i + 4*(30-i)= =90){ printf("鸡: %d\n", i);printf("兔: %d\n",30-i);}}五、解方程:牛顿切线法、弦切法和两分法(见课件)六、排序算法1.冒泡法对具有10个元素的整型数组排序for (j=0; j<n-1; j++)for (i=0; i<n-1-j; i++){ if (a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;}}2.选择法for (i=0; i<n-1; i++){ k=i;for (j=i; j<n ; j++)if (a[j]<a[k]) k=j ;if(i!=k){t=a[k]; a[k]=a[i]; a[i]=t;}}七、倒序算法:#include<stdio.h>void main(){int a[10]={1,2,3,4,5,6,7,8,9,10},i,j,t;for(i=0,j=9;i<j;i++,j--){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}八、求最大值(打擂台法见课件)九、进制转换例:输入一个十进制数,输出它对应的八进制数。
15种计算机算法过程模拟演示朋友们!今天咱们要来一场超级有趣的计算机算法之旅,一起看看这15种算法就像一个个神奇的小魔法师,是怎么在计算机的世界里大显身手的。
首先得说说这大名鼎鼎的冒泡排序算法。
想象一下,有一群调皮的数字小朋友在排队,冒泡排序就像是一个严格的老师,从队伍的开头开始,一个一个地比较相邻的两个数字。
如果前面的数字比后面的大,那就让它们俩交换位置,就好像前面的小朋友太调皮了,得和后面更守规矩的小朋友换个位置。
这样一轮一轮下来,最大的数字就像一个小泡泡一样,慢慢地“浮”到了队伍的最后面。
重复这个过程,直到所有的数字都排好了整齐的队伍。
再瞧瞧这二分查找算法。
这就好比你要在一本厚厚的字典里找一个单词。
你不会傻乎乎地从第一页开始一页一页地翻吧?二分查找就聪明多啦!它先看看字典的中间那一页,如果要找的单词在这一页前面,那就只在前半部分继续找;要是在后面,就只在后半部分找。
这样每次都能把查找的范围缩小一半,很快就能找到目标单词啦,是不是很机智?然后是贪心算法。
这个算法有点像超级贪心的小仓鼠,每次做选择的时候,它都只选眼前看起来最好的那个选项,从不考虑长远。
比如说,你要去旅游,有好多景点可以去,但是时间有限。
贪心算法可能就会先选那个离你最近、看起来最有趣的景点,而不会去考虑后面的安排。
虽然有时候它可能得不到最优解,但在很多情况下,也能得到一个还不错的结果哦。
接下来是动态规划算法。
这可就像是一个超级有规划的建筑师,在盖房子之前,会把每一块砖、每一根柱子的位置都设计好。
动态规划会把一个大问题分解成好多好多小问题,然后先把这些小问题的解都算出来,存起来。
等遇到大问题的时候,就可以直接用这些小问题的解来拼凑出大问题的解啦,是不是很巧妙?还有回溯算法,它就像一个勇敢的探险家,在一个迷宫里探索。
它会一条路一条路地试,如果走到了死胡同,就退回来,换一条路继续走。
直到找到出口或者把所有的路都试遍了为止。
这种不怕失败、勇往直前的精神,还真值得我们学习呢!快速排序算法也不能错过。
15种计算机算法过程模拟演示以下是15种计算机算法过程模拟演示的例子:1. 二分查找算法:通过展示一个有序数组的二分查找过程,演示如何快速找到目标值。
2. 插入排序算法:展示一个无序数组的插入排序过程,演示如何逐步将元素插入到正确的位置。
3. 冒泡排序算法:展示一个无序数组的冒泡排序过程,演示如何通过不断交换相邻元素来达到排序目的。
4. 选择排序算法:展示一个无序数组的选择排序过程,演示如何每次选择最小(或最大)的元素,逐步构建有序数组。
5. 归并排序算法:展示一个无序数组的归并排序过程,演示如何将数组逐步拆分成小块并按顺序合并。
6. 快速排序算法:展示一个无序数组的快速排序过程,演示如何通过选取一个基准值,并将数组划分为比基准值小和大的两部分来实现排序。
7. 希尔排序算法:展示一个无序数组的希尔排序过程,演示如何通过间隔逐步减小的方式,进行多次插入排序达到快速排序目的。
8. 计数排序算法:展示一个无序数组的计数排序过程,演示如何通过计算每个元素的出现次数,并根据次数重新排列数组。
9. 基数排序算法:展示一个无序数组的基数排序过程,演示如何按照元素的个位、十位、百位等进行多轮排序,最终达到有序结果。
10. 单源最短路径算法(如Dijkstra算法):展示一个给定图的单源最短路径计算过程,演示如何不断更新节点之间的最短路径。
11. 最小生成树算法(如Prim算法、Kruskal算法):展示一个给定图的最小生成树计算过程,演示如何通过选择最小权重的边来逐步构建最小生成树。
12. 动态规划算法:展示一个动态规划问题的解决过程,演示如何通过分解问题为子问题,并利用已计算的子问题结果来求解整体问题。
13. 贪心算法:展示一个贪心算法的应用过程,演示如何每次选择当前最优的解决方案,以期望达到全局最优。
14. 深度优先搜索算法(DFS):展示一个图的深度优先搜索过程,演示如何递归地遍历图的所有节点。
15. 广度优先搜索算法(BFS):展示一个图的广度优先搜索过程,演示如何逐层地遍历图的节点,并找到最短路径。
CRC常见算法的C语言实现CRC(Cyclic Redundancy Check)是一种常见的数据校验算法,用于检测或校正以循环方式传输的数据中的错误。
CRC算法在通信、存储、校验等领域得到广泛应用。
以下是CRC常见算法的C语言实现示例。
1.CRC-8校验算法:```// CRC-8 polynomial: x^8+x^2+x+1 (0x07)unsigned char crc8(const unsigned char *data, unsigned int length)unsigned char crc = 0;for (unsigned int i = 0; i < length; i++)crc ^= data[i];for (unsigned int j = 0; j < 8; j++)if (crc & 0x80)crc = (crc << 1) ^ 0x07;elsecrc <<= 1;}}return crc;```2.CRC-16校验算法:```// CRC-16 polynomial: x^16+x^15+x^2+1 (0x8005)unsigned short crc16(const unsigned char *data, unsigned int length)unsigned short crc = 0;for (unsigned int i = 0; i < length; i++)crc ^= (unsigned short)data[i] << 8;for (unsigned int j = 0; j < 8; j++)if (crc & 0x8000)crc = (crc << 1) ^ 0x8005;elsecrc <<= 1;}}return crc;```3.CRC-32校验算法:```// CRC-32 polynomial: 0x04c11db7unsigned int crc32(const unsigned char *data, unsigned int length)unsigned int crc = 0xFFFFFFFF;for (unsigned int i = 0; i < length; i++)crc ^= data[i];for (unsigned int j = 0; j < 8; j++)if (crc & 1)elsecrc >>= 1;}}return ~crc;```以上是常见的CRC校验算法的C语言实现示例。
C语言常用算法范文C语言是一种非常流行的编程语言,广泛用于软件开发和算法实现。
在C语言中,有许多常用的算法,可供开发人员使用。
下面将介绍一些常用的C语言算法。
一、排序算法:1.冒泡排序:简单的比较相邻元素的大小并交换位置,时间复杂度为O(n^2)。
2.选择排序:每次选择最小(或最大)的元素,并将其放在已排序的部分的末尾,时间复杂度为O(n^2)。
3.插入排序:将每个元素插入到已排序的子数组中的适当位置,时间复杂度为O(n^2)。
4. 快速排序:通过递归的方式将数组划分为较小和较大的两部分来进行排序,时间复杂度为O(nlogn)。
5. 归并排序:将数组分成两个子数组,对每个子数组进行排序,并将结果合并,时间复杂度为O(nlogn)。
二、查找算法:1.顺序查找:逐个比较数组元素,直到找到目标元素或完整个数组,时间复杂度为O(n)。
2. 二分查找:将有序数组分成两部分,通过比较中间元素与目标元素的大小来确定继续查找的区间,时间复杂度为O(logn)。
3. 插值查找:根据目标元素在数组中的分布情况,按比例估计目标元素的位置,时间复杂度为O(logn)。
三、图算法:1.广度优先(BFS):从给定节点开始,依次访问其所有邻接节点,然后再逐次访问其邻居的邻居,以此类推,直到访问到所有节点为止。
2.深度优先(DFS):从给定节点开始,逐个访问其邻接节点,并以当前节点为起点继续遍历直到无法继续为止,然后回溯到上一个节点,继续遍历其他节点。
3. 最短路径算法:通过求解从一个节点到所有其他节点的最短路径来确定两个节点之间的最短路径。
常用的算法有Dijkstra算法和Floyd-Warshall算法。
四、字符串匹配算法:1.暴力匹配:遍历主串和模式串中的所有字符,依次比较是否相等,若不相等则回到主串指定位置重新开始匹配,时间复杂度为O(n*m)。
2.KMP算法:通过计算模式串的最长相等前缀和最长相等后缀的长度,减少匹配中的不必要比较,时间复杂度为O(n+m)。
常⽤经典算法(整理中)C语⾔经典算法及程序算法(Algorithm):计算机解题的基本思想⽅法和步骤。
算法的描述:是对要解决⼀个问题或要完成⼀项任务所采取的⽅法和步骤的描述,包括需要什么数据(输⼊什么数据、输出什么结果)、采⽤什么结构、使⽤什么语句以及如何安排这些语句等。
通常使⽤⾃然语⾔、结构化流程图、伪代码等来描述算法。
⼀、⼀些简单算法1.求两个整数的最⼤公约数、最⼩公倍数2.判断素数3.验证哥德巴赫猜想4.超级素数5.猴⼦选⼤王6.数的全排列7.迭代法求平⽅根⼆、排序算法1.选择排序2.冒泡排序3.插⼊排序4.快速排序5.第K⼩元素6.⼆分查找法三、⾼精度数算法1.已知P,且P×S=11...1,求S及1的个数2.⾼精度数加法3.⾼精度数减法4.⾼精度数乘法5.⾼精度数除法6.⾼精度数阶乘7. Fibonacci数列四、数据结构相关问题1.左右括号配对2.多项式相加3.N叉树五、复杂算法1.N⼥王问题六、动态规划实例应⽤1.求序列的最⼤连续序列和2.求序列的最长下降⼦序列长度3.数塔问题(解法⼀)4.数塔问题(解法⼆)⼀、⼀些简单算法1.求两个整数的最⼤公约数、最⼩公倍数最⼤公约数算法:(最⼩公倍数=两个整数之积/最⼤公约数)(1) 对于已知两数m,n,使得m>n;(2) m除以n得余数r;(3) 若r=0,则n为求得的最⼤公约数,算法结束;否则执⾏(4);(4) m←n,n←r,再重复执⾏(2)。
程序:#include "stdio.h"int main( ){ int nm,r,n,m,t;printf("please input two numbers:\n");scan f("%d,%d”,&m,&n);nm=n*m;if (mn*/r=m%n;while (r!=0){ m=n; n=r; r=m%n; }printf("最⼤公约数:%d\n",n);printf("最⼩公倍数:%d\n",nm/n);return 0;}2.判断素数(只能被1或本⾝整除的数称为素数)算法:把m作为被除数,将2—INT(sqrt(m) )作为除数,如果都除不尽,m就是素数,否则就不是。
______________________________________________________________________________________________________________ 精品资料 经典算法程序实现2018
(综合练习) 班级:__________姓名:__________ 1.用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 Public Sub GetTJput() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer Dim i As Integer, p As Integer '产生100个[0,99]范围内的随机整数 For i = 1 To 100 a(i) = Int(Rnd * 100) If a(i) < 10 Then Lab1.Caption= Lab1.Caption & " " & Str(a(i)) Else Lab1.Caption= Lab1.Caption & Str(a(i)) End If '每行10个在标签Lab1显示出来 If ______________ Then ' 字符串常量VbCrLf的作用:换行 Lab1.Caption= Lab1.Caption & VbCrLf End If Next i '统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0 '的数的个数,并将统计结果保存在数组x(1),x(2),...,x(10) '中,将统计结果在标签Lab2显示出来 For i = 1 To 100 p =______________ '求个位上的数字 If p = 0 Then p = 10 x(p) =______________ Next i Lab2.Caption="统计结果" For i = 1 To 10 p = i If i = 10 Then _____________ Lab2.Caption= Lab2.Caption & "个位数为"+ _ Str(p) + "共" + Str(x(i)) + "个" Next i End Sub 2. 哥德巴赫猜想:任意一个大于等于6的偶数都可以分解为两个素数之和。 基本思想:n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=N-n1)是否素数。然后使n1+2 再检验n1、n2是否
素数,… 直到n1=n/2为止。 ’ Prime函数功能:若为素数返回True,不是则返回False Function Prime( m as Integer) As _____________ Dim i As Integer _____________ For i=2 To int(sqr(m)) If m Mod i = 0 Then Prime=False: Exit For Next i End Function ’利用上面的Prime函数,验证哥德巴赫猜想 Dim n As Integer,n1 As Integer,n2 As Integer n=Val(InputBox("输入大于6的正整数")) For n1=3 to n\2 step 2 n2=n-n1 If prime(n1) Then If _____________ then Print n & "=" & n1 & "+" & n2 Exit For '结束循环 End if End if Next n1 3.合并法排序(将两个有序数组A、B合并成另一个有序的数组C,升序) 基本思想: 1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组; 2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完; 3)将另一个数组剩余元素抄入C数组,合并排序完成。 程序段如下: '当A和B数组均未比较完 Private Sub Cmd_Click() Dim A(1 To 200) As Integer Dim B(1 To 200) As Integer Dim ia As Integer,ib As Integer Dim na As Integer,nb As Integer 'A、B数组数据从外部文件读入,分别存储在A(1)、B(1)开始的元素中,数据个数存储在na、nb中 ia=1: ib=1: ic=_______ Do While _______________________ If A(ia) < B(ib) Then C(ic) = A(ia): ia = ia + 1 Else C(ic) = B(ib): ib = ib + 1 End If _____________ Loop 'A数组中的剩余元素抄入C数组 ______________________________________________________________________________________________________________ 精品资料 Do While ia <= na C(ic) = A(ia) ia = ia + 1: ic = ic + 1 Loop 'B数组中的剩余元素抄入C数组 Do While ib <= nb C(ic) = B(ib) __________: ic = ic + 1 Loop End Sub 4.顺序查找法(在一列数中查找某数key) Private Command1_Click() Dim a(1 To 100) As Integer Dim n As Integer,p As Integer,i As Integer Dom key As Integer key =Val(Text1.Text) For i=1 To 100 A(i)=Int(Rnd()*100)+1 Next i p = 1 Do While __________________________ p = p + 1 Loop If p>100 then Text1.Text= "找不到:" & Str(Key) Else Text1.Text= "找到:" & Str(Key) & "位置:" Str(p) End Sub 5.把一个数插到有序数列中,插入后数列仍然有序 基本思想:n个有序数(从小到大)存放在数组a(1)—a(n)中,要插入的数x。首先确定x插在数组中的位置p;(可由以下语句实现) p=1 Do While _____________ and p<=n p=p+1 Loop ’a(p)—a(n)元素向后顺移一个位置以空出a(p)元素放入x,可由以下语句实现: For i=n To p Step -1 __________________________ Next i a(p)=x 6.简单加密和解密 加密的思想是: 将每个字母C加(或减)一序数K,即用它后的第K个字母代替,变换式公式: c=chr(Asc(c)+k) 例如序数k为5,这时 "A"→ "F", "a"→?"f","B"→?"G"… 当加序数后的字母超过"Z"或"z"则 c=Chr(Asc(c)+k -26) 例如:You are good→ Dtz fwj ltti 解密为加密的逆过程 将每个字母C减(或加)一序数K,即 c=chr(Asc(c)-k), 例如序数k为5,这时 "Z"→"U", "z"→"u","Y"→"T"… 当加序数后的字母小于"A"或"a"则 c=Chr(Asc(c)-k +26) 下段程序是加密处理: i = 1: strp = "" nL = Len(strI) Do While (i <= nL) strT = _____________ '取第i个字符 If (strT >= "A" And strT <= "Z") Then iA = Asc(strT) + 5 If iA > Asc("Z") Then iA = iA - 26 strp = strp + Chr(iA) ElseIf (strT >= "a" And strT <= "z") Then iA = Asc(strT) + 5 If _____________ Then iA = iA - 26 strp = strp + Chr(iA) Else strp = strp + strT End If i = i + 1 Loop Print strp 7.统计文本单词的个数 (1)从文本(字符串)的左边开始,取出一个字符;设逻辑量WT表示所取字符是否是单词内的字符,初值设为False; (2)若所取字符不是“空格”,“逗号”,“分号”或“感叹号”等单词的分隔符,再判断WT是否为True,若WT不为True则表是新单词的开始,让单词数Nw=Nw+1,让WT=True; (3)若所取字符是“空格”,“逗号”,“分号”或“感叹号”等单词的分隔符, 则表示字符不是单词内字符,让WT=False; (4)再依次取下一个字符,重得(2)(3)直到文本结束。 下面程序段是字符串strI中包含的单词数 Nw = 0: Wt = _____________ nL = Len(strI) For i = 1 To nL strT = Mid(strI, i, 1) '取第i个字符 If strT=" " Or strT="," Or strT=";" Or strT="!" Then Wt = False Else If Not Wt Then Nw = Nw + 1 _____________ End If End If Next i Print "单词数为:", Nw