为什么总在第三位输出一个0,0是从哪来的?

输入:

5
1001   YaolinPan       89
1002   YuhangGao       98.9
1003   JunyuanGao      42.5
1004   HongpengYang    72
1005   YuxuanHan       35

 

输出:

1001 YaolinPan 0
89 1002 0
YuhangGao 98.9 0
1003 JunyuanGao 0
42.5 1004 0
 

代码:

#include <stdio.h>
struct stdent
{
    int id[4];
    char name[10];
    
}stu[10];

int main()
{
    int i, j, temp, N,count=0;
    double average,sum=0;
    double grade[100];
    
    scanf("%d\n", &N);
    for (i = 0; i < N; i++)
    {
        scanf("%s %s %.lf\n", &stu[i].id, &stu[i].name, &grade[i]);
        printf("%s %s %.lf\n", stu[i].id, stu[i].name, grade[i]);
        sum += grade[i];
    }
    average = sum/N;
//     printf("%.2lf %.2lf\n",sum,average);
    
    for (i = 0; i < N; i++)
    {
        if (grade[i] < 60.0)
            count=count+1;
    }
   
//     printf("%d",count);
    
   
}

 

问题:为什么总在第三位输出一个0,0是从哪来的

麻烦大佬给解答一下了,谢谢谢谢
 

student结构体中id直接使用int就可以了,不用int id[4]啊,int id[4]是4个整数数组。而且你在for循环里,scanf和printf的时候,用%s去表示int型,这样也是不对的。代码修改如下,如有帮助,请采纳一下,谢谢

#include <stdio.h>
struct stdent
{
	int id;  //修改1:it[4]
	char name[10];

}stu[10];

int main()
{
	int i, j, temp, N,count=0;
	double average,sum=0.0;  //修改2:sum= 0
	double grade[100];

	scanf("%d\n", &N);
	for (i = 0; i < N; i++)
	{
		scanf("%d %s %lf", &stu[i].id, &stu[i].name, &grade[i]);
		printf("%d %s %.1f\n", stu[i].id, stu[i].name, grade[i]);
		sum += grade[i];
	}
	average = sum/N;
	//     printf("%.2lf %.2lf\n",sum,average);

	for (i = 0; i < N; i++)
	{
		if (grade[i] < 60.0)
			count=count+1;
	}

	//     printf("%d",count);


}