JS,PHP,PYTHON,JAVA实现常见算法题

公子初心
2023-07-18 / 0 评论 / 120 阅读 / 正在检测是否收录...

1. 超市为了促销,按购买货物的款数多少分别给予不同的优惠折扣,具体折扣情况如下: 购物不足100元的,没有折扣; 购物满100元(含100元,下同),不足500元的,减价5%; 购物满500元,不足1000元的,减价8%; 购物满1000元,不足3000元的,减价10%; 购物满3000元的,减价15%。 请设计一个程序根据根据输入的购物款计算出应付款。

javascript

  let money =2900
if(money >=3000){
    money*=0.85
}else if(money >=1000){
    money*=0.9
}else if(money >=500){
    money*=0.92
}else if (money >=100){
    money *=0.95
}
console.log("您需要支付",money,"元");

php

$money =90;
    if($money >=3000){
        $money*=0.85;
    }else if($money >=1000){
        $money*=0.9;
    }else if($money >=500){
        $money*=0.92;
    }else if ($money >=100){
        $money *=0.95;
    }

    echo "您需要支付",$money,"元";

python

money = float(input("请输入一个金额:"))

if money>=3000:
    money*=0.85
elif money>=1000:
    money*=0.9
elif money>=500:
    money*=0.92
elif money>=100:
    money*=0.95

print(money)

java

import java.util.Scanner;
public class Hello{

    public static void main(String[] args){
        // System.out.println("hello ");
        Scanner sc = new Scanner(System.in);
        // javac -encoding UTF-8 Hello.java
        System.out.println("请输入金额:");
        int money = sc.nextInt();
        // 接收用户输入
        if(money >= 3000){
            money*=0.85;
        }else if(money>=1000){
            money*=0.9;
        }else if (money >=500){
            money*=0.92;
        }else if(money >= 100){
            money*=0.95;
        }
        System.out.println(money);
    }

}

2.某100人的公司举行年会,入场时为每名员随机分配1-100的号码。现需要设计一个抽奖程序,随机产生10个整数,整数的范围为1-100,作为幸运号码发放奖品,并从生成的整数中获取最大值,发放年终大礼包。

JavaScript

// 循环用于产生10个不重复随机数
let nums = [] // 用于存放随机生成的数字
let i = 0
while(true){
    i++
    // 判断数组中是否已经有了10个元素
    if(nums.length == 30){
        break // 退出
    }
    // 产生随机数
    // Math.floor(Math.random()*100) +1 
    let num = Math.ceil(Math.random()*100)
    // 将随机数写入到 数组中 , 返回值是-1 说明没有 才写
    if(nums.indexOf(num) == -1){
        nums.push(num)
    }
  
}
nums.sort() // 升序 排序
console.log(nums);
console.log(nums[nums.length-1]);

php

  $nums = [];
  $i = 0;
  while (true){
      $i++;
      // 判断数组长度是否=10
      if(count($nums) == 10){
          break;
      }
      // 1. 生成随机数 范围1-100之间,不能重复
      $num = mt_rand(1,100); // 大于等于1 小于等于100的随机数
  //$nums.push($num); js的写法
      if(!in_array($num,$nums)){
          array_push($nums,$num);
      }
  }
  sort($nums); // 排序
  echo $i;
  print_r($nums);

python

import random
# 10个不重复的随机数
# 定义一个空列表
nums = []
i = 0
while True:
    i+=1
    if len(nums) == 50:
        break
    # 生成一个随机数 范围是1-100之间
    rand = random.randint(1,100)
    # 把随机数添加到列表中
    # 判断一下,如果列表中没有 才追加
    if nums.count(rand) == 0:
        nums.append(rand)

nums.sort()
print(nums)
print(i)
------------------------------------------
import random
# 10个不重复的随机数
# 定义一个空列表
nums = []
i = 0
while len(nums) < 10:
    i+=1
    # 生成一个随机数 范围是1-100之间
    rand = random.randint(1,100)
    # 把随机数添加到列表中
    # 判断一下,如果列表中没有 才追加
    if nums.count(rand) == 0:
        nums.append(rand)

nums.sort()
print(nums)
print(i)

-------------------------------------------
nums = set()
while len(nums) < 10:
    rand = random.randint(1,100)
    nums.add(rand)
nums = list(nums)
nums.sort()
print(nums)
print(num[nums.length-1])

java

package study;

import java.util.HashSet;

import java.util.Random;

import java.util.Set;

public class HelloWorld8 {

        public static void main(String[] args) {
               // 创建一个空集合
                Set set1 = new HashSet();
                // 创建随机数对象
                Random rand = new Random();
                while(set1.size()<10){
                        // 生成随机数
                        int randnum = rand.nextInt(100)+1;
                        // 随机数追加到集合中
                        set1.add(randnum);
                }
                Object[] list1 = set1.toArray(); // 集合转数组
                Arrays.sort(list1); // 排序
                System.out.println(list1[list1.length-1]);        // 集合 
                
                    
        }
}

3.输入某年某月某日,判断这一天是这一年的第几天 (要求用java语言开发控制台程序,要求:要考虑用户体验,如:程序启动时要有欢迎语,用户输入时要有提示,输入错误时要有错误提示等)

JavaScript

  let year = Number(prompt("请输入年"))
       let month = Number(prompt("请输入月"))
       let day = Number(prompt("请输入日"))
       // let year = 1800
       // let month = 5
       // let day = 11
       // 用于保存天数
       daynum = 0
       console.log("今天是",year,"年",month,"月",day,"日");
 // 根据当前的年月日,判断在这个月之前所有月份的天数之和 + 当前的日期
 switch(month){
   case 12:  // 当前是12月 + 11月
       // daynum = daynum + 30
       daynum +=30  // 11月的天数
       console.log("我被穿透了 12"); 
   case 11:
        console.log("我被穿透了 11"); 
       daynum +=31 // 10月的天数
   case 10:
        console.log("我被穿透了 10"); 
       daynum +=30 // 9月的天数
   case 9:
       console.log("我被穿透了 9"); 
       daynum +=31 // 8月的天数
   case 8:
       console.log("我被穿透了 8"); 
       daynum +=31 // 7月的天数
   case 7:
       console.log("我被穿透了 7"); 
       daynum +=30 // 6月的天数
   case 6:
       console.log("我被穿透了 6"); 
       daynum +=31 // 5月的天数
   case 5:
       console.log("我被穿透了 5"); 
       daynum +=30 // 4月的天数
   case 4:
       console.log("我被穿透了 4"); 
       daynum +=31 // 3月的天数
   case 3:
       console.log("我被穿透了 3"); 
       // daynum +=31 // 2月的天数 28天 29天
       // 1.能被4整除 却不能被100整除 闰年
       // 2.能被400整除的  闰年 
       // 四年一闰,百年不闰,四百年在闰
       if(year % 4 == 0  && year % 100 !=0){
           daynum +=29
           // console.log(year,"是闰年 1");
       }else if (year % 400 ==0){
           // console.log(year,"是闰年 2");
           daynum +=29
       }else{
           // console.log(year,"是平年");
           daynum +=28
       }
   case 2:
       console.log("我被穿透了 2"); 
       daynum +=31 // 1月的天数
   case 1:
       console.log("我被穿透了 1"); 
       daynum +=day // 当前月实际日期的天数

 }

document.write("当前的第",daynum,"天");

php

$year = 2023;
$month = 12;
$day = 13;
$daynums = 0;

while ($month>=1){
    switch ($month){
        case 12:case 10:case 7:case 5:
            $daynums +=30; // 上一个月的总天数
            break;
        case 11:case 9:case 8:case 6:case 4:case 2:
            $daynums +=31; // 上一个月的总天数
            break;
        case 3:
            // 判断平年闰年
            if(($year % 4 == 0 && $year % 100 != 0)  || ($year %400==0)){
                $daynums += 29;
            }else{
                $daynums += 28;
            }
            break;
        case 1:
            $daynums += $day;
    }

    $month--; // 11月
}

echo $daynums;

python

# 百钱买百鸡 钱100 鸡100 公鸡5元 母鸡3元 小鸡 1元3只  求:鸡各几只

# 函数:根据年份返回当年2月份的总天数
def getTotalDaysByYear(year):
    return  29 if year % 4 == 0 and year % 100 !=0 or year % 400 ==0 else 28

# 判断一年中的第几天
year = int(input("请输入年:"))
month = int(input("请输入月:"))
day = int(input("请输入日:"))
# 统计所有的天数
days = day
month = month - 1 # 当前的月份-1 就是循环的次数
while month >=1:
    # 如果是1月
    if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10: # 总天数31
        days += 31
    # 如果是2月
    elif month == 2: # 2月的总天数 平年2月28 闰年2月29
        # 合计
        days += getTotalDaysByYear(year)
        pass
    elif month == 4 or month == 6 or month == 9 or month == 11:
        days += 30

    month-=1

print(days)

java

package study;

import java.util.Scanner;

public class HelloWorld11 {

        // 根据当前年月日判断是一年第几天
        public static void main(String[] args) {
                // 接收用户的键盘输入
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入年:");
                short year = sc.nextShort();
                System.out.println("请输入月:");
                byte month = sc.nextByte();
                System.out.println("请输入日:");
                byte day = sc.nextByte();
                short daynums = 0;
                
                while(month>=1){
                        switch(month){
                                case 12:case 10:case 7:case 5:
                                        daynums += 30;
                                        break;
                                case 11:case 9:case 8:case 6:case 4: case 2:
                                        daynums += 31;
                                        break;
                                case 3:
                                        if(year % 4 ==0 && year %100!=0 || year %400==0){
                                                daynums += 29;
                                        }else{
                                                daynums += 28;
                                        }
                                        break;
                                case 1:
                                        daynums += day;
                                        break;
                        }
                        month--;
                }
                
                System.out.println(daynums);
        
                
        }

        
}

4.打印所有的水仙花数 水仙花数:是指一个三位数,其各位数字立方和等于该数字本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。(要求用java语言开发控制台程序)

JavaScript

// 水仙花树 153  = 1(3) + 5 (3) + 3(3) 
// 百位三次方 + 十位三次方 + 个位三次方  = 这个数本身
// 需求:输出所有的三位数
let num = 100
while(num <1000){
    // console.log(num);
    // 1.取百位
//    console.log(Math.floor(num / 100)); 
   let bai = Math.floor(num / 100)
   // 2.取十位
//    console.log(Math.floor(num % 100/10) ); 
   let shi = Math.floor(num % 100/10)
   // 3.取个位
//    console.log(num % 10)
   let ge = num % 10
   if(bai*bai*bai + shi*shi*shi + ge*ge*ge == num){
     console.log(num,"是水仙花数");
   }
    num++
}

php

$i = 100;
echo "<br>";
while ($i<1000){
    // echo $i,"<br>";
    // 1.求百位
   //  echo floor($i/100),"<br>";
    $bai = floor($i/100);
    // 2.求十位
   //  echo floor(($i % 100)/10) ,"<br>";
    $shi = floor(($i % 100)/10);
    // 3.求个位
    // echo $i % 10,"<br>";
    $ge = $i % 10;
    if(pow($bai,3)+pow($shi,3)+pow($ge,3) == $i){
        echo $i,"是水仙花数<br>";
    }
    $i++;
}

python

for num in range(100, 1000):
    # 将数字拆分成各个位上的数字
    bai= num // 100 # 百位
    shi= (num // 10) % 10 # 十位
    ge= num % 10 # 个位
    # 计算立方和 判断是否是水仙花数
    if bai**3 + shi**3 + ge**3 === num
        # 输出水仙花数
        print(num)

java

package study;

import java.util.Scanner;

public class HelloWorld11 {

        // 根据当前年月日判断是一年第几天
        public static void main(String[] args) {
//                System.out.print("a");
//                System.out.print("b");
                // 153
                int i = 100;
                while(i<1000){
                        //百位
                        int bai = i/100;
                        //十位
                        int shi = i%100/10;
                        //个位
                        int ge = i%10;
                        if(bai*bai*bai + shi*shi*shi + ge*ge*ge == i){
                                System.out.println(i);
                        }
                        i++;
                }
                
        
                
        }

        
}
1

评论 (0)

取消