-4
这是我的代码。对于输入:开关盒可能不触发
A 1
它应该输出2,但它打印1由于某种原因,我不知道,这里就是问题所在。
我需要反转值L次,更改后的值取决于焦炭T的
倒霉,它总是打印1.
#include <stdio.h>
#include <ctype.h>
int main(void) {
int N, aa, bb;
int k1 = 1, k2 = 0, k3 = 0, k4 = 0, k5 = 0;
scanf("%d", &N);
char *T = new char[N];
int *L = new int[N];
for (int length = 0; length < N; length++) {
scanf("%c", &T[length]);
scanf("%d", &L[length]);
}
for (int i = 0; i < N; i++) {
switch (toupper(T[i])) {
case 'A':
for (int j = 0; j < L[i]; j++) {
aa = k1;
bb = k2;
k2 = aa;
k1 = bb;
}
break;
case 'B':
for (int j = 0; j < L[i]; j++) {
aa = k1;
bb = k3;
k3 = aa;
k1 = bb;
}
break;
case 'C':
for (int j = 0; j < L[i]; j++) {
aa = k1;
bb = k4;
k4 = aa;
k1 = bb;
}
break;
case 'D':
for (int j = 0; j < L[i]; j++) {
aa = k1;
bb = k5;
k5 = aa;
k1 = bb;
}
break;
case 'E':
for (int j = 0; j < L[i]; j++) {
aa = k2;
bb = k3;
k3 = aa;
k2 = bb;
}
break;
case 'F':
for (int j = 0; j < L[i]; j++) {
aa = k2;
bb = k4;
k4 = aa;
k2 = bb;
}
break;
case 'G':
for (int j = 0; j < L[i]; j++) {
aa = k2;
bb = k5;
k5 = aa;
k2 = bb;
}
break;
case 'H':
for (int j = 0; j < L[i]; j++) {
aa = k3;
bb = k4;
k4 = aa;
k3 = bb;
}
break;
case 'I':
for (int j = 0; j < L[i]; j++) {
aa = k3;
bb = k5;
k5 = aa;
k3 = bb;
}
break;
case 'J':
for (int j = 0; j < L[i]; j++) {
aa = k4;
bb = k5;
k5 = aa;
k4 = bb;
}
break;
}
}
if (k1 == 1)
printf("1");
else if (k2 == 1)
printf("2");
else if (k3 == 1)
printf("3");
else if (k4 == 1)
printf("4");
else
printf("5");
return 0;
}
这些变量想成为一个数组......你不需要开关太多:) – Rakete1111
你真的想'k [4]'和'k [5] '。就像Rakete说的那样,**使用数组**。你也可以使用'std :: vector'而不是'new x []'来简化内存管理。 – tadman
使用调试器。 – mascoj