问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...编程,输入N个学生的成绩,对成绩进行排序,并统计及格和不及格率_百...

发布网友 发布时间:2024-10-20 18:18

我来回答

4个回答

热心网友 时间:2024-12-01 01:15

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define N 10

struct Student
{
float score;
struct Student *next;
};

//创建单向键表,返回链表表头head
struct Student *CreatLink(struct Student *head ,int n)
{
int i;
struct Student *p1,*p2;
head=p1=(struct Student *)malloc(sizeof(struct Student));
if(p1 == NULL)
{
printf("Not enough memory to allocate buffer\n");
system("PAUSE");
exit(1); /* terminate program if out of memory */
}
scanf("%f",&(p1->score));
p1->next=NULL;
for(i=2;i<=n;i++)
{
p2=p1;
p1=(struct Student *)malloc(sizeof(struct Student));
if(p1 == NULL)
{
printf("Not enough memory to allocate buffer\n");
system("PAUSE");
exit(1); /* terminate program if out of memory */
}
scanf("%f",&(p1->score));
p1->next=NULL;//最近产生的节点下一节点指向空
p2->next=p1;
}
return head;
}

//显示循环链表的成员
void DisplayLink(struct Student *head)
{
struct Student *p;
p=head;
do
{
printf("%.1f ", p->score);
p=p->next;
}while(p!=NULL); //p再次与head相等时,即所有成员都遍历完成
printf("\n\n");
}

//选择排序法排序链表
struct Student *SortLink(struct Student *head)
{
struct Student *head2=NULL,*p1,*p2,*p1lst,*p2lst,*q;
float MaxScore;

while(head!=NULL)
{
p2=p1=head;
MaxScore=head->score;
while(p1!=NULL)
{
if(p1->score > MaxScore)
{
MaxScore=p1->score;
p2lst=p1lst;
p2=p1;
}
p1lst=p1;
p1=p1->next;
}
if(p2==head)
{
head=head->next;
}
else
{
p2lst->next=p2->next;
}
if(head2==NULL)
{
head2=q=p2;
}
else
{
q->next=p2;
q=q->next;
}
}
q->next=NULL;
return head2;
}

//计算通过比率
float CalculatePassRatio(struct Student *head)
{
int i=0;
struct Student *p;
p=head;
while(p!=NULL)
{
if(p->score > 60) i++;
p=p->next;
}
return((float)i/N);
}

int main(int argc, char *argv[])
{
int n;
struct Student *head;
printf("Please input %d sorces:\n",N);
head=CreatLink(head,N);
printf("The sorces you input:\n");
DisplayLink(head);
head=SortLink(head);
printf("After Sort The sorces are follows:\n");
DisplayLink(head);
printf("The pass ratio is %.2f\%%\n\n",CalculatePassRatio(head)*100);
free(head);
system("PAUSE");
return 0;
}
虽然看起来长了点,但是你可以学习用链表是怎么做。我自己编的,也不是什么标准答案。

热心网友 时间:2024-12-01 01:19

这个 好像不难吧!是要源代码吗??

热心网友 时间:2024-12-01 01:15

您是知道思路不懂c啊?还是懂c不知道思路啊?

热心网友 时间:2024-12-01 01:20

用链表吧,排序涉及链表中节点位置的变化与更改,这个c的书上一般有。统计的话是对链表的遍历、和条件筛选,这个书上也有吧。编程还是自己多看看书什么的自己动手编的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航用电脑软件哪个好导航软件哪个最准确 我要地图网使用我要地图网轻松查询地图信息 装配行业MES系统四大车间管理活动介绍 王者荣耀S14狂铁怎么玩_王者荣耀S14狂铁出装铭文推荐 沅陵县有姓文的分布在那个地方, 汨罗一中在省排名 汨罗高中有哪些? 湖南省岳阳市汨罗有哪些高中 新生儿脊膜膨出后遗症 在深圳硬脊膜膨出手术后大小便失禁怎么办? ...的成绩求出平均成绩,并输出不及格人数和成绩,要求用数组。C语言_百 ... ...把不及格的学生成绩输出,并求几个学生的平均成绩。 中二的诗句 关于李白的山水古诗(描写山水的经典诗句) 李白古诗名句摘抄(李白最狂的12句诗词) 潜龙在渊攻略(率土之滨潜龙在渊组合详解介绍_潜龙在渊攻略(率土之滨... 怎么快速配将率土之滨配将攻略介绍 人如果处在天天不开心烦恼中身体会不会受影响 潞安矿业集团有限责任公司怎么样? 竖式怎么列851÷8=? 805÷8列竖式计算和验算? 宅家这么久以来,消耗最快的家居用品居然不是口罩、酒精,而是--BJ宅... 低消耗品都包括什么 如果不常时间笑,人会变老吗? 把电脑里的东西移到另一台电脑的方法! 怎么才能把电脑中的文件传到令一个电脑里(用路由器 两台电脑都连接路由器了,怎么传文件 什么是DTU柜? 敔山湾有哪些学校 江阴有汽车嘉年华吗? 光耀千古的唐诗给我们留下了许多流传千古的名句下表示李白和杜浦诗歌... 虚拟机安装win8一直停留在黑色界面 我在一楼,我想单独走下水道,请问走两条(厨房和厕所)还是一条?工程费用... 求助一个c语言的问题,为什么sgpa的数值是负的很大? 还有这段代码如何优... 用VMware Workstation生成的虚拟XP系统很卡 C语言 输入全班成绩 统计优良合格不及格人数,并输出总分平均分,用函数... 李白所有的诗词 烟雨江湖青蛾功怎么获得 内功青蛾功获取途径一览 ...机VMware Workstation 时老是不能最小化,最小化后容易死机,这是什么... 三九集团出来的台湾咔咔寿怎么样?谁吃过? 没有胆能不能吃咔咔寿? 咔咔寿是三九集团的吗 吃这个真的可以减肥吗 Kakashou 容易拉肚子的人能吃三九集团的咔咔寿吗?求大师专业回答。 苏轼写西湖的诗(两句),苏轼写山的诗(两句) 梦见和两个小男孩泪别 2021元旦第一天祝福语(璀璨的2023元旦,祝福永恒不变) MySQL两种简单设置方法mysql两种设置方法 mysql系列:innodb日志管理,带你高效快速理解 学日语的方法和技巧 洗衣机工作中为什么响了滴滴响?