我在小学时自学了编程。我的第一个程序是在AppleII上编写的,但我最终通过阅读和编程练习学会了C。练习编程的最佳方式是编写示例程序来帮助您练习新知识。当我在学习一门新的编程语言时,我喜欢写一个简单的“猜数字”游戏来练习。计算机从1到100中随机选择一个数字,您必须猜测才能算出来。在另一篇文章中,我展示了如何用Bash编写这个“猜数字”游戏,我的同事也写了一些文章展示了如何用Java、Julia和其他计算机语言编写它。“猜数字”游戏的妙处在于它锻炼了几个编程概念:如何使用变量、如何比较值、如何打印输出以及如何读取输入。整个夏天,我录制了一系列教人们如何用C编程的视频。从那时起,我听说很多人都在关注它来学习C编程。所以,我想继续用C语言写一个“猜数字”游戏。获得一个随机数通过编写一个函数来选择一个随机数来开始“猜数字”游戏。在编写函数时,优秀的程序员会尽量使它们灵活,以便可以重用它们来解决稍有不同的问题。因此,不是硬编码函数来选择1到100之间的随机数,而是编写一个函数来选择1和某个整数maxval之间的随机数:#include#includeintrandnum(intmaxval){/*从1到maxval的pickarandomnumber*/intrandval;getrandom(&randval,sizeof(int),GRND_NONBLOCK);/*couldbenegative,soensureit'positive*/if(randval<0){return(-1*randval%maxval+1);}else{return(randval%maxval+1);}}该函数使用Linux系统调用getrandom生成一系列随机数。您可以在手册页中阅读有关此系统调用的更多信息,但请注意getrandom将使用随机0和1填充变量。这意味着最终的值可以是正数也可以是负数,因此您需要在之后进行测试以确保randnum函数的结果是正数。编写程序您可以使用此函数编写“猜数字”程序:#include#includeintrandnum(intmaxval){...}intmain(void){intnumber;intguess;number=randnum(100);puts("Guessanumberbetween1and100");do{scanf("%d",&guess);if(guessnumber){puts("Toohigh");}}while(guess!=number);puts("That'sright!");return0;}程序首先使用randnum函数从1到100中选择一个随机数。向用户输出提示后,程序进入do-while循环,以便用户猜测数字。在循环的每次迭代中,程序都会测试用户的猜测值。如果用户的猜测小于随机数,程序将输出“Toolow”,如果猜测大于随机数,程序将输出“Toohigh”。循环继续,直到用户的猜测与随机数相同。当循环退出时,程序输出“没错!”然后立即结束:$gcc-oguess-Wallguess.c$./guessGuessanumberbetween1and10050Toohigh30Toolow40Toohigh42Toohigh42Toolow43Toolow44没错!在学习一门新的编程语言时试试这个“猜数字”游戏是一个很好的入门程序,因为它在很直接的方式。通过用不同的编程语言实现这个简单的游戏,您可以演示一些核心概念并比较每种语言的细节。