c语言编程:保龄球问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 07:00:38
用c语言实现保龄球的计分程序。
保龄球:每一局共有10小格,每格可有两次投球机会.击倒的瓶数,即为其分数,满分为10分;定义设每格击球的数据结构为:
struct strike {int first:int second;struct strike*next;}
按要求完成程序:
1)编写函数creat(void)建立一个包含11格击球组成的单向链表,返回指向链表的指针;
2)编写函数setScore(struct strike *head)读取从键盘上连续录入的击球得分将得分存入链表并返回实际击球的格数:(注:如果每格第1次全击倒10瓶,将直接进入下1格;若不全击倒可以补击一次:在第10格第1次若是全击倒,将在第11格再击2球,若是补中全击倒则在11格再击1球:若补击仍然未全击倒,则没有第11格的击球机会;)
3)编写函数getScore(struct strike *head)计算出该局实际总得分;(注:每格计分规则为:每格若未满10分按实际分记;若1次全击倒,该格成绩累加后两击的成绩;若补击全击倒,则累加后一击成绩,最后再累加各格成绩。)
4)编写main()函数完成整个程序。

记分函数我不太懂所以没有写
  struct strike
  {
  int first;
  int second;
  struct strike *next;
  };
  struct strike *creat()
  {
  struct strike *head;
  struct strike *p;
  struct strike *last;
  int n=0;
  while(n++<11)
  {
  p=(struct strike*)malloc(sizeof(struct strike));
  if(head=NULL)
  head=p;
  else
  last->next=p;
  last=p;
  }
  return head;
  }
  void setScore(struct strike *head)
  {
  struct strike *p;
  p=head;
  int n=0;
  int num;
  int num2;
  while(n++<10)
  {
  printf("qing shuru %n ju de diyicichengji:",n+1);
  scanf("%d",&num);
  p->first=num;
  if(num==10)
  {
  p++;continue;
  }
  else
  {
  printf("qing shuru %n ju de diyierchengji fenshuxiaoyu%n:",n+1,10-num);
  scanf("%d",&num2);
  p->second=num