普通的随笔罢了

上星期群里刚上大一学c语言的朋友问了一道题目,要求是这样的:
“循环输入一串数字,当输入到-1为止,将-1前的所有数据求和并求出平均数,并保留两位小数”
例如
“输入:1,2,3,-1 输出:2.00”
“输入:-1 输出:无数据”
因为不定数输入的问题,很显然对于刚学到if,for,while的大一新生来说有些困难,所以在这边聊一下关于老师不让你写的“死循环”和不建议去写的“break”的问题。

那么就有人问了:砖!什么是死循环呢?
死循环简单讲就是一个永久停不下来的循环,典型的死循环问题就是“套娃”(x)。
正经的讲,循环是怎么进行的呢?例如while循环的用法规则,
while(条件){语句} 条件给的返回值是一个布尔值,常用的布尔值有:True,False,0,1
对于while来说条件处于True或者1时,就会进行循环体内的语句,而条件处于False或者0时它就会停止循环,
那么如果条件一直为True它将一直进行循环,一直进行循环体中的语句(就会和你的电脑比谁命长)这种循环就是死循环。
例如:

int i =1;
while(i == 1){语句}

这里的i == 1返回值为布尔值True,也就是说如果不改变i的数据它会一直循环到天荒地老。
你想让这个循环停下来也很简单,只需要让while内的条件也就是 i == 1的返回值变为False就好。
例如:

int i = 1;
while(i==1){
    i = 2;
}

如果放在这个题目中也不失为一种解法,不过这偏离死循环和break的主题了。
下面就扯一下break的使用了:
break在循环中的用法是跳出当前循环,原理很简单,当你认为一个循环该停了以后就可以break掉它
例如:

while(true){
    break;
}

啪,很快啊,这小伙子(x)这小循环直接就停掉了
break有个特性就是仅能跳出当前执行的循环
例如这一部分代码:

while(true){
    for(i = 1;i<5;i++){
        break;
        }
}

这个一个break并不能跳出while循环,当执行到break时他会从for循环中跳到while循环中继续进行while循环注:if不是循环
如果全部跳出则需要:

while(true){
    for(i = 1;i<5;i++){
        break;
    }
    break;
}

下面就是关于这些的操作实例,拿朋友问我的那道题做演示:
1、题目要求是做一个循环输入,这里用到了一个while(true)去做一个所谓的死循环
2、当输入到-1时需要做一个循环跳出,于是拿一个if做条件判断进行break操作
具体代码如下:

#include <stdio.h>
int main()
{
    int in ;
    float i = 0 ,key, sum =0;
	while(true){/*死循环*/
	    scanf("%d",&in);
	    if (in == -1){/*对输入的值进行判断*/
	        break;/*跳出while循环*/
	    }
	    sum = sum + in;
	        i = i + 1;
	}
	if (i != 0){/*对计数i的数值进行判断,如果有则输出平均数key,如果没有数据(指第一个数据就输入了-1)则输出无数据*/
	    key = sum/i;
	    printf("%.2f",key);
	}
	else{
	    printf("无数据");
	}
return 0;
}

所以0的存在本身就是一个False,有1吗?