| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1624 人关注过本帖
标题:[求助]结构体问题
取消只看楼主 加入收藏
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
 问题点数:0 回复次数:9 
[求助]结构体问题

大家晚上好
又有问题请教大家了以下是原题和程序:
有10个学生,每个学生的数据包括学号,姓名,3门课的成绩,从键盘输入10个学生的
数据,要求打印吵出每个学生学的平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课
成绩,平均分数).

输入和输出函数都可以执行,中间那个void AccountAver(struct student *p)函数却不能实现计算各个学生的平均成绩和总平均成绩的功能,看观之许久未能发现问题所在,请大家指点迷津,万分感谢!

#include "stdio.h"
struct student
{
int num;
char name[20];
int score[3];
float aver;
} stu[10];

float averz=0,max=0;/*定义三个全局变量*/
int k;

void Print(struct student *p)
{
int i;
printf("\nNO. name score1 score2 score3 average\n");
for(i=0;i<10;i++,p++)
printf(" %d%4s%6d%7d%7d%9.2f\n",p->num,p->name,p->score[0],p->score[1],
p->score[2],p->aver);
printf("the total average is %f\n",averz);
printf("the %d student of hight score:\n",k+1);
p=stu;
p=p+k;
printf("%d %s %d %d %d%5.2f\n",p->num,p->name,p->score[0],p->score[1],
p->score[2],p->aver);
}


void Input(struct student *p)
{
int i,j;
for(i=0;i<10;i++,p++)
{
printf("Input the %dth student Number and Name:\n",i+1);
printf("Number:");
scanf("%d",&p->num);
printf("Name:");
scanf("%s",p->name);
printf("Input the %dth student score:\n",i+1);
for(j=0;j<3;j++)
{
printf("Score%d:",j+1);
scanf("%d",&p->score[j]);
}
printf("\n");
}
}

void AccountAver(struct student *p)
{
int i,j;
float sum=0;
for(i=0;i<10;i++,p++)
{
for(j=0;j<3;j++);
sum=p->score[j]+sum;
p->aver=sum/3;
if(max<p->aver)
{
max=p->aver;
k=i;
}
averz=p->aver+averz;
}
averz=averz/10;
}

main()
{
struct student *p;
p=stu;
Input(p);
p=stu;
AccountAver(p);
p=stu;
Print(p);
getch();
}

m/?u=157

搜索更多相关主题的帖子: 结构体 
2006-05-15 23:33
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 
呵呵,写的是有点乱
结构体快学完了,搞潭的练习题呢
这几天还挺忙,要不练习应该做完了,现在才开始做,感觉不是特好理解

程序 是一门语言的艺术,讲究学练读写!
2006-05-15 23:47
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 

[CODE]我重新写了一个,应该简单一点,不过调用函数的时候还是回出现问题#include "stdio.h"
struct student
{
int num;
char name[20];
int score[3];
float aver;
} stu[10];

float averz=0,max=0;
int k;

void AccountAver(struct student *p)
{
int i,j;
float sum=0;
for(i=0;i<10;i++,p++)
{
for(j=0;j<3;j++);
sum=p->score[j]+sum;
p->aver=sum/3;
if(max<p->aver)
{
max=p->aver;
k=i;
}
averz=p->aver+averz;
}
averz=averz/10;
}


main()
{ int i,j;
for(i=0;i<10;i++)
{
printf("\ninput score of student %d:\n",i+1);
printf("No.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
}
}
AccountAver(stu);
printf("NO. name score1 score2 score3 average\n");
for(i=0;i<10;i++)
{ printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%9d",stu[i].score[j]);
printf("%8.2f\n",stu[i].aver);
}
printf("average=%6.2f\n",averz);
printf("The highest score is: %s,score total: %d",stu[k+1].name,stu[k+1].aver);

getche();
}


[/CODE]


程序 是一门语言的艺术,讲究学练读写!
2006-05-16 00:08
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 
不好意思我在看程序

程序 是一门语言的艺术,讲究学练读写!
2006-05-16 00:13
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 
多谢论坛和feng1256啊,我在弄一下刚才那个程序

程序 是一门语言的艺术,讲究学练读写!
2006-05-16 00:14
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 
原来是这样啊,一个逗号搞得整个函数都不能用了,论坛说的对,学习态度啊,
作学问一定要严谨,一丝不苟
这个问题多谢,论坛,feng1256的帮助,谢谢



论坛你出的那个递归的问题,我现在去做做

程序 是一门语言的艺术,讲究学练读写!
2006-05-16 00:20
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 
[CODE]

论坛还在吗?
写出来了就是慢点

#include "stdio.h"
#include "string.h"

int i=0;

void move(char a[10],int n)
{
char t;
t=a[i],a[i]=a[n-i-1],a[n-i-1]=t;
i++;
if (i < n-i-1)
move(a,n);
}

main()
{
char a[]={"ABCDE"};
int n;
n=strlen(a);
puts(a);
move(a,n);
printf("\n");
puts(a);
getch();
return 0;
}

[/CODE]

程序 是一门语言的艺术,讲究学练读写!
2006-05-16 01:06
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 
你们可真快啊,编完都讨论完了哦

程序 是一门语言的艺术,讲究学练读写!
2006-05-16 01:10
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 
哈哈,多谢二位啊,你们慢慢聊
我去做链表的练习题去了

程序 是一门语言的艺术,讲究学练读写!
2006-05-16 01:14
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
收藏
得分:0 

[QUOTE]你要是设置外部变量,直接定义两个一个从前向后一个从后向前,这样快些[/QUOTE]

论坛你的建议是这样吗?
[CODE]
#include "stdio.h"
#include "string.h"

int i=0,j=1;

void move(char a[10],int n)
{
char t;
t=a[i],a[i]=a[n-j],a[n-j]=t;
i++,j++;
if (i < n-j)
move(a,n);
}

main()
{
char a[]={"ABCDE"};
int n;
n=strlen(a);
puts(a);
move(a,n);
printf("\n");
puts(a);
getch();
return 0;
}

[/CODE]

程序 是一门语言的艺术,讲究学练读写!
2006-05-16 01:21
快速回复:[求助]结构体问题
数据加载中...
 
   



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

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