为什么我在输入后会得到随机数
Why do I get random numbers after the input?
我试图接受一些输入,并在字符串中找到某个字符的编号。当我试图接受实际字符串时,我总是得到一个奇怪的答案。为什么会发生这种情况?我正在使用cout来找出为什么我会得到如此奇怪的数字,这似乎是输入的问题。
注意——这是我试图解决Codeforces问题462 B.的方法。我试图在输入中找到某个字母的数字。我的朋友正在尝试一种冒泡排序方法。
输入:
6 4
YJSNPI
预期输出:
YJSNPI
4
实际输出:
YJSNPI
1699623981
代码:
#include <iostream>
#include <string>
#include <vector>
#include <istream>
using namespace std;
int main()
{
int n, k, counting;
cin >> n >>k;
char trash;
cin.get(trash);
vector<string> cards;
string theline, name;
cin >> theline;
cout << theline << "n";
for (int i = 0; i < n; i++){
name = theline[i];
cards.push_back(name);
}
for (int i = 0; i < n; i++){
if (cards[i] == cards[k-1]){
counting++;
}
}
int tmp = 0;
if (cards.size() != k){
tmp = k - counting;
}
counting *= k;
counting += tmp;
cout << counting;
return 0;
}
局部变量不会自动初始化为0
。如果在赋值之前尝试使用局部变量的值,则会得到未定义的行为。您正在递增counting
,但从未初始化过它。更改为:
int n, k, counting = 0;
问题是变量"计数"从未初始化-方便的链接
基本上,在用声明"计数"后,它会有一些来自内存的垃圾值
int counting;
然后,执行的第一个操作是
counting++;
并且垃圾值被保存。
修复:
更改
int counting;
至
int counting = 0;
注意:n和k不是有用的变量名。如果他们有真名,这会让理解代码变得容易得多,但哦,好吧。
此外:正如chris上面提到的,让编译器为您工作。有关好的编译器标志,请参阅下面的注释。不要忽视警告!
我真的不明白你在这里做什么。但我能看出你哪里错了。
int n,k,计数;
计数未初始化尝试
int n,k,计数=0;
我得到的答案是(1*4+4-1)=7,而不是你所期望的4。
如果k在范围内,此代码将始终导致计数=1。
for (int i = 0; i < n; i++){
if (cards[i] == cards[k-1]){
counting++;
}
}
https://ideone.com/7Hk3ix
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- 随机数输入425500
- 如何根据用户输入"weighted"随机数生成,使某些数字优先于其他数字?
- 将随机数插入到数组中,其中每个值都是通过 for 循环输入的
- 我正在尝试创建一个程序,该程序根据用户输入的最大值将随机数相乘
- 我的程序在运行时不会打印任何内容,输入几个随机数后它会工作(有很多错误)
- 为什么我在输入后会得到随机数
- 如何在1和用户输入的数字之间生成随机数?