【问题标题】:How to fix a bug in my homework solution in C++?如何在 C++ 中修复我的作业解决方案中的错误?
【发布时间】:2017-06-06 13:49:08
【问题描述】:

我需要编写一个程序,读取 n 个甲级足球队的统计数据并打印出属于乙级的球队名称。

如果一支球队在比赛 m 周后得分低于 k 分,并且 m 介于 1 和 150 之间,则该球队将落入 B 联赛。每支球队获胜时获得 3 分,平局获得 1 分,输掉时获得 0 分。

输入规范:在第一行,你会得到队数 0

数字 2 代表获胜,数字 1 代表平局,数字 0 代表失败。

输出规格:

Sample Input I
4 19
Team_A 1 1 1 1 1 1 1 1 1 0 1 1 1 0 2 1 0 ;

Team_B 0 1 0 2 2 1 1 0 1 1 0 2 0 1 0 0 2 ;

Team_C 0 0 1 0 2 2 2 1 1 1 1 1 0 0 2 1 2 ;

Team_D 0 1 0 1 2 1 2 1 0 0 0 2 2 2 0 0 0 ;

Sample Output I

Team_A 16

Team_B 18

这是我想出来的代码,但是输出不对,不知道为什么,

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

int main()
 {
  int n,points,sum=0,i,value;
  char name[15];
  char p;
  scanf("%d %d",&n,&points);
  for(i=1;i<=n;i++)
  {
    scanf("%s",&name);

   do
  {

    scanf("%c ",&p);
    if(p!=';')
    {
        value=p-48;
        sum=sum+value;
    }


   }while(p!=';');

    if(sum<=points)
      printf("%s %d",name,sum);
    }
    return 0;
     }

【问题讨论】:

  • 请更正您的标题和缩进。
  • 输出规范:显示球队名称和他们的积分属于联赛B。
  • 然后精确定义您期望的输出、您得到的输出以及您认为可能存在的问题。让这个问题在未来可以使其他人受益,而不仅仅是您。这是问答,不是帮助台!
  • 欢迎来到 Stack Overflow!听起来您可能需要学习如何使用调试器来逐步执行代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs
  • scanf 函数是邪恶的。更喜欢使用cin,或者如果必须使用fscanf(stdin

标签: c++


【解决方案1】:

您可以通过在程序中填充输出语句来查找问题。
如果你在scanf("%c ",&amp;p);之后添加一个输出语句来显示p的值,你会发现p的第一个值是一个空格字符,这会破坏你的计算。
同样的,如果你跟踪value的值,你会发现你忘记为每个团队将这个变量初始化为零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2023-03-22
    • 2023-01-30
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多