gpt4 book ai didi

c++ - 为什么输出的是方框里的问号而不是数字?

转载 作者:太空狗 更新时间:2023-10-29 23:48:43 27 4
gpt4 key购买 nike

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

具体来说,如下程序:

  • 首先要求用户输入主人所在的位置,即输入2个整数ab

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

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

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

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

下面是一个例子

Inputs: (Owner location) 2 1 (number puppies) 4 (location puppies) (15 15), (14 -2), (1 3), (0 4)

Outputs: Puppy 1 and Puppy 2 too far away Total 2 puppies too far away

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

#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";
}
}

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

Puppy and Puppy too far away Total 2 puppies too far awayPress any key to continue . . .

这是截图

enter image description here

最佳答案

您正在尝试使用 std::string作为数字的容器。它可以为足够小的人做到这一点,当然,但你可能想切换到 std::vector<int> .

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

关于c++ - 为什么输出的是方框里的问号而不是数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54766635/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com