| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:把结构体的值赋给数组,用数组输出却全是一些负值
只看楼主 加入收藏
xhay
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:26
专家分:7
注 册:2012-10-19
结帖率:44.44%
收藏
已结贴  问题点数:10 回复次数:2 
把结构体的值赋给数组,用数组输出却全是一些负值
程序代码:

这个程序最后一个子函数打印时数据就全部变成了负数,求解,哪里错了






#include"stdio.h"
#include"math.h"
#include"string.h"
#include"stdlib.h"
#include"time.h"
#define N 30
#define ADDRESS "D:\\test.txt"
FILE *fp;
struct information
{
    int Math;
    int Chinese;
    int English;
}stu[N];
void main()
{
    void f1();
    int i,a;
    srand(time(NULL));
    if((fp=fopen(ADDRESS,"a+"))==NULL)
    {
        printf("cannot open this file\n");
        exit(0);
    }
    for(i=0;i<N;i++)                                   //把文件中的内容储存到结构体中
        {
            fread(&stu[i],sizeof(struct information),1,fp);
        }
    fclose(fp);
    printf("1、录入成绩\n2、把成绩赋给一个数组后输出\n");
    scanf("%d",&a);                                                                  //选择菜单的命令
    while(a<1||a>2)
    {
        printf("输入错误,请重新输入!\n");
        scanf("%d",&a);
    }         

    if((fp=fopen(ADDRESS,"a"))==NULL)
        {
            printf("cannot open this file\n");
            exit(0);
        }
    switch(a)
    {
    case 1:
    for(i=0;i<N;i++);
    {
   

            stu[i].Math=rand()%100;                                            //这里会产生0~99的数字,随机数的使用
            stu[i].Chinese=rand() % 100;
            stu[i].English=rand() % 100;
            fwrite(&stu[i],sizeof(struct information),1,fp);
    }
    case 2:
        f1();
    }
    fclose(fp);

}
void f1()
{
    void print(int x[N]);
    int i,math[N],chinese[N],english[N];
    for(i=0;i<N;i++)
    {
        stu[i].Math=math[i];
        stu[i].Chinese=chinese[i];
        stu[i].English=english[i];
    }
    printf("------------------------------------------\n");
    printf("             数学成绩统计\n");
    print(math);
    printf("------------------------------------------\n");
    printf("             语文成绩统计\n");
    print(chinese);
    printf("------------------------------------------\n");
    printf("             英语成绩统计\n");
    print(english);
    printf("------------------------------------------\n");


}
void print(int x[N])
{
    int i=0;
    for(;i<N;i++)
    {
        printf("%d\t",x[i]);

 
    }
}
搜索更多相关主题的帖子: 打印 结构体 
2013-01-05 10:11
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:10 
    void print(int x[N]);
    int i,math[N],chinese[N],english[N];
    for(i=0;i<N;i++)
    {
        stu[i].Math=math[i];
        stu[i].Chinese=chinese[i];
        stu[i].English=english[i];
    }
这里都没有初始化,能赋值吗?

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-05 10:43
xhay
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:26
专家分:7
注 册:2012-10-19
收藏
得分:0 
回复 2楼 yaobao
哎呀。。我想起来了。。。。写反了,谢谢你的提醒哈。。。。。。
2013-01-05 11:00
快速回复:把结构体的值赋给数组,用数组输出却全是一些负值
数据加载中...
 
   



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

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