gpt4 book ai didi

c++ - 为什么此代码中存在段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 15:41:20 24 4
gpt4 key购买 nike

我想比较两个数字串,计算同一个数字出现的次数

#include <cstdlib>
#include <iostream>
using namespace std;
void function(string number1, string number2)
{
int taille = number1.size();
int tab[]={0,0,0,0,0,0,0,0,0,0};
int chiffre=0;

for (int i=0; i<taille;i++) {
for (int j=0;j<taille;j++){
if (number1[i]==number2[j])
{
cout << "chiffre " <<number1[i]<< endl;
chiffre = number1[i];
tab[chiffre]++;
}
}
}

for (int i=0; i<10;i++) {
if (tab[i]!=0)
cout << "index " << i<< " value "<< tab[i]<< endl;
}

}

int main(int argc, char *argv[])
{

string number1 = "5143436111";
string number2 = "4501234567";
function(number1,number2);
cout << "Press the enter key to continue ...";
cin.get();
return EXIT_SUCCESS;
}

带有 tab[chiffre]++ 的行;似乎使程序崩溃。请解释一下原因

最佳答案

你需要:

chiffre = number1[i]-'0';

还有,你有这个:

   int taille = number1.size();

但是如果 number1 和 number2 的大小不同呢?然后你的内部循环(例如 for (int j=0;j<taille;j++) 如果 number2 小于 number1,则可以从 number2 中索引出来,或者如果 number2 大于 number1,它就不会循环足够。

关于c++ - 为什么此代码中存在段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543378/

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