c语言复习--数组

一维数组以及二维数组以及冒泡排序的实现

这里面难点在冒泡排序的实现,首先我们有一个数组,比如有10个元素,我们需要排好九个元素,最后那一个元素也就排好了,每个元素要用到冒泡排序的核心(两两比较来进行排序),排好第一个元素要比较9次,第二个元素要比较8次,比如我们要排成升序,在从头开始比较时就需要将大的交换到后面去,这样比较9次会使得最大的元素排列在最后,这个算法的时间复杂度是o(n^2);

然后我们来用三子棋这个小应用锻炼一下逻辑思维能力:

首先有一个整体的框架思路,我们要先给用户提供菜单可以用来选择,比如用户选择玩游戏就可以玩了,选择退出就退出,输入错误那就重新输入,我们看整体逻辑是这样的,首先给出一个菜单,然后玩家选择,如果玩游戏,玩完不管输还是赢都会再给出菜单来供用户选择,还有输入错误的话就会重新打印菜单并让我们重新输入,这都是需要多次循环的,菜单——》选择——》玩,菜单——》选择——》玩,菜单——》选择——》玩,菜单——》选择——》玩,菜单——》选择——》玩,菜单——》选择——》玩就是一个循环体,因此我们的循环体中需要包含的就是菜单——》选择——》玩......,用户如何输入?用一个变量来接收用户的选择即可,选择1就是玩,选择0就是退出,因此这个变量的值!=0就是循环结束的条件,我们再看程序来理一下逻辑,首先循环外创建一个变量,因为这个变量是while循环的判断条件,因此要创在循环体外,然后循环判断条件,这里变量初始化时不能初始化为0,如果初始化为0了,刚开始用户还没输入就结束了,这里随便初始化为别的数值即可,也就相当于第一次循环不需要判断条件先执行一次循环体,这个逻辑和do while的逻辑相符,do while循环就是不管三七二十一先执行一次循环体,然后下一次循环之前再进行判断,再执行循环体,这里用while也可以,只不过设计的时候要注意不能初始化为0.

进入循环后首先打印菜单——》输入数据给变量——》switch选择,玩就玩,不玩就break,default也是break出switch——》看我们输入的i是什么,不是0才进行下一次循环体,因为这里如果是0就将退出游戏。

我们这里的循环不管使用什么循环,只要能实现我们希望的逻辑即可。

然后是完成玩游戏的函数,首先用一个二维数组来模拟棋盘,进行棋盘的初始化,以及棋盘的打印,然后是游戏逻辑的实现,首先让用户下棋然后电脑下棋,什么时候结束呢?我们玩游戏只有三种情况:输、赢、平局,我们棋盘下满的时候自动认定为平局,用户、电脑每下一个棋就应判断是否输了或者赢了,若输了或者赢了或者平局就要退出循环,否则重复用户下棋判输赢,电脑下棋判输赢这个循环。

如何判断输赢?我们要扫描每一行和每一列还有对角线,扫描完这些后我们要判断棋盘是否满了,电脑赢了返回2,玩家赢了返回1,平局返回0,扫描每一行的时候就判断每一行的元素是否相等即可,每一列也一样,对角线的话就判断那三个即可,判断棋盘是否满了就需要判断棋盘中有无空格,若没有空格则满了。

通过三子棋这个应用,我们对循环有了更深的理解,我们要找出循环体,例如菜单的循环体就是打印菜单-》输入选择和switch,循环的结束条件就是判断我们输入的这个是否为0;循环有一种是不需要判断条件先执行一次的,比如运动员跑圈,跑到20s之内就不用跑了,那不管三七二十一先要跑一次吧,这就要用到do while循环,然后跑了再看成绩,不合格再跑,不合格再跑,跑完了成绩合格就跳出循环了,与上面的菜单是一种循环,不管三七二十一都要先打印菜单供用户选择一次,然后再进入循环,但是例如遍历打印一遍数组,肯定要先判断数组的大小,如果数组大小为0,那我们不可能先读取打印一次再进入循环吧,这样会导致数组越界,这就是不同循环之间用不同的结构,最后能符合我们希望的逻辑即可!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-hhY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值