高分悬赏:编程,C语言

2.一个班级有5个学生,共学习4门课。要求编写程序完成下面的三个功能。(1)求出第3门功课的平均分;(2)找出有两门以上功课不及格的学生,输出他们的学号和全部课程成绩及平... 2. 一个班级有5个学生,共学习4门课。要求编写程序完成下面的三个功能。
(1) 求出第3门功课的平均分;
(2) 找出有两门以上功课不及格的学生,输出他们的学号和全部课程成绩及平均分。
(3) 找出平均成绩在85分以上或者全部课程成绩在80分以上的学生。
提示:可以用二维数组或结构体数组实现之
struct student
{ float score1;
float score2;
float score3;
float score4;
} str[5];
由于问题解决,第1个来的jia fen
展开
 我来答
萌哒牛
2007-09-25 · TA获得超过1910个赞
知道小有建树答主
回答量:1100
采纳率:0%
帮助的人:156万
展开全部
解:用二维数组源程序如下:
main()/*处理学生成绩*/
{
int i,j,*pnum,num[5];
float score[5][4],aver[5],*psco,*pave;
char course [5][10],*pcou;
printf("请按行输入4门课程的名称:\n");
pcou=course[0];
for (i=0;i<4;i++)
scanf("%s",pcou+10*i);
printf("请按下面格式输入5个学生的学号和各科成绩:\n");
printf("学号");
for (i=0;i<4;i++)
printf(",%s",pcou+10*i);
printf("\n");
psco=&score[0][0];
pnum=&num[0];
for (i=0;i<5;i++)
{
scanf("%d",pnum+i);
for (j=0;j<4;j++)
scanf(",%f",psco+5*i+j);
}
pave=&aver[0];
printf("\n");/*空行*/
printf("\n");
avsco(psco,pave);
avcour1(pcou,psco);
printf("\n");/*空行*/
printf("\n");
fali2(pcou,pnum,psco,pave);
printf("\n");/*空行*/
printf("\n");
good(pcou,pnum,psco,pave);
}
avsco(psco,pave);/*求每个学生的平均成绩*/
float *pave,*psco;
{int i,j;
float sum,average;
for (i=0;i<5;i++)
{
sum=0.0;
for (j=0;j<4;j++)
sum=sum+(*(psco+4*i+j));/*累计每个学生的各科成绩*/
average=sum/4;/*计算平均成绩*/
*(pave+i)=average;
}
}
avcour1(pcou,psco)/*求第三门课程的平均成绩*/
char *pcou;
float *psco;
{
int i;
float sum,average1;
sum=0.0;
for (i=0;i<5;i++)
sum=sum+(*(psco+4*i));/*累计每个学生的得分*/
average1=sum/5;/*计算平均成绩*/
printf("第一门课程%s的平均成绩为%5.2f.\n",pcou,average1);
}
fali2(pcou,pnum,psco,pave)/*找两门以上课程不及格的学生*/
char *pcou;
int *pnum;
float *psco,*pave;
{
int i,j,k,label;
printf("两门以上课程不及格的学生\n");
printf(" 学号 ");
for (i=0;i<5;i++)
printf(" %-8s",pcou+10*i);
printf(" 平均分\n");
for (i=0;i<5;i++)
{
label=0;
for (j=0;j<4;j++)
if (*(psco+4*i+j)<60.0) label++;
if (label>=2)
{
printf("%-8d",*(pnum+i));
for (k=0;k<4;k++)
printf(" %-8.2f",*(psco+4*i+k));
printf(" %-8.2f\n",*(pave+i));

}
}
}
good(pcou,pnum,psco,pave)/*找成绩优秀(平均成绩在85分以上或者全部课程成绩在80分以上的学生)*/
char *pcou;
int *pnum;
float *psco,*pave;
{
int i,j,k,label;
printf("成绩优秀学生\n");
printf(" 学号 ");
for (i=0;i<4;i++)
printf(" %-8s",pcou+10*i);
printf(" 平均分\n ");
for (i=0;i<5;i++)
{
label=0;
for (j=0;j<4;j++)
if (*(psco+4*i+j)>=80.0) label++;
if (label>=4)||(*(pave+i)>=85))
{
printf("%-8d",*(pnum+i));
for (k=0;k<4;k++)
printf(" %-8.2f",*(psco+4*i+k));
printf( " %-8.2f\n",*(pave+i));
}
}
}
创作者rzWi7xU3QK
2020-04-19 · TA获得超过3705个赞
知道大有可为答主
回答量:3090
采纳率:34%
帮助的人:414万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include
<malloc.h>
typedef
struct
{
int
sno;
char
sname[20];
int
math;
int
chinese;
int
chengji;
int
avenge;
}student;
typedef
struct
{
student
stu[100];
int
length;
}seqstu;
seqstu
*chushihua()
{
seqstu
*xuesheng;
xuesheng=(seqstu*)malloc(sizeof(seqstu));
xuesheng->length=0;
return
xuesheng;
}
int
length(seqstu
*xuesheng)
{
return(xuesheng->length);
}
int
search(seqstu
*xuesheng,int
sno)
{
int
i=0;
while(i<xuesheng->length&&xuesheng->stu[i].sno!=sno)
i++;
if(i>=xuesheng->length)
{
return
0;
}
else
{
return
(i+1);
}
}
int
input(seqstu
*xuesheng,int
i,student
s)
{
int
j;
if(!xuesheng)
{
printf("表存!\n");
return
(-2);
}
if(xuesheng->length>=100)
{
printf("表溢!\n");
return
(-1);
}
if(i<1||i>xuesheng->length+1)
{
printf("该位置插入!\n");
return
0;
}
for(j=xuesheng->length+1;j>i-1;j--)
{
xuesheng->stu[j+1]=xuesheng->stu[j];
}
xuesheng->stu[i-1]=s;
xuesheng->length++;
return
1;
}
int
delete_seqstu(seqstu
*xuesheng,int
i)
{
int
j;
if(!xuesheng)
{
printf("表存\n");
return
(-1);
}
if(i<1||i>xuesheng->length)
{
printf("删除位置合!\n");
return
0;
}
for(j=i;j<xuesheng->length;j++)
{
xuesheng->stu[j-1]=xuesheng->stu[j];
}
printf("删除功!\n");
xuesheng->length--;
return
1;
}
int
display(seqstu
*xuesheng)
{
int
length;
int
i=0;
length=xuesheng->length;
for(i=0;i<length;i++)
{
printf("号:%d\n",xuesheng->stu[i].sno);
printf("姓名:%s\n",xuesheng->stu[i].sname);
printf("语文绩:%d\n",xuesheng->stu[i].chinese);
printf("数绩%d\n",xuesheng->stu[i].math);
printf("总:%d\n",xuesheng->stu[i].chengji);
printf("平均:%d\n",xuesheng->stu[i].avenge);
}
return
1;
}
int
displayone(seqstu
*xuesheng,int
i)
{
if(i==0)
{
printf("该!");
return
0;
}
else
{
printf("号:%d\n",xuesheng->stu[i-1].sno);
printf("姓名:%s\n",xuesheng->stu[i-1].sname);
printf("语文绩:%d\n",xuesheng->stu[i-1].chinese);
printf("数绩%d\n",xuesheng->stu[i-1].math);
printf("总:%d\n",xuesheng->stu[i-1].chengji);
printf("平均:%d\n",xuesheng->stu[i-1].avenge);
return
1;
}
}
int
paixu(seqstu
*xuesheng)
{
int
length;
int
i,j;
student
temp;
length=xuesheng->length;
for(i=0;i<length-1;i++)
for(j=0;j<length-1-i;j++)
{
if(xuesheng->stu[i].avenge<xuesheng->stu[i].avenge)
{
temp=xuesheng->stu[i];
xuesheng->stu[i]=xuesheng->stu[i+1];
xuesheng->stu[i+1]=xuesheng->stu[i];
}
}
return
1;
}
void
main()
{
seqstu
*s;
s=chushihua();
student
stu;
int
i=0;
int
number;
char
flag='y';
char
next='y';
while(1)
{
printf("1.输入信息:\n");
printf("2.输信息:\n");
printf("3.排序:\n");
printf("4.删除记录:\n");
printf("5.增加信息:\n");
printf("6.显示信息:\n");
printf("7.退系统:\n");
scanf("%d",&i);
switch(i)
{
case
1:
while(flag=='y')
{
int
j=1;
printf("请输入号:\n");
scanf("%d",&stu.sno);
printf("请输入姓名:\n");
fflush(stdin);
scanf("%s",stu.sname);
printf("请输入语文绩:\n");
scanf("%d",&stu.chinese);
printf("请输入数绩:\n");
scanf("%d",&stu.math);
stu.chengji=stu.math+stu.chinese;
stu.avenge=stu.chengji/2;
input(s,j,stu);
j++;
fflush(stdin);
printf("否继续【y/n】");
scanf("%c",&flag);
}
break;
case
2:
display(s);
break;
case
3:
paixu(s);
printf("排序绩单:\n");
display(s);
break;
case
4:
printf("请输入要删除记录号:\n");
scanf("%d",&number);
delete_seqstu(s,search(s,number));
break;
case
5:
while(next=='y')
{
int
k;
k=length(s)+1;
printf("请输入号:\n");
scanf("%d",&stu.sno);
printf("请输入姓名:\n");
fflush(stdin);
scanf("%s",stu.sname);
printf("请输入语文绩:\n");
scanf("%d",&stu.chinese);
printf("请输入数绩:\n");
scanf("%d",&stu.math);
stu.chengji=stu.math+stu.chinese;
stu.avenge=stu.chengji/2;
input(s,k,stu);
fflush(stdin);
printf("否继续【y/n】");
scanf("%c",&next);
}
break;
case
6:
int
y;
printf("请输入要查找号:\n");
scanf("%d",&y);
displayone(s,search(s,y));
break;
case
7:
exit(0);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式