前言
最近去学了一下JavaScript,然后想着把我学过的这几门语言都复习一下基础语法,然后咱们实现一个猜数字的小游戏。顺便简单说一下这5门语言的语法风格和应用领域。
游戏规则通常如下:一方选择一个秘密数字,并告诉其他人猜的数字的范围。其他人根据给定的范围猜一个数字,然后由选择秘密数字的人告诉他们猜的数字是太高还是太低,直到有人猜到秘密数字为止。猜数字的人可以通过不断提问来缩小猜测的范围,以便更快地猜到正确的答案。
C语言和Java版本只用了一个main函数,全都写在一起了适合刚接触编程没几个小时的;go语言和python用了函数封装,逻辑更加清楚,适合学到了函数思想的;JavaScript版本用html还写了一个页面,也是一个前端初学者练习的一个小小项目。
C语言版本
语法风格
C语言是一种低级语言,注重效率和对硬件的直接访问。
它使用分号作为语句结束符,使用花括号表示代码块。
C语言具有基本的控制结构,如条件语句(if-else)和循环结构(for、while)。
C语言的语法相对较为简洁,但对程序员要求较高。
应用领域
系统级编程:C语言在操作系统、编译器、驱动程序和嵌入式系统等领域扮演着重要角色。它可以直接访问硬件,并具有较低的开销和更高的执行效率。
嵌入式系统:C语言是嵌入式系统开发的首选语言之一。由于其能够与硬件进行良好的交互,开发者可以利用C语言编写控制、监测和操作嵌入式设备的代码。
游戏开发:C语言在游戏开发中广泛使用。由于游戏通常对性能要求较高,使用C语言可以直接控制底层资源,并优化代码以实现更好的性能。
编译器开发:C语言本身是通过编译器进行编译的,因此编写编译器时,C语言通常是首选语言。C语言的表达力和灵活性使其成为开发编译器前端和后端的理想选择。
C 语言实现猜数字小游戏
#include <stdio.h> #include <time.h> #include <stdlib.h> int main() { // 设置编码格式(为我是用clion敲的所以加了这行,用VS的话把这行删了) system("chcp 65001"); // 以时间戳作为随机数种子 srand((unsigned int) time(NULL)); // 生成随机数 int random = rand() % 100 + 1; // 猜数字 int guess = 0; while (1) { printf("请输入你猜的数字: "); scanf("%d", &guess); // 判断是否相等 if (guess == random) { printf("恭喜你猜对了!\n"); // 选择是否重新开始游戏 printf("是否重新开始游戏? 输入1继续,其他任意键退出"); int choice = 0; scanf("%d", &choice); if (choice == 1) { // 重新开始游戏 random = rand() % 100 + 1; continue; } else { printf("游戏结束!"); return 0; } } // 判断大小 if (guess > random) { printf("你猜的数字大了!\n"); } else { printf("你猜的数字小了!\n"); } } }
Java语言版本
语法风格
Java是一种面向对象的高级语言,具有严格的语法和强制类型检查。
它使用大括号表示代码块,并使用分号结束语句。
Java要求所有的代码都必须包含在类中,拥有面向对象的特性,如封装、继承和多态。
Java有丰富的类和接口库,提供了广泛的功能和开发支持。
应用领域
企业应用开发:Java在企业级应用开发中得到广泛应用。Java提供了丰富的企业级框架和库,如Spring和Java EE,用于开发大规模、高性能和可靠的企业应用程序。
Android应用开发:Java是Android应用开发的主要语言。Android平台基于Java,并提供了Java API和开发工具包(SDK)用于开发各种类型的移动应用程序。
Web应用开发:Java通过Java Servlet和JavaServer Pages(JSP)技术,以及各种Web框架(如Spring MVC、Struts和JSF)支持Web应用程序的开发。Java的强大的服务器端功能使其成为构建高性能和可扩展的Web应用的理想选择。
大数据技术:Java在大数据领域中扮演着重要角色。Hadoop、Spark和Flink等流行的大数据处理框架使用Java作为主要开发语言,因为Java具有良好的并发性和可扩展性。
Java语言实现猜数字小游戏
import java.util.Scanner; public class Main { public static void main(String[] args) { // 生成一个1-100的随机数 int random = (int) (Math.random() * 100 + 1); Scanner sc = new Scanner(System.in); while (true) { System.out.print("请输入你猜的数字:"); int guessNumber = sc.nextInt(); // 判断用户输入的数字和随机数是否相等 if(guessNumber == random){ System.out.println("恭喜你,猜中了!"); // 选择是否继续游戏 System.out.println("是否继续游戏?(输入y或者Y继续,其他任意键退出)"); String answer = sc.next(); if(answer.equals("y")){ random = (int) (Math.random() * 100 + 1); continue; }else { System.out.println("游戏结束!"); return; } } if(guessNumber > random){ System.out.println("你猜的数字大了"); }else{ System.out.println("你猜的数字小了"); } } } }
GO语言版本
语法风格
Golang是一种静态类型的编译型语言,注重简洁性和效率。
它使用大括号表示代码块,但没有要求使用分号结束语句。
Golang具有垃圾回收机制和并发编程的内置支持。
Golang的语法简洁明了,减少了冗余和复杂性。
应用领域
网络编程:Go语言原生支持并发编程和网络编程,使其成为开发高性能网络应用和分布式系统的理想选择。Go的轻量级协程(goroutine)和通道(channel)机制使并发编程变得简单而高效。
服务器端开发:由于Go语言的并发性和性能优势,它在服务器端开发领域中非常受欢迎。许多大型互联网公司都在使用Go语言构建高性能的Web服务器、API服务和微服务架构。
云计算和容器技术:Go语言在云计算和容器技术领域得到广泛应用。例如,Docker和Kubernetes这样的容器编排工具就是使用Go语言开发的,因为Go的高性能和并发性使其能够处理大规模的容器化应用程序。
分布式系统:Go语言对于构建分布式系统和大规模数据处理应用非常适合。它的并发原语和简洁的语法使开发者能够轻松地编写高效、可扩展和可靠的分布式应用程序。
GO语言实现猜数字小游戏
package main import ( "fmt" "math/rand" "time" ) func main() { // 默认是true,开始第一次游戏 playAgain := true for playAgain { playGame() // 更新playAgain的值 playAgain = askPlayAgain() } fmt.Println("游戏结束!") } /** * 进行一次猜数字游戏 */ func playGame() { // 生成一个1到100之间的随机数 rand.Seed(time.Now().UnixNano()) toGuess := rand.Intn(100) + 1 fmt.Println("请猜一个1到100之间的数字:") for { // 读取用户的输入 var guess int fmt.Scanln(&guess) // 检查猜测结果 if guess == toGuess { fmt.Println("恭喜你,猜对了!") break } else if guess < toGuess { fmt.Println("太小了,请再试一次") } else { fmt.Println("太大了,请再试一次") } } } /** * 询问用户是否再次开始游戏 */ func askPlayAgain() bool { var playAgain string fmt.Print("是否再次开始游戏?(输入Y或y继续,其他任意键退出): ") fmt.Scanln(&playAgain) // 当输入Y或y时,返回true,否则返回false return playAgain == "Y" || playAgain == "y" }
python版本
语法风格
Python是一种解释型语言,具有简洁而易读的语法。
它使用缩进来表示代码块,而不是使用大括号或关键字。
Python是一种动态类型语言,无需显式声明变量类型。
Python有大量的第三方库和模块,用于各种用途,如数据科学、机器学习和Web开发。
应用领域
数据科学和机器学习:Python在数据科学和机器学习领域非常受欢迎。它提供了丰富的库和工具,如NumPy、Pandas、Scikit-learn和TensorFlow,用于数据分析、机器学习建模和深度学习等任务。
Web开发:Python通过框架如Django和Flask,成为构建Web应用程序和网站的流行选择。它提供了快速开发和易于维护的解决方案,具有良好的可扩展性和安全性。
自动化脚本和任务:Python在自动化脚本和任务自动化方面表现出色。它可以用于编写脚本、自动化日常任务、处理文件和数据等。
科学计算和工程:Python在科学计算和工程领域中得到广泛应用。它的数学库(如NumPy和SciPy)和可视化库(如Matplotlib和Seaborn)使其成为进行数值计算、模拟和可视化的理想选择。
python语言实现猜数字小游戏
import random def play_game(): # 生成一个1到100之间的随机数 secret_number = random.randint(1, 100) print("请猜一个1到100之间的数字:") while True: # 提示玩家输入 guess = int(input("请输入你的猜测:")) # 检查猜测结果 if guess == secret_number: print("恭喜你,猜对了!") break elif guess < secret_number: print("太小了,请再试一次。") else: print("太大了,请再试一次。") def ask_play_again(): play_again = input("是否再次开始游戏?(输入Y或y继续,其他任意键退出): ") return play_again.lower() == "y" def main(): play_again = True while play_again: play_game() play_again = ask_play_again() print("游戏结束!") if __name__ == "__main__": main()
JavaScript版本
语法风格
JavaScript是一种脚本语言,主要用于网页前端开发。
它使用大括号表示代码块,使用分号结束语句,但分号通常是可选的。
JavaScript具有灵活的语法,可以进行动态类型和函数式编程。
JavaScript广泛应用于网页交互、动态效果和服务器端开发(通过Node.js)。
应用领域
前端开发:JavaScript是前端开发的核心语言,用于开发交互式的网页和Web应用程序。它可以操作HTML和CSS,实现动态内容、用户交互和响应式设计。
网页应用程序:JavaScript通过框架如React、Angular和Vue.js,用于开发复杂的单页面应用程序(SPA)和动态网页。这些框架提供了组件化开发、状态管理和路由等功能。
移动应用开发:通过使用框架如React Native和Ionic,JavaScript可以用于开发跨平台的移动应用程序。这些框架将JavaScript代码转换为原生UI组件,实现了一次编写,多平台部署。
后端开发:Node.js是建立在JavaScript运行时上的服务器端开发框架。JavaScript可以用于编写高性能的后端应用程序、API和服务器端逻辑。
JavaScript实现猜数字小游戏
<!DOCTYPE html> <html> <head> <title>猜数字游戏</title> <style> body { font-family: Arial, sans-serif; text-align: center; margin-top: 100px; } </style> </head> <body> <h1>猜数字游戏</h1> <p>请猜一个1到100之间的数字。</p> <input type="number" id="guessInput"> <button id="guessButton">猜</button> <p id="message"></p> <button id="playAgainButton">再玩一次</button> <script> const messageElement = document.getElementById("message"); const guessInput = document.getElementById("guessInput"); const guessButton = document.getElementById("guessButton"); const playAgainButton = document.getElementById("playAgainButton"); let secretNumber; let attempts; function generateSecretNumber() { secretNumber = Math.floor(Math.random() * 100) + 1; attempts = 0; messageElement.textContent = ""; guessInput.disabled = false; guessInput.value = ""; guessButton.disabled = false; playAgainButton.style.display = "none"; } function checkGuess() { const guess = parseInt(guessInput.value); if (isNaN(guess) || guess < 1 || guess > 100) { messageElement.textContent = "请输入有效的1到100之间的数字。"; return; } attempts++; if (guess === secretNumber) { // 如果你猜的时候不小心点了两下,会默认你猜了同样的数字 messageElement.textContent = `恭喜你,猜对了!你用了${attempts}次尝试。`; guessInput.disabled = true; guessButton.disabled = true; playAgainButton.style.display = "block"; } else if (guess < secretNumber) { messageElement.textContent = "太小了,请再试一次。"; } else { messageElement.textContent = "太大了,请再试一次。"; } } guessButton.addEventListener("click", checkGuess); playAgainButton.addEventListener("click", generateSecretNumber); generateSecretNumber(); </script> </body> </html>