#include
int main(int argc, const char * argv[])
{
int i,num;
float avg,sum;
float a[10]={0}; //初始化数组
printf("请输入10个以内的数字,以回车键结束\n");
for(i=0;getchar()!='\n';i++)
scanf("%f",&a[i]);//将用户输入的数组输入数组中
num=i;
if(num>10)
{
printf("输入数字超过10个,请重新输入!\n");
}
else
{
sum=0;
for(i=0;i<num;i++)
{sum+=a[i];} //求和
avg=1.0*sum/num; //再求平均数
printf("这几个数字的平均数为%f\n",avg);
}
return 0;
在xcode上编译的,利用breakpoint查看,无论怎么输入数组a中的a[0]都是0,
实在不知道问题出在哪里,请各位帮忙看看,谢谢啦
是不是你输入的全部数字都从后移了一位数组下标?
你的for循环有问题:getchar()!='\n'已经获取输入的数字了,scanf怎么可能再获取一遍。
因为你的第一个数字直接被getchar()给读走了,所以a[0]没法附上值,改成do...while可能更好
#include <stdio.h>
int main(int argc, const char * argv[])
{
int i = 0, num;
float avg, sum;
float a[10] = { 0 }; //初始化数组
printf("请输入10个以内的数字,以回车键结束\n");
do
{
scanf("%f", &a[i]);//将用户输入的数组输入数组中
i++;
} while (getchar() != '\n');
num = i;
if (num > 10)
{
printf("输入数字超过10个,请重新输入!\n");
}
else
{
sum = 0;
for (i = 0; i < num; i++)
{
sum += a[i];
} //求和
avg = 1.0*sum / num; //再求平均数
printf("这几个数字的平均数为%f\n", avg);
}
return 0;
}