c语言数组中第一位无法写入

#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;
}