多语言展示
当前在线:153今日阅读:150今日分享:23

c语言入门:[20]总结练习之存包程序1

这节开始我们用一个存包程序的例子来把之前学习的知识融会贯通一下,当然其中会涉及到一些新知识,我会随代码一起讲解。我们的存包程序是这样的,一共有10个箱子可以存放物品分别编号为1~10号箱,用“□”来表示箱子是空的,用■来表示箱子里已经存储了物品,详细的看图片吧。初始运行效果:存包效果:取包效果:接下来我们就开始着手编写第一步打印输出箱子信息,直接上代码,然后再做详细解释:int box[10]={0,0,0,0,0,0,0,0,0,0};void printbox(){ int i; printf('1 2 3 4 5 6 7 8 9 10\n');//输出箱子编号 for(i=0;i<10;i++)//i表示数组下标,循环访问每一个数组元素 { box[i]==0?printf('□ '):printf('■ '); } printf('\n');}main(){ printbox();}代码解析:一:全局数组box:int box[10]={0,0,0,0,0,0,0,0,0,0}; 这是定义了一个能够存储10个整数的数组box我们用来表示10个箱子,由于我们生活中习惯从1开始编号而数组下标是从0开始所以当我们说第5个箱子时实际上对应的是数组元素box[4],如果box[i]的值为1则第i+1号箱子为已存储物品的状态,如果如果box[i]的值为0则为空状态,我们给数组里的元素都初始化为0即程序打开的时候箱子默认都是空的。我们看到这个数组我们不是在main函数里定义的,而是在所有函数的上面定义的,为什么要这样定义呢?这里有个作用范围的问题,如果我们在main里定义这个数组box那它的作用范围就出不了main的地盘就是main的大括号括起来的部分,而在我们写这个程序的时候为了重复利用一些代码也为了使得程序结构更清晰我们可能还要编写打印箱子状态的函数、存包函数、取包函数等而表示箱子的数组box应该是这些函数能够直接操作的,是大家共享的,只在main里能够使用显然不合适,所以我们把他的定义及初始化放在了所有函数的上面,这样就达到了多个函数共享该数据的目的。同样我们以后碰到的定义在函数外面的变量就可称为全局变量。二:打印箱子状态函数printbox这个函数没有参数,也没有返回值,没有返回值的情况下函数的类型处我们需要写void,以后当你看到一个函数的类型为void时你就应该知道这个函数是没有返回值的。那我们为什么还要把打印输出箱子状态的功能代码单独地拿出来变成一个函数,而不直接写在main里呢?我们主要考虑代码重复利用的问题,你想如果我们存完包想要查看一下箱子状态得写一遍打印代码,我们取完包还想查看一下箱子状态又要打一遍打印代码,如果我们把这段代码单独地写出来编程printbox那我们以后就很方便了,需要的时候直接调用printbox就好了,当然我们不需要给这个函数怎么参数也不需要它返回什么值,只要调用它让它执行内部的打印输出代码就好了。三:三元运算符 ? :box[i]==0?printf('□ '):printf('■ '); 这么写就相当于if(box[i]==0){printf('□ '):}else{ printf('■ ');}他们的功能完全一样,用三元运算的目的只是为了书写更简便一点。三元运算符是由问号和冒号组成的他的规则如下表达式1?表达式2:表达式3;如果表达式1为真则执行表达式2,为假则执行表达式3如果你看着别扭则完全可以改成if形式。第一步的运行效果如下:我们可以把box数组的初始值修改下,int box[10]={0,0,1,0,1,0,0,0,0,0};看下运行效果
推荐信息