输出结果是什么,为什么?

int main()
void f(int b[]);
int a[10]={1,2,3,4,5,6,7,8,9,10},i;
f(a);
for(i=0;i<10;i++)
{
printf("%d,"a[i]);
}
return 0;
}
void f(int b[])
{
int i;
for(i=2;i<6;i++) b[i]*=2;
}

编译错误
printf("%d,"a[i]);
应改为
printf("%d",a[i]);

改为正常后输出为

img

int a[10]={1,2,3,4,5,6,7,8,9,10},i;
f(a);
此时进入f函数
for (i = 2; i < 6; i++) b[i] *= 2;
b[i] *= 2意思是,b[i] =b[i]*2
i=2,b[2] =b[2]*2 6
i=3,b[3] =b[3]*2 8
i=4,b[4] =b[4]*2 10
i=5,b[5] =b[5]*2 12
i=6,就跳出循环了
继续执行
for (i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
打印数组a,因为在f函数中只改变了下标为2、3、4、5的值,也就是数组中的3、4、5、6
因此原来的不变,还是1、2、7、8、9、10
所以最终就是1、2、6、8、10、12、7、8、9、10

函数f() 实现对数组a[2] -- a[5] 4个元素的值扩大为原值 x 2,最终输出:1,2,6,8,10,12,7,8,9,10,

1,2,6,8,10,12,7,8,9,10,

f函数中是把 a[2], a[3], a[4], a[5] 的值乘以2

程序中有几个错误
main函数中的 { 掉了
printf("%d,",a[i]);中的 , 掉了

修改后的程序为:

#include<stdio.h>
int main(){
    void f(int b[]);
    int a[10]={1,2,3,4,5,6,7,8,9,10},i;
    f(a);
    for(i=0;i<10;i++)
    {
        printf("%d,",a[i]);
        
    }
    return 0;
}
void f(int b[])
{
    int i;
    for(i=2;i<6;i++) b[i]*=2;
}