| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 521 人关注过本帖
标题:哪错啦(关于结构体)
只看楼主 加入收藏
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
结帖率:82.35%
收藏
已结贴  问题点数:30 回复次数:7 
哪错啦(关于结构体)
#include "stdio.h"
#include<string.h>
struct student
{
    char num[6];
    char name[8];
    double score[3];
    float avr;
    } stu[2],s;
main()
{
    int i,j;
    float sum=0;
    FILE *fp;
    /*input*/
for(i=0;i<2;i++)
{
    printf("\n please input No. %d score:\n",i+1);
    printf("stuNo:");
    scanf("%s",stu[i].num);
    printf("name:");
    scanf("%s",stu[i].name);

for(j=0;j<3;j++)
{
    printf("score %d.",j+1);
    scanf("%lf",&stu[i].score[j]);

}
  printf("\n");
}
    for(i=0;i<3;i++)
    for(j=0;j<2;j++)
   {
        sum+=stu[i].score[j];
    }
    s.avr=sum/3.0;
printf("%f",s.avr);
fp=fopen("c:\\stud","w");
for(i=0;i<2;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
getch();
}
搜索更多相关主题的帖子: 结构体 
2010-05-22 12:06
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:21 
请楼主说明出了什么问题


南国利剑
2010-05-22 12:20
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
你的代码我调试了一下,发现一些小问题,稍作修改就过了。
你看看是否满意?
程序代码:
#include "stdio.h"
#include<string.h>
#include<assert.h>
struct student
{
    char num[6];
    char name[8];
    double score[3];
    double avr;        //建议修改成double
 } stu[2],s;

main()
{
    int i,j;
    double sum=0;    //此处修改数据类型,原因看下文
    FILE *fp;
    /*input*/
for(i=0;i<2;i++)
{
    printf("\n please input No. %d score:\n",i+1);
    printf("stuNo:");
    scanf("%s",stu[i].num);
    printf("name:");
    scanf("%s",stu[i].name);

for(j=0;j<3;j++)
{
    printf("score %d.",j+1);
    scanf("%lf",&stu[i].score[j]);

}
  printf("\n");
}
    for(i=0;i<3;i++)
    for(j=0;j<2;j++)
   {
        sum+=stu[i].score[j];    //这行报错,因为可能出现数据的精度的损失。所以赋值号两边的数据类型要相同,所以把sum的类型改为double
    }
    s.avr=sum/3.0;

printf("%lf",s.avr);

fp=fopen("d:\\stud.txt","w");    //此处有修改,加上了文件的后缀,建议修改成d盘,因为c盘式系统盘一般收保护,不能随便创建文件,注意你打开的是一个文本文件

assert(fp);

for(i=0;i<2;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)    //用fwrite写进去的是二进制的信息,你在文件里会看到乱码。如果要看到文本信息就要改用fprintf输出到文件就可以了
    printf("file write error\n");

fclose(fp);

getchar();
}

 

南国利剑
2010-05-22 12:31
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:0 
回复 2楼 南国利剑
主要是不能输入成绩,输完姓名,直接就关闭。(win-TC编译器)
2010-05-22 12:46
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 4楼 zhanfffmmm
我改过的也出现这种情况吗?

南国利剑
2010-05-26 00:46
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:0 
是啊
,不知道为什么啊
2010-05-26 17:54
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 6楼 zhanfffmmm
我用的是vc6.0,我试了,没有问题啊。

南国利剑
2010-05-27 00:43
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:0 
。。。。。
2010-05-27 21:03
快速回复:哪错啦(关于结构体)
数据加载中...
 
   



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

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