057.运动会分数统计

举报
C语言与CPP编程 发表于 2022/05/01 00:05:02 2022/05/01
【摘要】 #include <stdio.h>#include <stdlib.h>#include <malloc.h>#define n 4#define m 3#define w 2 struct achievement //定义表示成绩的结构体{int schoolnumber;//学校编号char ...

  
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. #define n 4
  5. #define m 3
  6. #define w 2
  7. struct achievement //定义表示成绩的结构体
  8. {int schoolnumber;//学校编号
  9. char name[20]; //姓名
  10. int mark; //分数
  11. int result;};
  12. struct pro //表示项目的结构体
  13. {int tag;//项目编号
  14. struct achievement ach[5];
  15. int number;};
  16. struct Node
  17. {struct pro date;
  18. struct Node *next;};
  19. void ListInitiate(struct Node * *head) //初始化单链表
  20. {
  21. if((*head=(struct Node*)malloc(sizeof(struct Node)))==NULL) exit(1);
  22. (*head)->next=NULL;
  23. }
  24. void main()
  25. {
  26. int i,j,t;
  27. int x[n]={0};int y[n]={0};
  28. struct Node *head;
  29. struct Node *p;
  30. struct Node *q;
  31. ListInitiate(&head);
  32. p=head;
  33. for(i=0;i<m+w;i++) //输入成绩
  34. {
  35. j=i+1;
  36. printf("请输入第%d个项目的信息\n",j);
  37. p->date.number=j;
  38. printf("所取的名次数为:");
  39. scanf("%d",&p->date.tag);
  40. while(p->date.tag!=3&&p->date.tag!=5)
  41. {printf("输入有误,请重新输入!");
  42. printf("所取的名次数为:");
  43. scanf("%d",&p->date.tag);}
  44. t=1;
  45. while(t<=p->date.tag)
  46. {
  47. printf("第%d名的名字:",t);
  48. scanf("%s",&p->date.ach[t-1].name);
  49. printf("第%d名的学校:",t);
  50. scanf("%d",&p->date.ach[t-1].schoolnumber);
  51. printf("第%d名的分数:",t);
  52. scanf("%d",&p->date.ach[t-1].mark);
  53. p->date.ach[t-1].result=t;
  54. t++;
  55. }
  56. q=(struct Node*)malloc(sizeof(struct Node)); //生成新结点
  57. p->next=q;
  58. p=q;
  59. p->next=NULL;
  60. }
  61. for(i=0;i<n;i++) //产生成绩单
  62. {
  63. j=i+1;
  64. printf("学校%d成绩单\n",j);
  65. //t=1;
  66. p=head;
  67. do
  68. {
  69. t=1;
  70. while(t<=p->date.tag)
  71. {
  72. if(p->date.ach[t-1].schoolnumber==j)
  73. {
  74. printf("获奖项目:%d ",p->date.number);
  75. printf("名次:%d \n",p->date.ach[t-1].result);
  76. printf("获奖人姓名:%s ",p->date.ach[t-1].name);
  77. printf("所得分数:%d ",p->date.ach[t-1].mark);
  78. if(p->date.number<=m)
  79. x[i]=x[i]+p->date.ach[t-1].mark;
  80. else
  81. y[i]=y[i]+p->date.ach[t-1].mark;
  82. }
  83. t++;
  84. }
  85. p=p->next;
  86. }while(p!=NULL);
  87. printf("\n男子团体总分:%d ",x[i]);
  88. printf("女子团体总分:%d \n",y[i]);
  89. printf("\n团体总分:%d\n",x[i]+y[i]);
  90. }
  91. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124495103

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。