所有分类
  • 所有分类
  • 游戏源码
  • 网站源码
  • 单机游戏
  • 游戏素材
  • 搭建教程
  • 精品工具

简单有趣的C语言代码|新手必玩的超好玩编程小案例

简单有趣的C语言代码|新手必玩的超好玩编程小案例 一

文章目录CloseOpen

第一个必玩:能和你“对话”的猜数字游戏——把循环和判断玩成互动

新手学C语言最头疼的就是“循环”和“判断”,总觉得“这些逻辑到底能用来干嘛?”猜数字游戏就是最好的答案——用循环让游戏“停不下来”,用判断让电脑“会说话”

我当初写这个游戏时,踩过最傻的坑:一开始没加“随机数种子”,结果每次打开程序,电脑生成的数字都是“42”(rand()默认的初始值)。我猜了三次都是42,还以为电脑“作弊”,后来查资料才知道,得加srand(time(0))——这个函数是用当前时间当“种子”,让rand()生成的数字真的随机。你要是写这个代码,可别忘这一步!

给你拆解下核心逻辑,特简单:

  • rand()%100 + 1生成1-100的随机数(target);
  • while(guess != target)循环,让你一直猜,直到猜中;
  • 每猜一次,用if(guess > target)提示“大了”,else if(guess < target)提示“小了”;
  • 猜中后,用printf("恭喜你,猜中了!")收尾。
  • 是不是比课本上的例子好懂10倍?我朋友第一次写这个的时候,把while写成了if,结果猜一次就结束,急得问我“为什么电脑不让我继续猜?”——你看,错一次就懂了循环的作用,比背10遍“while是循环语句”管用多了。

    你还能加“难度升级”的小功能:比如把数字范围改成1-200,或者加“猜的次数限制”(比如最多猜10次,没猜中就提示“你输了!”)。我当初加了次数限制后,和朋友比赛“谁用最少次数猜中”,玩了一下午都不腻——原来编程的乐趣,就是把“自己的想法”变成“电脑的动作”

    第二个上瘾:用星号画爱心/金字塔——把嵌套循环变成“画画工具”

    新手看到for里面套for(嵌套循环)就头疼,总觉得“这两层循环绕得慌”。直到我用它画了个金字塔——原来嵌套循环是“画画的笔”,外层控制“行数”,内层控制“每行画什么”

    比如画一个5行的金字塔,逻辑是这样的:

  • 外层循环for(int i=1; i<=5; i++):控制“画5行”;
  • 内层第一个循环for(int j=1; j<=5-i; j++):控制“每行前面的空格数”(比如第1行有4个空格,第2行有3个,这样金字塔才会“居中”);
  • 内层第二个循环for(int k=1; k<=2i-1; k++):控制“每行的星号数”(第1行1个,第2行3个,第3行5个,刚好是奇数递增)。
  • 运行后,屏幕上真的出现了一个整整齐齐的金字塔——我当时盯着屏幕看了半天,突然就懂了:原来嵌套循环不是“绕”,是“分工”:外层管“大结构”,内层管“细节”。

    后来我又玩出了新花样:用C语言画爱心。其实原理是用“数学公式”——比如经典的爱心曲线公式:(x² + y²

  • 1)³
  • x²y³ ≤ 0
  • 。我把x和y设成坐标(比如x从-1.5到1.5,y从-1到1),然后遍历每个坐标,判断是否满足公式,如果满足就打印星号,不满足就打印空格。运行后,屏幕上居然出现了一个歪歪扭扭但超可爱的爱心——我赶紧截图发朋友圈,朋友都问“你居然会用C语言画画?”特涨面子!

    给你整理了个“常见图形的循环逻辑对比表”,帮你快速get嵌套循环的用法:

    图形类型 外层循环作用 内层循环1作用 内层循环2作用
    金字塔 控制总行数(比如5行) 控制每行的空格数(让金字塔居中) 控制每行的星号数(奇数递增)
    爱心 控制y轴坐标(从-1到1遍历) 控制x轴坐标(从-1.5到1.5遍历) 判断坐标是否满足爱心公式(满足则打印星号)
    正方形 控制行数(比如6行) 控制每行的星号数(固定6个) 无(直接打印星号)

    你看,不管画什么,嵌套循环的逻辑都是“分工合作”——掌握了这个,你甚至能画圣诞树、小房子,把C语言变成“像素画工具”!

    第三个实用:口袋计算器——把变量和运算符变成“生活帮手”

    新手学变量的时候,总觉得int a, b; float result;这些代码“没用”——直到做了个“口袋计算器”,才发现变量是“装东西的盒子”,运算符是“加工工具”

    计算器的核心逻辑超简单:让用户输入两个数(比如a和b),再输入一个运算符(+、-、、/),然后根据运算符计算结果。我当初写的时候,用了switch语句来判断运算符——比如输入“+”,就执行result = a + b;输入“-”,就执行result = a

  • b
  • ;输入“”,result = a b;输入“/”,result = a / b

    不过要注意一个“坑”:除法要处理“除0”的情况。我第一次写的时候,没加判断,结果输入“5/0”,程序直接崩溃了——后来加了个if(b == 0),提示“Error:不能除以0!”,才解决这个问题。你写的时候,可别忘这一步!

    这个计算器虽然简单,但特别“有成就感”——我当初用它帮同桌算数学题,输入“123+456”,立刻输出“579”,同桌说“你这比手机计算器还快!”其实原理就是把“变量存储数值”、“运算符处理数值”的逻辑用活了——原来编程不是“高大上的魔法”,是“把生活中的需求变成代码”

    你要是按这些例子试了,欢迎回来告诉我你玩出了什么新花样——比如用猜数字游戏整蛊朋友(把目标数设成99,看他猜多久),或者用星号画了个“专属图形”,甚至用计算器加了“平方”“开根号”的功能。我当初就是靠这些小代码,把C语言的基础语法“玩”得滚瓜烂熟——当你能把代码变成“能玩、能用的东西”时,编程就再也不枯燥了

    对了,要是你写代码时遇到问题,比如循环跳不出来、星号画歪了,别慌——我当初也踩过这些坑,只要多试几次,总能找到解决办法。赶紧打开编译器,试试第一个猜数字游戏吧!


    我当初写那个口袋计算器的时候,最糗的一次就是没处理“除0”的情况——那天我兴致勃勃拉着我妈演示,说“你随便算个除法,我这程序比手机计算器还快”,结果我妈故意逗我,输入“100/0”,刚按完回车,屏幕突然卡成一片空白,我站在那脸瞬间红到耳朵根,赶紧手忙脚乱关了程序,假装“刚才是不小心按错键了”,其实手心全是汗——那时候才明白,C语言这玩意儿“认死理”,你让它算“除以0”这种压根没逻辑的事,它直接就“罢工”给你看。

    后来我翻了两本入门书才搞懂,原来解决办法特简单:在执行除法运算之前,先加个“小检查”——比如你代码里除数是变量b,那就先写一行“if(b == 0)”,要是这个条件成立,就用printf输出一句“哎呀,不能除以0哦!换个除数试试~”,然后直接跳过除法运算。我改完代码再给我妈演示,她又输“5/0”,程序马上弹出提示,我妈还笑着说“你这程序现在变机灵了”。其实编程有时候就像跟朋友相处——你得提前“想到他可能犯的错”,先把话说明白,别等他撞了南墙再补救。就像除法这件事,你提前告诉程序“遇到0就别算了,先提醒用户”,它就不会傻乎乎地去撞“崩溃”这个南墙了。

    还有一次我帮同学改计算器代码,他也遇到了同样的问题,我让他加了这个if判断,他试了试,说“原来这么简单!我之前怎么没想到”——你看,有时候解决bug不是要写多复杂的代码,就是“多替程序想一步”:它处理不了的事,咱提前拦下来,给用户个提醒,程序就稳了。


    为什么我写的猜数字游戏每次生成的数字都一样?

    这是因为没加“随机数种子”哦!C语言里rand()函数默认用固定种子生成数字,所以每次结果都一样。解决办法是在rand()之前加一行srand(time(0)),它会用当前时间当种子,让数字真正随机——我当初踩过这个坑,加了之后就正常啦!

    猜数字游戏只能猜一次就结束,怎么回事?

    大概率是把循环语句写错啦!比如把while(guess != target)写成了if(guess != target)——if是“只判断一次”,而while是“循环判断直到条件不满足”。把if改成while,游戏就能一直猜直到猜中啦。

    计算器输入除法时程序崩溃了,怎么解决?

    因为没处理“除0”的情况!当除数是0时,C语言会报错。你可以在除法运算前加个判断:如果b(除数)等于0,就用printf提示“不能除以0哦!”,这样程序就不会崩溃了——我第一次写计算器时也没加这个,结果输了5/0直接翻车。

    用星号画金字塔总歪,问题出在哪?

    多半是内层的“空格循环”没写对!比如画5行金字塔时,每行前面的空格数应该是“5-当前行数”(比如第1行4个空格,第2行3个),这样才能让金字塔居中。如果空格数错了,金字塔就会歪——我当初画歪过三次,调整空格循环的次数就好啦。

    想给猜数字游戏加次数限制,比如最多猜10次,怎么操作?

    可以加个“计数器变量”!比如一开始定义int count = 0;,然后在while循环里每次猜完count++;再加个判断:如果count > 10,就break循环,然后提示“次数用完啦,你输了!”——我当初加了这个功能,和朋友比赛谁用最少次数猜中,玩得超开心~

    原文链接:https://www.mayiym.com/47218.html,转载请注明出处。
    0
    显示验证码
    没有账号?注册  忘记密码?

    社交账号快速登录

    微信扫一扫关注
    如已关注,请回复“登录”二字获取验证码