初级C语言,编译无错,运行出错,大家帮帮!

#include
#define N 5
struct stu
{
int numb;
char nam[20];
double sco[3];
};
void main()
{
struct stu st[N];
int i,j,count=0;
for(i=0;i<N;i++)
{
scanf("%d",st[i].numb);
scanf("%s",st[i].nam);
for(j=0;j<3;j++)
scanf("%f",st[i].sco[j]);
}
for(i=0;i<N;i++)
printf("%12d%8s%5f%5f%5f",st[i].numb,st[i].nam,st[i].sco[0],st[i].sco[1],st[i].sco[2]);
}

运行出错,你想要的结果是什么?错误的结果又是什么呢?

运行出错,你想要的结果是什么?错误的结果又是什么呢?

建议你自己单步调试一下,看看各步输出的东东是否正确?

scanf语句需要加地址运算符,scanf("%d",&st[i].numb);
scanf("%f",st[i].sco[j])则需要先赋给临时变量,再赋值。float f;scanf("%f",&f); f = st[i].sco[j];

结构体数组没有初始化,struct stu[5]这样初始化是不对的。我给个小例子你运行看看;
void main()
{
struct stu st[2]={{1,"name1",{1,2,3}},{2,"name2",{4,5,6}}};
int i,j,count=0;

for(i=0;i<2;i++)
printf("%12d,%8s,%5f,%5f,%5f\n",st[i].numb,st[i].nam,st[i].sco[0],st[i].sco[1],st[i].sco[2]);

}
一定要记住结构体数组一定要在定义的时候初始化,st[N]这样初始化是不对的,没有内存分配,还是0xcccccccc,所以输入一个数,回车就会崩了程序

http://blog.csdn.net/mjshldcsd/article/details/7207585这个例子写的和你要达到的效果是一样的,你可以参考一下。
你还可以百度找一下别人的博客,如何动态创建结构体数组

1-- #include后面怎么没东西
scanf函数原型在头文件“stdio.h”中

2--scanf进行输入时候,语法错误漏
scanf(“格式控制字符串”, 地址表列);
地址是由地址运算符“&”后跟变量名组成的

所以第一步 把头文件补齐
第二步scanf处使用地址

scanf("%d",st[i].numb)
改成
scanf("%d",&(st[i].numb))
其他的scanf也改下
如有帮助还请采纳

 #include<iostream>
using namespace std;
#define N 1
struct stu
{
    int numb;
    char nam[20];
    double sco[3];
};
void main()
{
    struct stu st[N];
    int i,j,count=0;
    for(i=0;i<N;i++)
    {
        scanf("%d",&st[i].numb);//加取地址运算符&
        scanf("%s",st[i].nam);
        for(j=0;j<3;j++)
            scanf("%lf",&st[i].sco[j]);//修改输入格式%lf,加取地址运算符&
    }
    for(i=0;i<N;i++)
        printf("%12d%8s%5.2lf%5.2lf%5.2lf\n",st[i].numb,st[i].nam,st[i].sco[0],st[i].sco[1],st[i].sco[2]);//修改格式
}