4个回答
展开全部
刚把代码写好,你问题居然结案了。。。。。。
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct stu//定义结构类型
{
int id;
char name[10];
int age;
char cName[30];
int score[4];
}STU;
int input(STU **stus);//输入,返回数组长度
void output(STU *stus,int len);//输出
void findBycName(STU *stus,int len);//通过班级名查找学生信息
void showAvg(STU *stus,int len);//显示4门功课平均分
void findMinAge(STU *stus,int len);// 查找年龄最小学生
int main()
{
int len;
STU *stus=NULL;
len=input(&stus);
output(stus,len);
findBycName(stus,len);
showAvg(stus,len);
findMinAge(stus,len);
return 0;
}
int input(STU **stus)//输入,返回数组长度
{
STU *stuSave=NULL;
int id,i,inx=0,len=1,sum;
printf("输入每个学生的学号、姓名、年龄、班级、4科成绩(学号输入-1结束输入)\n");
while(1)
{
sum=0;
printf("--学生学号:");
scanf("%d",&id);
if(id==-1)
break;
getchar();
if(!(*stus))
*stus=(STU *)malloc(sizeof(STU)*len);
else
{
len++;
stuSave=(STU *)realloc(*stus,sizeof(STU)*len);
if(stuSave)
*stus=stuSave;
else
{
printf("内存申请错误");
exit(0);
}
}
(*stus)[inx].id=id;
printf("--学生名字:");
scanf("%s",(*stus)[inx].name);
printf("--学生年龄:");
scanf("%d",&(*stus)[inx].age);
getchar();
printf("--班级名称:");
gets((*stus)[inx].cName);
printf("--4科成绩 :");
for(i=0;i<4;i++)
scanf("%d",&(*stus)[inx].score[i]),sum=sum+(*stus)[inx].score[i];
inx++;
printf("\n");
}
getchar();
return len;
}
void output(STU *stus,int len)//输出
{
int i,j;
printf("\n输入的数据:\n");
for(i=0;i<len;i++)
{
printf("学生编号:%d,姓名:%s,年龄:%d,班级:%s",stus[i].id,stus[i].name,stus[i].age,stus[i].cName);
for(j=0;j<4;j++)
printf(",学科%d:%d",j+1,stus[i].score[j]);
printf("\n");
}
}
void findBycName(STU *stus,int len)//通过班级名查找学生信息
{
int i,j;
char cName[30]={0};
printf("\n输入要查找的班级名称:");
gets(cName);
for(i=0;i<len;i++)
{
if(strcmp(stus[i].cName,cName)==0)
{
printf("学生编号:%d,姓名:%s,年龄:%d,班级:%s",stus[i].id,stus[i].name,stus[i].age,stus[i].cName);
for(j=0;j<4;j++)
printf(",学科%d:%d",j+1,stus[i].score[j]);
printf("\n");
}
}
}
void showAvg(STU *stus,int len)//显示4门功课平均分
{
int i,j,sum[4]={0};
printf("\n4门功课平均分:\n");
for(i=0;i<len;i++)
for(j=0;j<4;j++)
sum[j]=sum[j]+stus[i].score[j];
for(j=0;j<4;j++)
printf("%.2f ",(float)sum[j]/len);
printf("\n");
}
void findMinAge(STU *stus,int len)// 查找年龄最小学生
{
int i,j,minAge=99,iSave;
printf("\n年龄最小学生\n");
for(i=0;i<len;i++)
{
if(stus[i].age<minAge)
minAge=stus[i].age,iSave=i;
}
printf("学生编号:%d,姓名:%s,年龄:%d,班级:%s",stus[iSave].id,stus[iSave].name,stus[iSave].age,stus[iSave].cName);
for(j=0;j<4;j++)
printf(",学科%d:%d",j+1,stus[iSave].score[j]);
printf("\n");
}
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
呵呵,这个,你有点点懒呀
第一个给你个大体的东东:
这是一位同位的数据结构->
typedef struct tagT_Classmate{
int nNo;
char szName[64];
int nYear;
int Class;
int narScore[4];
int nTotal;
}T_Classmate;
一个班的同学:T_Classmate Class3[60]; //60一个班
然后,就是一个for用来输入数据。
一个for用来计算平均成绩并打印。
一个for用来查找最小年龄的人并打印。
这个不难,你一个一个功能完成,刚开始只完成一个小小的部分即可。
第一个给你个大体的东东:
这是一位同位的数据结构->
typedef struct tagT_Classmate{
int nNo;
char szName[64];
int nYear;
int Class;
int narScore[4];
int nTotal;
}T_Classmate;
一个班的同学:T_Classmate Class3[60]; //60一个班
然后,就是一个for用来输入数据。
一个for用来计算平均成绩并打印。
一个for用来查找最小年龄的人并打印。
这个不难,你一个一个功能完成,刚开始只完成一个小小的部分即可。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题呢,在你们外行人看来不懂很正常,在我们内行人看来也是一脸懵逼。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
OK ,我可以帮你。如何发给你?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询