当前位置:网站首页 > Shell脚本编程 > 正文

shell编程总结(shell编程100例)



专栏:50多种数据结构彻底征服

专栏:50多种经典图论算法全部掌握

001, 组无重复数字的数

题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?

问题分析:先在百位数选择一个数字,接着在十位上选择一个数字,最后在个位上选择一个数字,但要保证每次选择的三个数字都互不相同,使用三个for循环即可找出这样的数字。



优化:

上面代码中也可以在for循环的时候判断是否有重复的数字,如果有,则直接跳过。

运行结果:

 

br/>

002,企业发放的奖金根据利润提成

  • 利润 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%提成。

问题分析:

根据利润的区间,让数字在不同的区间分别单独计算。

br/>


运行结果:

 

003,完全平方数

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

问题分析:

假设该数为 x。

1、则 x + 100 = m,x + 100 + 168 = n,其中 m 和 n 都是完全平方数。

2、设 n = a2,m = b2,则 n - m = (a + b)(a - b) = 168,因为a+b和a-b具有相同的奇偶性,又因为168是偶数,所以a+b和a-b都是偶数。

3、设 a+b=2*i,a-b=2*j;可得 i * j = 168/4=42。

4、接下来只需要枚举 i 从 1 到 42 即可,根据上面的公式我们也可以得出 a = i + j,b = i - j,进一步又可以得出 m ,n 以及 x 的值。



运行结果:

 

004,判断当天是这一年的第几天

题目:输入某年某月某日,判断这一天是这一年的第几天?

问题分析:先计算当月之前的总天数,然后再加上当月的天数。比如10月16号,先计算9月(包含9月)之前的总天数,然后加上10月的16天,最后在判断是否是闰年,如果是闰年并且输入的月份大于 2 ,要多加一天。



运行结果:

 

005,三个数由小到大输出

题目:输入三个整数 x、y、z,请把这三个数由小到大输出。

问题分析:先用 x 和 y ,z 比较,只要比它俩小就交换,这样就可以保证 x 是这三个数中最小的。然后用 y 和 z 比较,把最大值保存在 z 中,这样 x、y、z 就是从小到大的了。



运行结果:

 

006,输出字母C图案

题目:用 * 号输出字母C的图案。

问题分析:按照字母C的形状直接输出即可。



运行结果:

 

007,特殊图案

题目:输出特殊图案。

问题分析:不同字符,图形不一样。需要把编码格式改成437 OEM-美国,否则会出现乱码。



运行结果:

008,9*9 乘法表

题目:输出 9*9 口诀。

问题分析:使用两个for循环即可完成。



运行结果:

 

009,国际象棋棋盘

题目:要求输出国际象棋棋盘。

问题分析:国际象棋棋盘由64个黑白相间的格子组成,分为8行*8列。用 i 控制行, j 来控制列,根据 i+j 的和来控制输出黑方格,还是白方格。



运行结果:


010,打印笑脸

题目:打印楼梯,同时在楼梯上方打印两个笑脸。

问题分析:用 ASCII 1 输出笑脸;用 i 和 j 来控制行和列,然后输出白色当做楼梯,要注意需要修改编码格式。



运行结果:


011,兔子生崽

题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)

问题分析:兔子的规律为1,1,2,3,5,8,13,21....,即下个月是上两个月之和,这是一个典型的斐波那契数列。



运行结果:

 

012,101到200的素数

题目:判断 101 到 200 之间的素数。

问题分析:101 到 200之间的偶数不可能是素数,所以我们只需要判断奇数即可。对于每一个奇数,判断能不能被 2 到 sqrt(包含这个数)之间的数整除,如果能被整除,则表明此数不是素数,否则是素数。



运行结果:

 

013,水仙花数

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1^3+5^3+3^3=1+125+27。

问题分析:对于100-999之间的每一个数,分别求出个位,十位,百位,然后计算它们的立方之和是否等于该数本身,如果等于,则是水仙花数,否则不是。



运行结果:

 

014,分解质因数

题目:将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。

问题分析:对于输入的整数n ,判断 2 到 n 之间哪些数能被它整除,如果能被正常,则一直除。比如 120 能被 2 整除,结果是 60 ,60 还能被 2 整除,结果是 30 ,30 还能被 2 整除,结果是 15,15不能被 2 整除,但 15 能被 3 正常,结果是 5 ,5 不能被 3 整除,但 5 能被 5 整除,结果是 1 ,退出循环。



运行结果:

 

015,(a>b)?a:b

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

问题分析:在三目运算符中 c ? a : b ,如果 c 为true,则返回 a ,否则返回 b 。这里我们可以使用三目运算符嵌套来完成此题。



运行结果:

 

016,最大公约数和最小公倍数

题目:输入两个正整数 a 和 b ,求其最大公约数和最小公倍数。

问题分析:最大公约数可以使用辗转相除法和更相减损术两种方式求,这里我们使用辗转相除法来计算最大公约数。最小公倍数可以用输入的两个数之积除于它们的最大公约数求。比如计算 33 和 12 的最大公约数,(33,12)→(12,9)→(9,3),因为 9 能被 3 整除,所以33和12的最大公约数是 3 。



运行结果:

 

017,统计字母、数字等

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

问题分析:对于输入字符进行统计,直到遇到换行符为止。



运行结果:

 

018,s=a+aa+aaa...

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

问题分析:输入的 n 是数字的个数,把所有数字相加即可。



运行结果:

 

019,完数

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数",例如 6=1+2+3 ,请编程找出 1000 以内的所有完数。

问题分析:计算1000以内每个数的因数,判断因数之和是否等于该数,如果等于,则是完数,否则不是。



运行结果:

 

020,小球自由下落

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

问题分析:反弹的高度是原来的一半,路径是反弹高度的两倍,因为反弹需要上和下两个方向。



运行结果:

 

021,猴子吃桃问题

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

问题分析:采取逆向思维的方法,从后往前推断。第 10 天 1 个桃子,第 9 天是2*(1+1)=4个桃子,第 8天是2*(4+1)=10个桃子,以此类推,如果当天吃了 x 个桃子,那么前一天就是2*(x+1)个桃子。



运行结果:

 

022,乒乓球推理

题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

问题分析:c 不和 x,z 比,所以 c 只能和 y 比,a 不和 x 比,所以 a 只能和 z 比,那么 b 只能和 x 比,直接能推算出来,但这里要写出程序,我们来看下。



运行结果:

 

023,打印菱形

题目:打印出如下图案(菱形)。

 

问题分析:先把菱形分成两部分来看待,先打印前 4 行,在打印后 3 行。每行只打印左边的空格,右边的空格不需要打印。



运行结果:

 

024,2/1+3/2+5/3...

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

问题分析:如果把分子和分母单独拿出来,它们都是斐波那契数列,可以参考011,兔子生崽,直接累加分数即可。



运行结果:

 

025,求阶乘的和

题目:求 1 + 2! + 3! + ... + 20! 的和。

问题分析:计算阶乘的值然后累加即可。



运行结果:

 

026,递归求阶乘

题目:利用递归方法求5!。

问题分析:递归公式fun(n)=fun(n-1)*n,当 n 等于 1 的时候,直接返回 1 即可。



运行结果:

 

027,逆序打印字符

题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

问题分析:当输入的字符个数不够 5 个的时候,一直递归输入,当输入 5 个字符的时候开始输出。递归类似于栈,先压栈,后出栈,所以出栈的顺序和输入的顺序是相反的。



运行结果:

 

028,岁数推理

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

问题分析:使用递归的方式,第一个人是 10 岁,第 n 个人的年龄是第 n-1 个人的年龄加 2 。



运行结果:

 

029,逆序打印各位数字

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

问题分析:最多5位数,可以获取数字的每一位,如果万位不等于 0 ,肯定是 5 位数,如果万位是 0 ,千位不等于 0 ,则是 4 位数……,根据这样判断,然后逆序输出。



运行结果:

 

030,判断是否回文数

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

问题分析:一个5位数,只需要提取它的个位,十位,千万,万位数字即可,如果个位和万位数字相等,并且十位和千位数字相等,则是回文数,否则不是。



运行结果:

 

031,判断星期几

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

问题分析:使用Switch语句,如果第一个字母一样,则输入第二个怎么继续判断。



运行结果:

 

032,删字符串中的指定字母

题目:删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。

问题分析:逐个判断原字符串中的字符是否是需要删除的,如果不是删除的则保留。


到此这篇shell编程总结(shell编程100例)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • shell编程入门(Shell编程入门 网盘)2024-12-14 20:18:04
  • shell编程入门(shell编程实例详解)2024-12-14 20:18:04
  • shell编程总结(shell编程常用命令)2024-12-14 20:18:04
  • shell编程简单实例(shell编程总结)2024-12-14 20:18:04
  • 通过shell脚本运行jar包,报错nohup: failed to run command ‘java’: No such file or directory2024-12-14 20:18:04
  • 在centos下通过shell脚本拉取git代码并部署2024-12-14 20:18:04
  • Linux命令行与shell脚本编程大全(shell脚本编程基础部分)_linux shell命令行及脚本编程实例详解2024-12-14 20:18:04
  • shell脚本语言(超全超详细)_shell脚本语言入门2024-12-14 20:18:04
  • shell脚本应用实战_shell脚本编程100例2024-12-14 20:18:04
  • shell编程简单实例(shell编程100例)2024-12-14 20:18:04
  • 全屏图片