| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 773 人关注过本帖
标题:自己第一次用结构体写程序,有好多错误!
只看楼主 加入收藏
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
结帖率:83.33%
收藏
 问题点数:0 回复次数:10 
自己第一次用结构体写程序,有好多错误!
我自己按http://www.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=89904&page=1写了个程序 怎么就不对呢!!?
我是第一次用结构体 有好多东西不熟悉 ,还请指出错误,现在还不知到 运行起来能不能得到正确答案啊
#include"stdio.h"
#include"conio.h"
struct
{
int num;
char name[8];
float score[12];
float avar;
}sum[100];
float fun(struct sum[],int);
float fun(struct sum[],int n)
{
int x,y;
float i=0,j=0,c=0;
for(x=0;x<12;x++)
for(y=0;y<12;y++)
{
if((sum[n].score[y])>(sum[n].score[y+1]))
{c=sum[n].score[y];sum[n].score[y]=sum[n].score[y+1];sum[n].score[y+1]=c;}
}
for(x=0;x<12;x++)
i+=sum[n].score[x];
for(y=0;y<12;y++)
j=(i-(sum[n].score[0]+sum[n].score[11]))/10;
return j;
}
main()
{
int i=0,j=0,a,m=0;
float z;
while(1)
{
printf("\n编号:");
scanf("%d",&sum[i].num);
printf("\n姓名:");
gets(sum[i].name);
printf("\n请输入成绩:");
for(j=0;j<12;j++)
scanf("%f",&sum[i].score[j]);
sum[i].avar=fun(sum,i);
printf("\n编号:%d",sum[i].num);
printf("\姓名:%s",sum[i].name);
for(j=0;j<12;j++)
printf("\n平委平分:%f",sum[i].score[j]);
printf("\n平均分:%f",sum[i].avar);
i++;
printf("\n继续请按1,否则按2:");scanf("%d",&a);
if(a==2) break;
}
sum[i]='\0';
for(j=0;j<=i;j++){
for(m=0;m<=i;m++){
if(sum[m].avar<sum[m+1].avar)
{z=sum[m].avar;sum[m].avar=sum[m+1].avar;sum[m+1].avar=z;}}}
for(j=0;j<i;j++)
{
printf("\n从高到低平分:");
printf("\n\n编号:%d",sum[j].num);
printf("\n姓名:%s\n",sum[j].name);
for(a=0;a<12;a++)
printf("各平委平分:%f\t",sum[j].score[a];
printf("\n平均分:%f",sum[j].avar);
}
getch();
}
搜索更多相关主题的帖子: 结构体 
2006-09-14 21:17
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用mp3aaa在2006-9-14 21:17:25的发言:
我自己按http://www.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=89904&page=1写了个程序 怎么就不对呢!!?
我是第一次用结构体 有好多东西不熟悉 ,还请指出错误,现在还不知到 运行起来能不能得到正确答案啊
#include"stdio.h"
#include"conio.h"
struct
{
int num;
char name[8];
float score[12];
float avar;
}sum[100]; //这个结构体的名字上什么?
float fun(struct sum[],int); //参数类型错误,下同
float fun(struct sum[],int n)
{
int x,y;
float i=0,j=0,c=0;
for(x=0;x<12;x++) //这个是做什么的?
for(y=0;y<12;y++)
{
if((sum[n].score[y])>(sum[n].score[y+1])) / /为什么要交换数组中的值,又不是要排序.
{c=sum[n].score[y];sum[n].score[y]=sum[n].score[y+1];sum[n].score[y+1]=c;}
}
for(x=0;x<12;x++)
i+=sum[n].score[x];
for(y=0;y<12;y++)
j=(i-(sum[n].score[0]+sum[n].score[11]))/10;
return j;
}//你的意思是不是将最小值,最大值换到第一个元素,和最后个元素?,这样做可以,但把题目复杂化了
main()
{
int i=0,j=0,a,m=0;
float z;
while(1)
{
printf("\n编号:");
scanf("%d",&sum[i].num);
printf("\n姓名:");
gets(sum[i].name);
printf("\n请输入成绩:");
for(j=0;j<12;j++)
scanf("%f",&sum[i].score[j]);
sum[i].avar=fun(sum,i);
printf("\n编号:%d",sum[i].num);
printf("\姓名:%s",sum[i].name);
for(j=0;j<12;j++)
printf("\n平委平分:%f",sum[i].score[j]);
printf("\n平均分:%f",sum[i].avar);
i++;
printf("\n继续请按1,否则按2:");scanf("%d",&a);
if(a==2) break;
}
sum[i]='\0';
for(j=0;j<=i;j++){
for(m=0;m<=i;m++){
if(sum[m].avar<sum[m+1].avar)
{z=sum[m].avar;sum[m].avar=sum[m+1].avar;sum[m+1].avar=z;}}}
for(j=0;j<i;j++)
{
printf("\n从高到低平分:");
printf("\n\n编号:%d",sum[j].num);
printf("\n姓名:%s\n",sum[j].name);
for(a=0;a<12;a++)
printf("各平委平分:%f\t",sum[j].score[a];
printf("\n平均分:%f",sum[j].avar);
}
getch();
}


倚天照海花无数,流水高山心自知。
2006-09-14 21:49
mlml
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-7-16
收藏
得分:0 
struct singer // 着样可以了吧?
{
int num;
char name[8];
float score[12];
float avar;
}sum[100]; //这个结构体的名字上什么?
////////////////////////////////////////////////////////////////
float fun(struct sum[],int); //参数类型错误,下同
float fun(struct sum[],int n)
sum[i].avar=fun(sum,i);//那应该怎么做呢?

printf("\n请输入成绩:");
for(j=0;j<12;j++)
scanf("%f",&sum[i].score[j]);//先输入 一个人的成绩 一共12个
sum[i].avar=fun(sum,i); \\然后把此人的成绩 传给 fun 函数 ,然后先由fun函数排序 然后在 求出平均数,传回 sum[i].avar
//////////////////////////////////////////////////////////////////////
2006-09-14 21:59
mlml
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-7-16
收藏
得分:0 
上面的号 就是 我啊 mp3aaa
刚刚用同学的号做实验呢

[此贴子已经被作者于2006-9-14 22:00:44编辑过]

2006-09-14 22:00
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
得分:0 
楼主用的是什么编译器
我用的TC2,不支持中文

我是一只小菜鸟,请大家多多照顾! QQ 87135637
2006-09-14 22:01
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
C-Free 3.5
我家也有 TC 不过TC看起来不顺眼 就用C-Free 3.5了

[此贴子已经被作者于2006-9-14 22:02:17编辑过]


羊肉串 葡萄干 哈密瓜!!
2006-09-14 22:01
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
如果我想吧
sum[i].score 这个传给fun 应该怎么做呢?

羊肉串 葡萄干 哈密瓜!!
2006-09-14 22:05
走火
Rank: 1
等 级:新手上路
帖 子:426
专家分:0
注 册:2005-12-28
收藏
得分:0 
我用C还没输出过一次中文

我是一只小菜鸟,请大家多多照顾! QQ 87135637
2006-09-14 22:06
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
直接传结构体数组名.

倚天照海花无数,流水高山心自知。
2006-09-14 22:29
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
我是想传的 sum[i]

羊肉串 葡萄干 哈密瓜!!
2006-09-14 23:34
快速回复:自己第一次用结构体写程序,有好多错误!
数据加载中...
 
   



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

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