标题:思索无果问人也无果,结构数组的小问题
只看楼主
uswood
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2014-3-29
结帖率:100%
已结贴  问题点数:5 回复次数:6 
思索无果问人也无果,结构数组的小问题
题目的愿意是输入5位学生姓名、数学和成绩,按平均分排序,输出平均分最高的学生的姓名及其数学和英语成绩。
于是先测试下基本的能不能做对,结果是输入似乎没问题,但输出则一直是乱码,在单步调试中就是最后的输出错误了。
程序代码:
#include<stdio.h>
int main(void)
{
    struct student{
       char name[50];
       int math,eng;
       float aver;
    }test[3];
    int i;
    for(i=0;i<3;++i)
    scanf("%s%d%d",test[i].name,&test[i].math,&test[i].eng);

    printf("%s%d%d",test[i].name,test[i].math,test[i].eng);
    return 0;

}
这里是测试的代码,本来输入的name那也加了&,别人说都不要加,后来看了下书发现就name加了,可能是字符型本身就是地址。
以下是程序结果:

搜索更多相关主题的帖子: 数学 英语成绩 姓名 
2015-03-18 15:19
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
得分:2 
把这一段

printf("%s%d%d",test[i].name,test[i].math,test[i].eng);

改成

for(i = 0; i < 3; ++i)
        printf("%s\t%d\t%d\n", test[i].name, test[i].math, test[i].eng);

Only the Code Tells the Truth             K.I.S.S
2015-03-18 15:26
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
for(i=0;i<3;++i)
    scanf("%s%d%d",test[i].name,&test[i].math,&test[i].eng);
     for(i=0;i<3;++i)
    printf("%s%d%d\n",test[i].name,test[i].math,test[i].eng);

DO IT YOURSELF !
2015-03-18 15:31
uswood
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2014-3-29
得分:0 
回复 2楼 longwu9t
谢谢啊 但很疑惑为什么必须需要循环才会正确输出呢?单个输出就是那样
2015-03-18 15:32
uswood
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2014-3-29
得分:0 
回复 3楼 wp231957
谢谢 但为什么必须需要循环才会正确输出呢?单个输出就是那样
2015-03-18 15:33
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:3 
i 值越界吧

DO IT YOURSELF !
2015-03-18 15:34
uswood
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2014-3-29
得分:0 
回复 6楼 wp231957
明白了,先前也想过,所以把i++改成++i,但果然没想明白
2015-03-18 15:39



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




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

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