还是看一下之前的那个求平均数的那个题的改编版:
如何写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数。
这个时候,我们不能用之前的循环的方法,输入一个求和然后再输入一个,求和并计数,而是要把每一个数字都全部存下来,并进行计数,以及后面的比对。
这里就要使用我们今天讲的独特的方法:数组。
具体来看下面的代码:
#include<stdio.h>
int main()
{
int x;
double sum = 0;
int cnt = 0;
int number[100];//里面的每一个单元都是一个int的数。也就是这里可以存入100个int。
scanf_s("%d", &x);
//数字存入数组,求和以及计数。
while (x != -1)
{
number[cnt] = x;//只要number不是-1,就会挨个的输入数组。第一个放的是cnt等于0的时候。
//调试代码:
{
int i;
printf("%d\t", cnt);//输出这个是数组的第几个编号。
//用一个循环输出已经在数组里面的值有哪些。
for (i = 0; i <= cnt; i++)
{
printf("%d\t", number[i]);
}
printf("\n");//为了好看加的回车。
}
//
sum += x;
cnt++;
scanf_s("%d", &x);
}
//求出平均数,判断每一个数与平均数的大小关系并输出满足关系的数。
if (cnt > 0)
{
printf("%f\n", sum / cnt);
int i;
for (i = 0; i < cnt; i++)
{
if (number[i] > sum / cnt)
{
printf("%d\n", number[i]);
}
}
}
return 0;
}
其中的一个块的东西是用来查看输入的代码的,具体来看看结果是什么:
当然要注意的是,这时候我们的程序还没有结束,最后输入一个-1则表明输入结束:
![](https://img-blog.csdnimg.cn/img_convert/21bb3dcf63311599465da52a697a9f22.png)
我们去掉一些其他的调试机制,来具体的看一下这个数:
#include<stdio.h>
int main()
{
int x;
double sum = 0;
int cnt = 0;
int number[100];//定义数组。
scanf_s("%d", &x);
//数字存入数组,求和以及计数。
while (x != -1)
{
number[cnt] = x;//对数组中的元素赋值。
sum += x;
cnt++;
scanf_s("%d", &x);
}
//求出平均数,判断每一个数与平均数的大小关系并输出满足关系的数。
if (cnt > 0)
{
printf("%f\n", sum / cnt);
int i;
//遍历数组。
for (i = 0; i < cnt; i++)
{
if (number[i] > sum / cnt)//使用数组中的元素。
{
printf("%d\n", number[i]);
}
}
}
return 0;
}
至于数组的越界问题,我们后面讲。