#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int n;
cin>>n;
int x=0;
while(n--)
{
char s[3];
cin>>s;
if(strcmp(s,"X++")==0||strcmp(s,"++X")==0)
x+=1;
else
x-=1;
}
cout<<x;
}
当我删除if语句中的strcmp行时,循环工作正常。
答案 0 :(得分:0)
如πάνταῥεῖ所述, s 的大小必须为4才能存储'\ 0'字符。否则:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
cin >> n;
int x = 0;
while(n--)
{
string s;
cin >> s;
if(s == "X++" || s == "++X")
x+=1;
else
x-=1;
}
cout << x;
return 0;
}
会将您的字符串存储在 s 中,并将'\ 0'放在 s 的范围之外。
当程序第二次进入循环时,你将无法编写它,因为每次都会得到“”(空字符串)。
要解决此问题,只需将 3 替换为 4 即可。
注意:如果你真的想使用C ++,我建议你使用std :: string。
body {
width: 900px;
margin: auto;
max-width: 900px;
min-width: 300px;
background-attachment: fixed;
background-size: cover;
background-image: url(images/seagull-sunset2.jpg);
}
#banner img {
width: 100%;
height: 200px;
max-width: 100%;
box-shadow: 2.5px 2.5px 5px 2.5px rgba(240,168,48,0.5);
}