编写程序,定义一个存储学生信息的结构类型struct Student

学生信息包括学号,姓名,3门成绩,平均成绩等。还定义了三个函数。我编的程序没有错误,但是运行的时候就不对。#include<stdio.h>structStudent{i... 学生信息包括学号,姓名,3门成绩,平均成绩等。还定义了三个函数。我编的程序没有错误,但是运行的时候就不对。
#include <stdio.h>
struct Student
{
int ID;
char Name[20];
double Score[3];
double Average;
};
void Input(struct Student *pa,int n)
{
int i,j;
double sum=0;
do
{
printf("please input the number of students:");
scanf("%d",&n);
}while (n<=0 || n>10);
printf("please input student's ID,name and score:\n");
for (i=0;i<n;i++)
{
scanf("%d%s",&pa[i].ID,&pa[i].Name);
for (j=0;j<3;j++)
{
scanf("%lf",&pa[i].Score[j]);
sum+=pa[i].Score[j];
}
pa[i].Average=sum/3;
sum=0;
}
}
void Sort(struct Student *pa,int n)
{
int i,k,index;
double t;
for (i=0;i<n-1;i++)
{
index=i;
for (k=i+1;k<n;k++)
{
if (pa[k].Average<pa[index].Average)
index=k;
if (index!=i)
{
t=pa[index].Average;
pa[index].Average=pa[i].Average;
pa[i].Average=t;
}
}
}
}
void Output( const struct Student *pa,int n)
{
int i,j;
for (i=0;i<n;i++)
{
printf("学号=%4d,姓名=%-8s,成绩:",pa[i].ID,pa[i].Name);
for (j=0;j<3;j++)
printf("%5.2f",pa[i].Score[j]);
printf("平均成绩=%5.2f\n",pa[i].Average);
}
}
int main()
{
struct Student st[10];
int i,j,m=0;
int num;
Input(st,num);
for (i=0;i<num;i++)
{
for (j=0;j<3;j++)
{
if (st[i].Score[j]<60)
{
printf("%4d%-8s%d不及格!\n",st[i].ID,st[i].Name,j);
m++;
}
}
if (!m)
printf("全部学生都及格。\n");
}
Sort(st,num);
Output(st,num);
return 0;
}
展开
 我来答
laobaitu0322
2014-12-30 · TA获得超过744个赞
知道小有建树答主
回答量:900
采纳率:33%
帮助的人:636万
展开全部
Sort函数排序有问题,你只对平均分排序。应该是整个结构体交换顺序
追问
对,这个是一个问题,还有一个更大的问题
追答
main函数里num没有赋值,你要传址进Input函数
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
秒懂百科
2021-04-07 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

struct:一种构造数据类型

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式