我们先来看一下题目
让用户输入一系列的正整数,最后输入-1表示输入结束,然后程序计算出这些数字的平均数,输出输入的数字的个数和平均数。
我们再来 看一下这个题目的思路:
1.首先的是判断要用几个变量。
2.要用两个变量,其中的一个变量是计算一共有多少输入的数字,一个是用来计算输入的所有的数字的和。
3.主要的思路就是,用一个计算累加的数字来除以一共有多少的数字,最后的结果就是我们所需要的平均数。
我们再用一个流程图来进行整个程序的分析
我们来具体讲一下这个流程图的内部:
1.初始化变量sum和count为0.
2.读入number;
3.如果number不是-1,则将number加入sum,并将count加1,回到2.
4.如果number是-1,则计算和打印出sum/count(注意换成浮点来计算)。
然后我们直接来看代码:
注意:所有的程序的讲解都在代码里面:
#include<stdio.h>
int main()
{
//先定义3个变量
int number;
int sum = 0;
int count = 0;
//下面第一个方法略显麻烦,因为要判断两次number不等于-1,我们用while的话可能会更加的简单一点
/*
do {
//让用户输入数字
scanf_s("%d", &number);
//用if语句判断输入是否结束。
if (number != -1)
{
sum += number;
count++;
}
} while (number != -1);//如果刚才读到的确实不是-1的话,我们就回头来读下一个数。
*/
//我们这里再用while来试着输入一下:
//注意的是在nwhile的语句里面,我们必须加入一个输入的语句(由于我们还没有学数组,所以只能用循环挨个输入)
scanf_s("%d", &number);
//这边省去了,每一次循环都要判断两次number是否的等于-1的操作,虽然多了一次scanf_s,但是,多的这次只有一次的输出。
//相对上面的方法,更加合理一些。
while (number != -1)
{
sum += number;
count++;
scanf_s("%d", &number);
}
//这里由于是两个整数相除,所以结果是整数毫无疑问
//但是我们有其他的方法来让他不是整数,而是带有小数点的小数。
printf("%f\n",1.0*sum/count);
return 0;
}