经典算法题目

合集下载

算法竞赛入门经典 题单

算法竞赛入门经典 题单

算法竞赛入门经典题单以下是算法竞赛入门经典的一些题目:1. 两数之和2. 三数之和3. 最长回文子串4. 数组中去除重复项5. 盛最多水的容器6. 最长递增子序列7. 买卖股票的最佳时机8. 翻转二叉树9. 合并两个有序链表10. 合并K个升序链表11. 二分查找12. 寻找旋转排序数组中的最小值13. 矩阵中的路径14. 三数之积最大值15. 盛最多水的容器 II16. 最长回文子串 II17. 最长回文子串 III18. 最长公共子序列19. 二分查找的变种20. 二分搜索树中的第K小元素21. 二叉树的最大深度22. 二叉树的层序遍历23. 二叉树的镜像24. 二叉树中每个节点的值都不重复的子树个数25. 二叉树的叶子节点之和26. 二叉树中所有的路径长度之和27. 斐波那契数列28. 快慢指针解决链表问题29. 单链表中的插入节点问题30. 单链表中的删除节点问题31. 判断链表中是否有环32. 在链表中查找第k个节点33. 反转链表34. 对链表进行排序35. 约瑟夫环问题36. 括号匹配问题37. 二进制中1的个数问题38. 寻找数组中两个数,使得它们的和等于一个给定的值39. 寻找数组中最大的k个数40. 求一个数组中所有元素的和41. 求一个数组中的第k大元素42. 寻找数组中只出现一次的数字(经典的异或解法)43. 二分查找的变种(数组中连续子数组的长度)44. 在二叉搜索树中插入节点问题(先序、中序、后序遍历)45. 在二叉搜索树中查找最大值和最小值节点问题46. 二叉搜索树中查找是否存在某个节点的问题47. 二叉搜索树转换为排序的双向链表问题(中序遍历)。

算法练习题及答案

算法练习题及答案

算法练习题及答案算法练习题及答案随着计算机科学的发展,算法成为了计算机科学的核心内容之一。

算法是一种解决问题的方法和步骤,它可以将复杂的问题简化为一系列简单的操作。

为了提高算法设计和分析的能力,许多学生和程序员经常进行算法练习。

在这篇文章中,我将给出一些常见的算法练习题及其答案,希望能对读者有所帮助。

1. 反转字符串题目:给定一个字符串,将其反转并返回。

解答:可以使用两个指针,一个指向字符串的开头,一个指向字符串的末尾。

然后交换两个指针指向的字符,然后分别向中间靠拢,直到两个指针相遇。

2. 判断回文数题目:给定一个整数,判断它是否是回文数。

回文数是指正序和倒序读都一样的整数。

解答:可以将整数转换为字符串,然后使用反转字符串的方法判断是否相等。

另一种方法是将整数反转后与原来的整数进行比较。

3. 寻找两个有序数组的中位数题目:给定两个有序数组,找出这两个数组合并后的中位数。

要求时间复杂度为O(log(m+n))。

解答:可以使用二分查找的思想。

首先将两个数组合并成一个有序数组,然后找到中位数的位置。

如果数组长度为奇数,中位数就是中间的元素;如果数组长度为偶数,中位数就是中间两个元素的平均值。

4. 搜索旋转排序数组题目:给定一个按照升序排列的整数数组,经过旋转后的数组,搜索一个给定的目标值。

如果目标值存在于数组中,则返回它的索引,否则返回-1。

解答:可以使用二分查找的思想。

首先找到数组的中间元素,然后判断中间元素与目标值的关系。

如果中间元素等于目标值,直接返回索引;如果中间元素小于目标值,说明目标值在右半部分,继续在右半部分进行二分查找;如果中间元素大于目标值,说明目标值在左半部分,继续在左半部分进行二分查找。

5. 最长公共前缀题目:给定一个字符串数组,找到这些字符串的最长公共前缀。

解答:可以将第一个字符串作为初始的最长公共前缀,然后逐个比较后面的字符串与最长公共前缀的相同部分。

如果相同部分为空,则返回空;如果相同部分不为空,则更新最长公共前缀。

c语言算法100例

c语言算法100例

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.编写一个程序,计算并输出一个数的二进制表示。

js算法面试经典100题

js算法面试经典100题

js算法面试经典100题以下是面试中常见的100个经典算法问题,适用于JavaScript:1. 两数之和2. 反转字符串3. 验证回文串4. 整数反转5. 最长公共前缀6. 合并两个有序数组7. 有效的括号8. 删除排序数组中的重复项9. 删除链表中的节点10. 实现 strStr()11. 替换空格12. 二叉树的最大深度13. 对称二叉树14. 二叉树的层次遍历15. 二叉搜索树的最近公共祖先16. 删除链表的倒数第N个节点17. 旋转数组18. 合并两个有序链表19. 链表的中间节点20. 最大子序和21. 阶乘尾部的零22. 爬楼梯23. 二叉树的前序遍历24. 杨辉三角25. 有效的数独26. 反转链表27. 验证二叉搜索树28. 实现Trie29. 最长有效括号30. 合并区间31. 两两交换链表中的节点32. 下一个排列33. 逆波兰表达式求值34. 最大矩形35. 字符串相乘36. 删除链表中的重复元素37. 螺旋矩阵38. 使用队列实现栈39. 最长连续序列40. 交错字符串41. 单词拆分42. 最后一个单词的长度43. 二叉树的右视图44. 跳跃游戏45. 翻转二叉树46. 字母异位词分组47. 复原IP地址48. 最小覆盖子串49. 丑数50. 栈的压入弹出序列51. 二叉树中和为某一值的路径52. 二叉搜索树的后序遍历序列53. 二进制求和54. 分隔链表55. 不同路径56. 最小路径和57. 字符串转换整数58. 搜索二维矩阵59. 环形链表60. 路径总和61. 删除链表的节点62. 最长上升子序列63. 最大子数组乘积64. 排序链表的合并65. 在排序数组中查找元素的第一个和最后一个位置66. 同结构的二叉树67. 乘积最大子数组68. 两个排序数组的中位数69. 合并K个排序链表70. 数组中的逆序对71. 反转链表的前N个节点72. 最大值和最小值的差73. 翻转字符串中的单词74. 前 K 个高频元素75. 分青红蓝球问题76. 回文数77. 括号生成78. 长度最小的子数组79. 根据身高和序号重组队列80. 两数相加81. 数字的英文表示82. 二叉树的锯齿形层次遍历83. 在O(1)时间内删除链表节点84. 用栈实现队列85. 二叉树的层平均值86. 二叉树的右侧视图87. 螺旋矩阵 II88. 颜色分类89. 寻找重复数90. 打家劫舍91. 按序打印92. 找到字符串中所有字母异位词93. 丑数 II94. 外观数列95. 在排序链表中删除重复元素 II96. 两数相除97. 不同的二叉搜索树98. 最长回文子串99. 缺失的第一个正数100. 寻找最大公约数这些问题涵盖了数据结构和算法中的常见题目。

算法练习题——精选推荐

算法练习题——精选推荐

算法练习题1. 斐波那契数列:1 1 2 3 5 8 13 21 …… 求第20个数;2. 今有雉兔同笼,上有三⼗五头,下有九⼗四⾜,问雉兔各⼏何?3. 求1000以内的⽔仙花数4. 求⼀个数的阶乘5. 求多个连续数的阶乘之和6. 如果今天是星期⼆,那么1000天后是星期⼏?⽤户输⼊⼀个天数,计算这个天数后是星期⼏?7. 苹果3元⼀个,鸭梨2元⼀个,桃⼦1元⼀个。

现在想⽤200元买100个⽔果,在控制台中列出所有可能性8. 求任意⼀个⼩于100000的正整数的位数,并逆序打印每⼀位数字⽐如:567,位数是3位,以此打印7 ,6 ,59. 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

程序分析:请抓住分⼦与分母的变化规律。

10. 有⼀些苹果,每⼈分5个多1个,每⼈分6个多2个,每⼈分7个多3个,⼀共有多少个苹果11. 判断⼀个数字是不是素数12. 利⽤条件运算符的嵌套来完成此题:学习成绩>=90分的同学⽤A表⽰,60-89分之间的⽤B表⽰,60分以下的⽤C表⽰。

1.程序分析:(a>b)?a:b这是条件运算符的基本例⼦。

13. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀个数字。

例如2+22+222+2222+22222(此时共有5个数相加),⼏个数相加由⽤户输⼊(prompt)14. ⼀球从100⽶⾼度⾃由落下,每次落地后反跳回原⾼度的⼀半;再落下,求它在第10次落地时,共经过多少⽶?第10次反弹多⾼?15. 求10000以内的完美数如果⼀个数恰好等于它的约数之和,则称该数位“完美数”。

16. 寻找丑数题⽬:我们把只包含因⼦2、3 和5 的数称作丑数(Ugly Number)。

例如6、8 都是丑数,但14 不是,因为它包含因⼦7。

习惯上我们把1 当做是第⼀个丑数。

求按从⼩到⼤的顺序的第1500 个丑数。

17. 猴⼦吃桃问题:猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不瘾,⼜多吃了⼀个第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。

10个节点最短路径算法题

10个节点最短路径算法题

10个节点最短路径算法题最短路径算法是图论中的一种重要算法,用于计算两个节点之间的最短路径。

在以下内容中,将介绍并讨论10个与最短路径算法相关的题目,并给出相关参考内容,以加深对该算法的理解。

1. Dijkstra算法题目:给定一个加权有向图和一个源节点,请找出从源节点到每个其他节点的最短路径。

参考内容:《算法导论》(Introduction to Algorithms)一书中第24章,提供了关于Dijkstra算法原理和实现的详细解释。

2. Bellman-Ford算法题目:给定一个加权有向图和一个源节点,请找出从源节点到每个其他节点的最短路径,其中图中可能存在负权边。

参考内容:《算法导论》第24章,提供了Bellman-Ford算法的详细解释和实现。

3. Floyd-Warshall算法题目:给定一个有向图,请找出任意两个节点之间的最短路径。

参考内容:《算法导论》第25章,提供了Floyd-Warshall算法的详细解释和实现。

4. A*算法题目:给定一个加权有向图、一个源节点和一个目标节点,请找出从源节点到目标节点的最短路径。

参考内容:《人工智能:一种现代方法》(ArtificialIntelligence: A Modern Approach)一书中第3章,提供了A*算法的详细解释和实现。

5. Johnson算法题目:给定一个加权有向图,请找出任意两个节点之间的最短路径,其中图中可能存在负权边。

参考内容:《算法导论》第25章,提供了Johnson算法的详细解释和实现。

6. SPFA算法题目:给定一个加权有向图和一个源节点,请找出从源节点到每个其他节点的最短路径。

参考内容:各种算法教材、博客文章和论文中提供了SPFA算法的详细解释和实现,如《算法导论》第24章。

7. Yen's算法题目:给定一个加权有向图、一个源节点和一个目标节点,请找出从源节点到目标节点的K条最短路径。

参考内容:论文《Finding the K Shortest Loopless Paths in a Network》中提供了Yen's算法的详细解释和实现。

递归经典题目

递归经典题目

递归经典题目
递归是一种常用的算法技术,它可以用来解决许多经典问题。

以下是一些经典的递归问题:
1. 斐波那契数列:这是一个经典的递归问题,其中每个数字是前两个数字的和。

例如,斐波那契数列的前几个数字是 0、1、1、2、3、5、8、13、21 等。

2. 阶乘函数:这是一个计算一个数的阶乘的递归函数。

例如,5 的阶乘是 5 4 3 2 1 = 120。

3. 汉诺塔问题:这是一个经典的递归问题,其中有一些盘子需要从一根柱子移动到另一根柱子,每次只能移动一个盘子,并且不能将一个较大的盘子放在较小的盘子上面。

4. 二分搜索:这是一个在排序数组中查找特定元素的递归算法。

它首先将数组分成两半,然后根据目标值与中间元素的比较结果,选择另一半继续搜索。

5. 回溯算法:这是一种通过递归搜索所有可能解的算法,通常用于解决约束满足问题。

例如,排列组合问题、八皇后问题等。

6. 分治算法:这是一种将问题分解为更小的子问题,然后递归地解决这些子问题的算法。

例如,归并排序和快速排序等。

7. 动态规划:这是一种使用递归和备忘录(或称为记忆化)的方法,用于解决具有重叠子问题和最优子结构的问题。

例如,背包问题和最短路径问题等。

这些经典的递归问题涵盖了不同的应用领域和算法类型,可以通过学习和解决这些问题来提高自己的编程和算法技能。

python每日经典算法题5(基础题)+1(较难题)

python每日经典算法题5(基础题)+1(较难题)

python每⽇经典算法题5(基础题)+1(较难题)⼀:基础算法题5道1.阿姆斯特朗数如果⼀个n位正整数等于其各位数字的n次⽅之和,则称该数为阿姆斯特朗数。

判断⽤户输⼊的数字是否为阿姆斯特朗数。

(1)题⽬分析:这⾥要先得到该数是多少位的,然后再把每⼀位的数字截取出来,把各位数字的n次⽅之和和该数⼀起判断即可。

(2)算法分析:python中有len()函数可以得到⼀个字符串的长度,因此需要先把⼀个正整数转化为正整数字符串。

然后从⾼位向低位截取(也可以反过来)。

或者⾼效算法利⽤for循环切⽚。

从⾼位到低位:⽤正整数除了10的n次⽅,得到的商就是⾼位的数,余数就是下次循环的数。

从低位到⾼位:⽤正整数除以10,得到的余数就是低位的数,商就是下次循环的数。

for循环:⽤for循环依次得到每⼀位数。

就是可迭代对象依次显⽰。

(3)⽤到的python语法:while循环,for循环,if语句,函数。

(4)博主答题代码:从⾼位到低位:def judge(num):mysum = 0n = len(str(num)) - 1m = n + 1firstNum = numwhile num > 0:quotient = num // (10**n)remainder = num % (10**n)mysum += quotient ** mnum = remaindern -= 1if mysum == firstNum:print('该数是阿姆斯特朗数')else:print('该数不是阿姆斯特朗数')num = int(input('请输⼊⼀个整数:'))judge(num)从低位到⾼位:def judge(num):mysum = 0n = len(str(num)) - 1m = n + 1firstNum = numwhile num > 0:quotient = num // 10remainder = num % 10mysum += remainder ** mnum = quotientn -= 1if mysum == firstNum:print('该数是阿姆斯特朗数')else:print('该数不是阿姆斯特朗数')num = int(input('请输⼊⼀个整数:'))judge(num)(5)⾼效⽅法:for循环:def judge(num):n = len(num)sum = 0for i in num:sum += int(i) ** nif sum == int(num):print('该数是阿姆斯特朗数')else:print('该数不是阿姆斯特朗数')num = input('请输⼊⼀个整数:')judge(num)2.整数数组给定⼀个整数数组,判断是否存在重复元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i)); }public static int f(int x) {if(x==1 || x==2) return 1;else return f(x-1)+f(x-2); } }【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

【程序3】题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

【程序4】题目:将一个正整数分解质因数。

例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

1.程序分析:(a> b)?a:b这是条件运算符的基本例子。

【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

1.程序分析:利用辗除法。

【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

1.程序分析:利用while语句,条件为输入的字符不为 '\n '.【程序8】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

1.程序分析:关键是计算出每一项的值。

【程序9】题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。

例如6=1+2+3.编程找出1000以内的所有完数。

【程序10】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

【程序12】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

【程序13】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

请看具体分析:【程序14】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

【程序15】题目:输入三个整数x,y,z,请把这三个数由小到大输出。

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y 则将x与y的值进行交换,然后再用x与z进行比较,如果x> z则将x与z的值进行交换,这样能使x最小。

【程序16】题目:输出9*9口诀。

1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

【程序17】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

1.程序分析:采取逆向思维的方法,从后往前推断。

【程序18】题目:两个乒乓球队进行比赛,各出三人。

甲队为a,b,c三人,乙队为x,y,z三人。

已抽签决定比赛名单。

有人向队员打听比赛的名单。

a说他不和x比,c 说他不和x,z比,请编程序找出三队赛手的名单。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

【程序19】题目:打印出如下图案(菱形)****************************1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。

【程序20】题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

1.程序分析:请抓住分子与分母的变化规律。

【程序21】题目:求1+2!+3!+...+20!的和1.程序分析:此程序只是把累加变成了累乘。

【程序22】题目:利用递归方法求5!。

1.程序分析:递归公式:fn=fn_1*4!【程序23】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。

问第4个人岁数,他说比第3个人大2岁。

问第三个人,又说比第2人大两岁。

问第2个人,说比第一个人大两岁。

最后问第一个人,他说是10岁。

请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。

要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

【程序24】题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

【程序25】题目:一个5位数,判断它是不是回文数。

即12321是回文数,个位与万位相同,十位与千位相同。

【程序26】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。

【程序27】题目:求100之内的素数【程序28】题目:对10个数进行排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

【程序29】题目:求一个3*3矩阵对角线元素之和1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

【程序30】题目:有一个已经排好序的数组。

现输入一个数,要求按原来的规律将它插入数组中。

1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

【程序31】题目:将一个数组逆序输出。

1.程序分析:用第一个与最后一个交换。

【程序32】题目:取一个整数a从右端开始的4~7位。

程序分析:可以这样考虑:(1)先使a右移4位。

(2)设置一个低4位全为1,其余全为0的数。

可用~(~0 < <4)(3)将上面二者进行&运算。

【程序33】题目:打印出杨辉三角形(要求打印出10行如下图)1.程序分析:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1【程序34】题目:输入3个数a,b,c,按大小顺序输出。

1.程序分析:利用指针方法。

【程序35】题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

【程序36】题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数【程序37】题目:有n个人围成一圈,顺序排号。

从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

【程序38】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

【程序39】题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n 为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)【程序40】题目:字符串排序。

【程序41】题目:海滩上有一堆桃子,五只猴子来分。

第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。

第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?【程序42】题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。

求??代表的两位数,及809*??后的结果。

【程序43】题目:求0—7所能组成的奇数个数。

【程序44】题目:一个偶数总能表示为两个素数之和。

【程序45】题目:判断一个素数能被几个9整除【程序46】题目:两个字符串连接程序【程序47】题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

【程序48】题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

【程序49】题目:计算字符串中子串出现的次数【程序50】题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 "stud "中。

相关文档
最新文档