| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4354 人关注过本帖
标题:结构体数组输入输出问题,得不到结果,高手指导一下
只看楼主 加入收藏
hh2010
该用户已被删除
收藏
 问题点数:0 回复次数:7 
结构体数组输入输出问题,得不到结果,高手指导一下
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 结构体 结果 输出 得不到 
2010-06-01 00:11
yuls
Rank: 2
等 级:论坛游民
帖 子:23
专家分:60
注 册:2010-5-28
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

那个 最后的分数输出 我也不知咋回事,忘了。
#include<stdio.h>
#include<string.h>
struct  Student
{
    unsigned int num;
    char name[20];
    char sex;
    int age;
    float score;
    int sum;
    float average;
};

struct Student a[3];
int main(void)
{
    int i;
    printf("请输入学生的学号,姓名,性别,年龄,分数\n");
    for(i=0;i<3;i++)
        scanf("%d %s %c %d %f",&a[i].num,&a[i].name,&a[i].sex,&a[i].age ,&a[i].score);
    printf("\n\n");
    for(i=0;i<3;i++)
        printf("%d  %s  %c %d %f\n",a[i].num,a[i].name,a[i].sex,a[i].age ,a[i].score);
    return 0;
}
2010-06-01 01:44
qq423000
Rank: 2
等 级:论坛游民
帖 子:21
专家分:20
注 册:2010-5-21
收藏
得分:0 
以下是引用yuls在2010-6-1 01:44:40的发言:


那个 最后的分数输出 我也不知咋回事,忘了。
#include
#include
struct  Student
{
    unsigned int num;
    char name[20];
    char sex;
    int age;
    float score;
    int sum;
    float average;
};

struct Student a[3];
int main(void)
{
    int i;
    printf("请输入学生的学号,姓名,性别,年龄,分数\n");
    for(i=0;i<3;i++)
        scanf("%d %s %c %d %f",&a.num,&a.name,&a.sex,&a.age ,&a.score);
    printf("\n\n");
    for(i=0;i<3;i++)
        printf("%d  %s  %c %d %f\n",a.num,a.name,a.sex,a.age ,a.score);
    return 0;
}
    小数可以这样控制嘛
 printf("%d  %s  %c %d %5.2f\n",......(占5个字符宽,有2位小数)。
2010-06-01 08:09
qq423000
Rank: 2
等 级:论坛游民
帖 子:21
专家分:20
注 册:2010-5-21
收藏
得分:0 
以下是引用hh2010在2010-6-1 00:11:30的发言:

struct  Student
{
    unsigned int num;
    char name[20];
    char sex;
    int age;
    float score;
    int sum;
    float average;
};
#include
    struct Student a[3];
int main(void)
{
    int i;
    printf("请输入学生的学号、姓名、性别、年龄、分数\n");
for(i=1;i<=3;i++)
scanf("%d%s%d%f",&a.num,&a.name,&a.sex,&a.score);
for(i=1;i<=3;i++)
printf("%3d%3s%3d%3f",a.num,a.name,a.sex,a.score);
return 0;
}
以上程序可以输入,但输不出结果,望高手指点一下,谢谢
比如:输入8 huang m 8 90
输出结果为: 8huang  00.000000  0     00.000000  0      00.000000
问题1:for(i=1;i<=3;i++),定义的结构体数组是3个元素,那下标应该是0,1,2。
问题2:scanf("%d%s%d%f",&a[i].num,&a[i].name,&a[i].sex,&a[i].score);这里不够细心,是不是少了年龄?
printf("%3d%3s%3d%3f",a[i].num,a[i].name,a[i].sex,a[i].score);这里%3f似乎不起作用,因为当实际数据超过域宽时,域宽不起作用,按数据实际宽度输出,建议%5.2f。

[ 本帖最后由 qq423000 于 2010-6-1 08:21 编辑 ]
2010-06-01 08:16
炫舞小子
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-01 09:49
biccaso2010
Rank: 2
等 级:论坛游民
帖 子:7
专家分:24
注 册:2010-6-1
收藏
得分:0 
以下是引用hh2010在2010-6-1 00:11:30的发言:

struct  Student
{
    unsigned int num;
    char name[20];
    char sex;
    int age;
    float score;
    int sum;
    float average;
};
#include
    struct Student a[3];
int main(void)
{
    int i;
    printf("请输入学生的学号、姓名、性别、年龄、分数\n");
for(i=1;i<=3;i++)
scanf("%d%s%d%f",&a.num,&a.name,&a.sex,&a.score);
for(i=1;i<=3;i++)
printf("%3d%3s%3d%3f",a.num,a.name,a.sex,a.score);
return 0;
}
以上程序可以输入,但输不出结果,望高手指点一下,谢谢
比如:输入8 huang m 8 90
输出结果为: 8huang  00.000000  0     00.000000  0      00.000000
   你这里对数组的赋值犯了常见错误:C语言对数组下标不是从1开始,而是从0开始。
   C中对数组下标的规定是“不对称”的:下界是0(包含),上界是数组大小(不包含),因此在数组定义中:我们提倡写法是for(i=0;i<3;i++) 而不是for(i=0;i<=2;i++) ,注意这里不能为i<=3,因为下标3对于数组a[3]来说已经出界了,a[3]的含义是:内存中存储数组a的地址的下一个地址中所引用的值,内容是不确定的。如果你在不确定的时候对他进行引用或者赋值操作,会带来不确定的后果。这也是指针危险的原因之一。
2010-06-01 10:44
ipodqiu
Rank: 2
等 级:论坛游民
帖 子:9
专家分:16
注 册:2010-5-30
收藏
得分:0 
你源代码第一个for语句赋值的时候错了,应该是for(i=0;i<3;i++)
后面输入的for好像也是同样的问题
2010-06-03 10:44
lwtcode
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-3
收藏
得分:0 
学习啦
2010-06-03 13:26
快速回复:结构体数组输入输出问题,得不到结果,高手指导一下
数据加载中...
 
   



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

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