【问题标题】:Why is the output a question mark in a box instead of a number?为什么输出是方框中的问号而不是数字?
【发布时间】:2019-02-19 12:42:15
【问题描述】:

我正在尝试编写一个程序,如果某个小狗主人的小狗与小狗主人的距离超出了一定距离,它会提醒用户。

具体如下:

  • 首先让用户输入主人的位置,即输入2个整数ab

  • 然后要求用户输入主人拥有的小狗数量。这是一个正整数n

  • 对于 n 只小狗中的每一只小狗i,程序要求用户输入小狗 i 的位置。这是2个整数xy,当然这两个都依赖于i。

  • 如果计算出小狗 i 与其主人的距离大于 10 个单位,则程序应通过打印 i 来通知用户。

  • 最后,程序应该告诉用户已经打印了号码的小狗的总数。这个数字由变量count 表示,一个正整数。

以下是一个例子

输入: (业主所在地) 2 1 (数量小狗)4 (定位小狗)(15 15),(14 -2),(1 3),(0 4)

输出: 小狗 1 和小狗 2 太远了 总共 2 只小狗离得太远了

当我尝试运行程序时,程序输出一个问号而不是i's。请问我做错了什么?

#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main() {
    string puppies;

    int a,b;
    cin>>a>>b;

    int n;
    cin>>n;

    int i,x,y,count=0;
    for (i=1;i<=n;i++){
      cin>>x>>y;
      int dist;
      dist=abs(a-x)+abs(b-y);
      if (dist>10){
        count++;
        puppies += i;
      }
    }
    if (count==1){
      cout<<"Puppy "<<puppies[0]<<" too far away"<<endl;
      cout<<"Total "<< count <<" puppy too far away";
    }
    if (count>1){
      int j;
      for (j=0;j<=(count-2);j++){
        cout<<"Puppy "<<puppies[j]<<" and"<<" ";
      }
      cout<<"Puppy "<<puppies[count-1]<<" too far away"<<endl;
      cout<<"Total "<< count <<" puppies too far away";
    }
    if (count==0){
      cout<<"No puppies too far away";
    }
}

这是复制的输出(与上面相同的情况)

小狗和小狗太远了 共有 2 只小狗离得太远按任意键继续。 . .

这是截图

enter image description here

【问题讨论】:

  • program outputs a question mark instead of the instead of the i's 它只输出一个问号?能否请您发布确切的输出。
  • @KamilCuk 已编辑。谢谢
  • @Kira 杰出。杰出。

标签: c++ loops output


【解决方案1】:

您正在尝试使用 std::string 作为数字的容器。当然,对于足够小的人来说,它可以做到这一点,但你可能想切换到std::vector&lt;int&gt;

您实际观察到的问题是puppies[0]char,在std::cout &lt;&lt; puppies[0] 中被解释为单个文本字符,在您的情况下是对应于不可打印字符的低代码点,因此你的shell显示的问号。您可以通过使用static_cast&lt;int&gt;(puppies[0]) 显式转换来修复它,但再次使用合适的容器来存储实际数字会更可取。

【讨论】:

【解决方案2】:
puppies += i;

如果您查看重载集,您会发现int 没有重载。但是,char 存在过载。所有整数类型都可以隐式转换为其他整数类型,在这种情况下,int 将转换为 char。附加到字符串的字符是由整数值表示的字符。什么整数值代表什么字符取决于您的系统使用的字符集。

您可能打算改为以文本表示形式附加整数。您可以将整数转换为字符串,例如使用std::to_string

也就是说,为此目的使用字符串似乎是倒退的,因为您似乎没有将其用作字符串,而更像是整数数组。因此,整数向量可能是更明智的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多