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

C语言编程 歌手打分系统 高手进

发布网友 发布时间:2022-04-26 03:28

我来回答

1个回答

热心网友 时间:2022-06-20 12:28

全力倾注打造:

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

typedef struct _singer {
double score;
struct _singer* next;
} *node, singer;

node insert(node* head, node p, double score)
{
node tmp;
tmp = (node)malloc(sizeof(singer));
tmp->score = score;
tmp->next = p ? p->next : *head;
return (p ? p->next : *head) = tmp;
}

node create(double* beg, double* end)
{
node head, t;
head = t = NULL;
while(beg != end)
t = insert(&head, t, *beg++);
return head;
}

void remove(node* head, node p)
{
node r = *head;
if(p == *head) {
*head = r->next;
} else {
while(r->next != p) r = r->next;
r->next = p->next;
r = p;
}
free(r);
}

void show(node head)
{
while(head) {
printf("%.2f ", head->score);
head = head->next;
}
putchar('\n');
}

node sort(node head, int n)
{
int i, mid;
node l, r, t, v, p, *pp;
if(n < 2) return head;
mid = n/2;
t = l = r = head;
for(i = 0; i < mid; ++i)
t = r, r = r->next;
t->next = NULL;
l = sort(l, mid);
r = sort(r, n-mid);
v = p = NULL;
for(; l && r; (*pp) = (*pp)->next)
p = (v ? p->next : v) = *(l->score < r->score ? (pp = &l) : (pp = &r));
for(t = l ? l : r ? r : NULL; t; t = t->next)
p = (v ? p->next : v) = t;
return v;
}

#define FEN 1
#define PAI 0
void save(node head, int f)
{
FILE* fp;
node t = head;
char* file = f ? "D:\\aaa.txt" : "D:\\bbb.txt";
fp = fopen(file, "w");
while(t) {
fprintf(fp, "%.2f ", t->score);
t = t->next;
}
fclose(fp);
show(head);
printf("%s已保存!\n", f ? "分数" : "排名");
}

node input()
{
double s;
node head, t;
char c;
head = t = NULL;
printf("请输入歌手的分数(数量无*):");
while(scanf("%lf", &s)) {
t = insert(&head, t, s);
if((c = getchar()) == '\n')
break;
else
ungetc(c, stdin);
}
puts("输入完毕!");
return head;
}

void ins(node* head)
{
int n;
double s;
node t = *head;
printf("现在的分数序列是:");
show(*head);
printf("请输入你要插入到的位置(从1开始):");
scanf("%d", &n);
printf("请输入你要插入的分数:");
scanf("%lf", &s);
if(n == 1) t = NULL;
if(n >= 2) t = *head;
while(n-- > 2) t = t->next;
insert(head, t, s);
puts("插入完毕!");
}

void del(node* head)
{
int n;
node t = *head;
printf("现在的分数序列是:");
show(*head);
printf("请输入你要删除的分数所在的位置(从1开始):");
scanf("%d", &n);
while(--n) t = t->next;
remove(head, t);
puts("删除完毕!");
}

void pai(node* head)
{
int n;
node t = *head;
for(n = 0; t; ++n) t = t->next;
*head = sort(*head, n);
puts("排名完毕!");
}

int menu()
{
int n;
puts("* 1.输入歌手成绩 *");
puts("* 2.插入新歌手 *");
puts("* 3.删除退赛歌手 *");
puts("* 4.歌手成绩排名 *");
puts("* 5.输出歌手分数 *");
puts("* 6.输出歌手排名 *");
puts("* 7.退出系统 *");
scanf("%d", &n);
return n;
}

int main()
{
int done = 0;
node head;
while(!done)
switch (menu()) {
case 1: head = input(); break;
case 2: ins(&head); break;
case 3: del(&head); break;
case 4: pai(&head); break;
case 5: save(head, FEN); break;
case 6: save(head, PAI); break;
case 7: done = 1;
}
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
江西服装学院究竟怎么样 江西服装学院怎样 江西服装学院怎么样啊 服装学校师资哪里比较好 江西服装学院怎么样呢 报案警察如何处理弃婴法律上如何认定 公安机关如何处理弃婴 光宗耀祖名词解释光宗耀祖的解释是什么 呼吸37度时光能量适合什么肤质 2012年1月24日(初二)从武汉天河机场到当阳,不知道是坐火车、汽车,在武... 微针美容有副作用吗? C语言作业,裁判评分系统 微针之后几天怎么保养 C语言程序设计:裁判评分系统.求源?或者给一个类似的,要求在补充里,财富值我还可以加。急需! 利用C语言开发一个“比赛评分系统”。 谁能给我讲下微针美容的具体操作!!! 运用C语言开发一个“比赛评分系统”。评委打分原则:满分10分,评委打分后,去掉一个最高分和一个最低分, 荣耀play4T Pro的oled屏很伤眼吗?有什么方法怎么解决这个问题? 微针注意事项有哪些? c语言程序设计 歌手评分统计系统的设计与实现 做完微针后怎么办 C语言程序设计:歌唱比赛评分系统设计 微针术后注意事项有哪些? c语言编程:本课题模拟一个简单的比赛评分系统,选手从1号开始连续编号,选手得分分为专业素质得分和综 微针怎样去毛孔和黑头 今天第一次做了微针 c语言程序设计 裁判打分系统 微针在家自已怎么使用?微针只能和冻干粉在一起用吗? C语言程序设计裁判打分系统 微针是使用 用c语言制作一个简易评分系统,求大神解决。 C语言如何编写动态评分系统程序 C语言程序设计题目:比赛记分系统 二级C语言程序设计题。怎么评分? 按键手机怎么输入http:// 按键的手机怎么解锁啊 按键手机怎么解锁密码 老式按键手机怎么开机 按键手机怎么加声音 按键手机如何设置输入法 如何使用DOS命令查看网络连接状况? 用什么DOS命令查外网ip 老式按键手机怎么修改时间? DOS 命令下查看所有局域网IP地址 按键手机不用开机键怎么开机 查看网络实时连接的dos命令? 运行DOS的什么命令能查到和自己电脑连接的IP 按键手机怎么取消飞行模式? 如何利用dos命令查看ip地址 该如何安全共享项目的机密资料和文件呢? 什么是文件的共享,保密和保护?