这个C++程序为什么没有输出值

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char str5[100];int n,i,s1=0,s2=0,x,y,a[100];
const char*str1 = "East";
const char*str2 = "South";
const char*str3 = "West";
const char*str4 = "North";
cin.getline (str5,100);
cin >>n;
for (i=n;i>=1;i--)
cin>>a[i];
for (i=1;i<=n;i++)
if (a[i]==0) s1++;
else s2++;
x=s1-s2;y=x%4;
if(strcmp(str5,str1)==0) switch (y) {
case 0:cout <<str1;break;
case 1:cout <<str4;break;
case 2:cout <<str3;break;
case 3:cout <<str2;break;
}
if(strcmp(str5,str2)==0) switch (y) {
case 0:cout <<str2;break;
case 1:cout <<str1;break;
case 2:cout <<str4;break;
case 3:cout <<str3;break;
}
if(strcmp(str5,str3)==0) switch (y) {
case 0:cout <<str3;break;
case 1:cout <<str2;break;
case 2:cout <<str1;break;
case 3:cout <<str4;break;
}
if(strcmp(str5,str4)==0) switch (y) {
case 0:cout <<str4;break;
case 1:cout <<str3;break;
case 2:cout <<str2;break;
case 3:cout <<str1;break;
}
return 0;
}
目的是判断n次转向后的面对方向,0代表左转,1代表右转,刚开始面对的方向用英文输入

当向右转(值为1)的次数大于向左转(值为0)的次数时,y的值会为负,在Switch语句块中匹配不到负数值,所以不执行语句,直接退出,也就没有输出了。
可以在四个Switch语句块中添加-1、-2、-3的情况来解决。追问

但取余数时所有的负值都会变成正值吧

追答

不会,你可以在switch语句块里加一个default打印y的值看一下

温馨提示:答案为网友推荐,仅供参考
相似回答