Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1721344
  • 博文数量: 171
  • 博客积分: 11553
  • 博客等级: 上将
  • 技术积分: 3986
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-25 20:28
文章分类

全部博文(171)

文章存档

2012年(2)

2011年(70)

2010年(9)

2009年(14)

2008年(76)

分类: Python/Ruby

2011-07-30 16:04:41

    1. bi#!/bin/bash
    2. #【程序1】
    3. #题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    4. #1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
    5. #      掉不满足条件的排列。
    6. #2.程序源代码:
    7. for i in {1..4};do
    8.     for j in {1..4};do
    9.      for k in {1..4};do
    10.          if [ $i -ne $j -a $j -ne $k ]
    11.             then
    12.              echo $i$j$k
    13.             fi
    14.         done
    15.     done
    16. done

    17. #!/bin/bash
    18. #【程序2】
    19. #题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
    20. #   于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
    21. #   成7%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
    22. #   40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
    23. #   100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
    24. #1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      
    25. #2.程序源代码:
    26. bonus1=10000
    27. bonus2=$bonus1 50007
    28. bonus4=$bonus2 100000
    29. bonus6=$bonus4 60000
    30. bonus10=$bonus6 60000

    31. read i
    32. if [ $i -le 100000 ]
    33. then
    34.     bonus=$(($i/10))
    35. elif [ $i -le 200000 ]
    36. then
    37.     bonus=$(($bonus1 $i/1000*75-100*75))
    38. elif [ $i -le 400000 ]
    39. then
    40.     bonus=$(($bonus2 $i/100*5-2000*5))
    41. elif [ $i -le 600000 ]
    42. then
    43.     bonus=$(($bonus4 $i/100*3-4000*3))
    44. elif [ $i -le 1000000 ]
    45. then
    46.     bonus=$(($bonus6 $i/1000*15-600*15))
    47. else
    48.     bonus=$(($bonus10 $i/100-10000))
    49. fi

    50. echo $bonus

    51. #!/bin/bash
    52. #【程序3】
    53. #题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
    54. #1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
    55. #      的结果满足如下条件,即是结果。请看具体分析:
    56. #2.程序源代码:
    57. #
    58. ##include "math.h"
    59. #main()
    60. #{
    61. #long int i,x,y,z;
    62. #for (i=1;i<100000;i )
    63. # { x=sqrt(i 100);   /*x为加上100后开方后的结果*/
    64. #  y=sqrt(i 268);   /*y为再加上168后开方后的结果*/
    65. #   if(x*x==i 100&&y*y==i 268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
    66. #    printf("\n%ld\n",i);
    67. # }
    68. #}

    69. for i in {0..10000};do
    70.     x=$(echo "sqrt($i 100)"|bc)
    71.     y=$(echo "sqrt($i 268)"|bc)

    72.     if [ $(($x*$x)) -eq $(($i 100)) -a $(($y*$y)) -eq $(($i 268)) ]
    73.     then
    74.      echo $i
    75.     fi
    76. done

    77. #!/bin/bash
    78. #题目:输入某年某月某日,判断这一天是这一年的第几天?
    79. #1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
    80. #      情况,闰年且输入月份大于3时需考虑多加一天。
    81. #2.程序源代码:

    82. read year month day
    83. echo "$year-$month-$day"

    84. months=(0 31 59 90 120 151 181 212 243 273 304 334)

    85. if [ $month -ge 0 -a $month -le 12 ]
    86. then
    87.     sum=${months[$month-1]}
    88. else
    89.     echo "data error"
    90. fi

    91. ((sum =day))

    92. leap=0

    93. if [ $(($year@0)) -eq 0 -o $(($year%4)) -eq 0 -a $(($year0)) -ne 0 ]
    94. then
    95.     leap=1
    96. fi

    97. if [ $leap -eq 1 -a $month -gt 2 ]
    98. then
    99.     ((sum =1))
    100. fi

    101. echo "it is the ${sum}th day."

    102. #!/bin/bash
    103. #【程序5】
    104. #题目:输入三个整数x,y,z,请把这三个数由小到大输出。
    105. #1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
    106. #      然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
    107. #2.程序源代码:

    108. read x y z

    109. if [ $x -gt $y ]
    110. then
    111.     tmp=$x
    112.     x=$y
    113.     y=$tmp
    114. fi

    115. if [ $x -gt $z ]
    116. then
    117.     tmp=$x
    118.     x=$z
    119.     z=$tmp
    120. fi

    121. if [ $y -gt $z ]
    122. then
    123.     tmp=$y
    124.     y=$z
    125.     z=$tmp
    126. fi

    127. echo "$x $y $z"
阅读(1000) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

rubyish2011-08-11 06:32:43

一流的代码实例