标题:结构体数组做形参运行错误!
只看楼主
荆楚之恋
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
结帖率:100%
已结贴  问题点数:10 回复次数:5 
结构体数组做形参运行错误!
#include<stdio.h>
struct stu
{
    int num;
    char name[10];
    float score[3];
}student[5];

void output(struct stu mem[5])
{
    int i,j;
    printf("No.    num    name   scor1  scor2  scor3\n");
    for(i=0;i<5;i++)
        printf("%d%8s",mem[i].num,mem[i].name);
    for(j=0;j<3;j++)
        printf("%8f",mem[i].score[j]);
    printf("\n");
}

void main()
{
    int i,j;
    printf("Please input information:\n");
    for(i=0;i<5;i++)
    {
        scanf("%d",student[i].num);
        scanf("%s",student[i].name);
        for(j=0;j<3;j++)
            scanf("%f",&student[i].score[j]);
    }
    output(student);
}

搜索更多相关主题的帖子: void mem include 结构体 
2013-05-20 11:18
荆楚之恋
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
得分:0 
望各位高手不吝赐教!
2013-05-20 11:30
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
得分:10 
首先,你在scanf("%d",student[i].num);语句中少了个&,取址符。添加上就可以运行了。

你这个输入很怪异的。

建议加上提示信息,比如:

 for(i=0;i<5;i++)
    {
        printf("序号:");
        scanf("%d",&student[i].num);
        printf("姓名:");
        scanf("%s",student[i].name);
        printf("成绩:");
        for(j=0;j<3;j++)
            scanf("%f",&student[i].score[j]);
    }

然后就可以很明确的输入了,像这样:
Please input information:
序号:1
姓名:yyj
成绩:


Edsger Dijkstra:算法+数据结构=程序
2013-05-20 11:43
荆楚之恋
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
得分:0 
回复 3楼 雪狼MJ
恩,谢谢指点!看来又犯低级错误了!
2013-05-20 12:08
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
得分:0 
哈哈,这是难免的,自己多注意,调试调试就好了

Edsger Dijkstra:算法+数据结构=程序
2013-05-20 12:23
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
得分:0 
#include<stdio.h>
struct stu
{
    int num;
    char name[10];
    float score[3];
}student[5];

void output(struct stu mem[5])
{
    int i,j;
    printf("No.    num    name   scor1  scor2  scor3\n");
    for(i=0;i<5;i++)
    {                     <-------关键错误
        printf("%d%8s",mem[i].num,mem[i].name);
        for(j=0;j<3;j++)
            printf("%8f",mem[i].score[j]);
        printf("\n");
    }                     <-------同上
}

void main()
{
    int i,j;
    printf("Please input information:\n");
    for(i=0;i<5;i++)
    {
        scanf("%d",student[i].num);
        scanf("%s",student[i].name);
        for(j=0;j<3;j++)
            scanf("%f",&student[i].score[j]);
    }
    output(student);
}
2013-05-20 20:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-407539-1-1.html




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

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