书上的代码是不是错了,超过10的数据储存在那?

#include <stdio.h>
void main ()
{
float a[10];
int i, n;
float s = 0;
printf ("输入数组中元素的个数n:");
scanf ("%d", &n);
for (i = 0; i < n; i ++)
{
printf ("a[%d]: ", i);
scanf ("%f", &a[i]);
s = s + a[i];
}
printf ("数组中所有元素之和为:%f\n", s);
}

这个对输入应该有限制的,可能题目规定了数据不超过十个

这么写说明默认输入的数字小于10

这个代码逻辑不严谨,在n小于10的情况下是对的,如果大于10,这个是有问题的。
如果大于10了,多余的数是存在这个函数的栈空间上,紧挨着前面十个数往后存,如果数量特大,把栈空间写穿了,程序崩溃。
严谨的做法是价格判断n>10的时候,就不让输入了就可以了。