| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 538 人关注过本帖
标题:运行时非正常结束,指点下喽
只看楼主 加入收藏
木朵夕年
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2013-6-14
结帖率:100%
收藏
 问题点数:0 回复次数:5 
运行时非正常结束,指点下喽
#include<stdio.h>
struct student
{
    char name[10];
    int grade[3],average;
    long int xuehao;
}stu[5];
int main()
{
    int i,j,s,sum=0,max,m,t=0,c,e,a,b,h,f,av;
    int d[5];
    int math[5],chinese[5],english[5],average[5];
    struct student stu[5];
    for(i=0;i<5;i++)
    {
        printf("enter xuehao:");
        scanf("%d",&stu[i].xuehao);
        printf("enter name:");
        scanf("%s",stu[i].name);
        
        printf("enter the grades[3]:\n");
        for(j=0,s=0;j<3;j++)
        {
            scanf("%d",&stu[i].grade[j]);
            s=s+stu[i].grade[j];
        }
        average[i]=s/3;
        stu[i].average=average[i];
    }
    for(i=0;i<5;i++)
    {
        math[i]=stu[i].grade[0];
        chinese[i]=stu[i].grade[1];
        english[i]=stu[i].grade[2];
    }
    m=0;
    c=0;
    e=0;
    for(i=0;i<5;i++)
    {
        if(m<math[i])
        {
        m=math[i];a=i;
        }
        
        if(c<chinese[i])
        {
        b=i;c=chinese[i];
        }
        
        if(e<english[i])
        {
            h=i;e=english[i];
        }
   
    }
    printf("math最高的学生:%ld %s %d\n",stu[a].xuehao,stu[a].name,stu[a].grade[0]);
    printf("chinese最高的学生:%ld %s %d\n",stu[b].xuehao,stu[b].name,stu[b].grade[1]);
    printf("english最高的学生:%ld %s %d\n",stu[h].xuehao,stu[h].name,stu[h].grade[2]);
   
av=average[1];            max=0;
    for(i=0;i<5;i++)
    {
        if(av<average[i])
        {f=i;av=average[i];}
   
    }
    printf("平均分最高的学生:%ld %s %d\n",stu[f].xuehao,stu[f].name,av);


        for(j=0,i=0;j<5,i<5;j++,i++)
        {
            if(av<average[j])
            { d[i]=j;av=average[j];}

        }


printf("number\tname\tmath\tchinese\tenglish\taverage\n");/*只运行到这个地方就不再运行且提示关闭程序*/
for(i=0;i<5;i++)
printf("%ld\t%s\t%d\t%d\t%d\t%d\n",stu[d[i]].xuehao,stu[d[i]].name,stu[d[i]].grade[0],stu[d[i]].grade[1],stu[d[i]].grade[2],stu[d[i]].average);

return 0;
}
搜索更多相关主题的帖子: average include 
2013-06-19 08:23
Han_FlyB
Rank: 6Rank: 6
等 级:侠之大者
帖 子:143
专家分:424
注 册:2013-3-25
收藏
得分:0 
你调试一下看调试信息啊
2013-06-19 13:48
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
收藏
得分:0 
越界了。 int d[5],你这个没有初始化,比如这个数可能存放着4222这个垃圾数字,如果你的for(j=0,i=0;j<5,i<5;j++,i++)
        {
            if(av<average[j])
            { d[i]=j;av=average[j];}

        }
中的if(av<average[j])没有成立,那么这个也不成立d[i]=j;,所以你的d[i]还是存放着垃圾数字,所以你后面的输出就会越界printf("%ld\t%s\t%d\t%d\t%d\t%d\n",stu[d[i]].xuehao,stu[d[i]].name,stu[d[i]].grade[0],stu[d[i]].grade[1],stu[d[i]].grade[2],stu[d[i]].average);。

加油加油!
2013-06-19 14:39
木朵夕年
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2013-6-14
收藏
得分:0 
回复 3楼 蔡梓锋
初始化了还是不对,不知道怎么让d[i]被赋值得到average[]的从大到小的顺序。能帮我改改吗
2013-06-19 22:34
木朵夕年
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2013-6-14
收藏
得分:0 
回复 2楼 Han_FlyB
调试木有错的哦
2013-06-19 22:35
木朵夕年
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2013-6-14
收藏
得分:0 
运行出来了!
2013-06-19 23:02
快速回复:运行时非正常结束,指点下喽
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018987 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved