C++ 谁能帮我理解这个c++;密码?
我向你解释这个项目的工作原理 步骤1:输入要运行循环的时间 步骤2:输入两个字符串s1和s2 输出:它将为您提供一个字符串s3,其中不包含字符串s2中的任何字符 问题:我无法理解for循环的工作原理,为什么hash的值是257,循环是如何工作的 代码如下所示C++ 谁能帮我理解这个c++;密码?,c++,for-loop,while-loop,C++,For Loop,While Loop,我向你解释这个项目的工作原理 步骤1:输入要运行循环的时间 步骤2:输入两个字符串s1和s2 输出:它将为您提供一个字符串s3,其中不包含字符串s2中的任何字符 问题:我无法理解for循环的工作原理,为什么hash的值是257,循环是如何工作的 代码如下所示 #include <iostream> using namespace std; #include<string.h> int main() { int t; cout<<"en
#include <iostream>
using namespace std;
#include<string.h>
int main()
{
int t;
cout<<"enter any no. to run the loop"<<endl;
cin>>t;
while(t--)
{
string s1,s2,s3;
int i,j,l1,l2;
cout<<"enter two strings s1 and s2"<<endl;
cin>>s1>>s2;
l1=s1.length( );
l2=s2.length( );
int hash[257];
for(i=0;i<257;i++)
{
hash[i]=0;
}
for(i=0;i<l2;i++)
{
hash[s2[i]]++;
}
for(i=0;i<l1;i++)
{
if(hash[s1[i]]==0)
s3=s3+s1[i];
}
cout<<s3<<endl;
}
return 0;
}
#包括
使用名称空间std;
#包括
int main()
{
int t;
cout代码计算s1
中出现的字母的直方图,并复制出现次数为零的s2
中的字母
任何char
类型(不限于[0256]
(!)的范围)都可能崩溃。此程序会找出第一个字符串中哪些字符不包含在第二个字符串中
程序的输入示例:
1
abcdefghijklmnopqrstuvwxyz
helloworld
示例输出(感谢@mch的纠正)
编辑:注意这当然是区分大小写的,因为字符a
和a
产生不同的整数值
以下是对该节目的一些评论:
1
abcdefghijklmnopqrstuvwxyz
helloworld
#包括
使用名称空间std;
#包括
int main(){
//按照用户所说的次数执行整个程序
int t;
库特;
而(t--){
字符串s1、s2、s3;
int i,j,l1,l2;
//读取字符串并获得它们各自的长度
couts1>>s2;
l1=s1.长度();
l2=s2.length();
//包含257个元素的数组
int散列[257];
//使用0初始化数组的所有元素
对于(i=0;i<257;i++){
散列[i]=0;
}
//计算第二个字符串中出现的字符数
//s2[i]是s2中位置i处的字符
//将此字符的哈希值增加1
对于(i=0;is1中不包含在s2中的字母字符串
对于(i=0;i cout上面有一条注释解释for循环
int-hash[257]
实际上可以是int-hash[256]
。一个字符中可以容纳256个不同的值(8位).在您的代码中有三个用于循环,您难以理解哪一个?对于值257
,代码似乎假定char
是无符号的(它实际上是实现定义的),并且系统标准字母表有256个字母(这使得选择257
有点奇怪,因为字符将被编号为0
到255
).你从哪里得到这段代码的?来源没有包含任何关于代码的解释吗?并以此作为一个教训,始终记录你的代码,并添加关于它做什么、为什么做什么、使用什么算法等的注释。先生,我想了解所有三个循环。旁注:cin>>s2
读取一个单词,而不是一行,因此,s2
是hello
,而不是hello World
。这可以通过查看输出来确认,其中包含r
和d
。@mch,感谢您的提示,我没有重复检查我的输出。