我试图交换两个初始化字符串的数组元素(参见下面的代码),我想我知道怎么做,但我尝试的方式似乎并没有起作用。我们不允许使用" swap"我在许多其他论坛上看到的问题与我的问题类似。因此,我使用了一个临时索引变量来交换它们,但这似乎并没有起作用。不知道如何解决它并使其工作,所以我的问题是我该怎么做。
我对编程很陌生,所以答案对我来说可能不那么明显。我已经盯着这一段时间而仍然无法看到它,我也试过询问reddit,但他们并没有给我一个非常简洁或有帮助的答案。如果你可以帮助我,为什么它不会交换那些很棒的元素,如果你看到任何其他的错误或改进,我可以让我知道,非常感谢您的反馈,谢谢!
代码:
#include <iostream>
using namespace std;
void printArray(string names[]) {
for (int i = 0; i < 7; i++) {
cout << names[i] << " ";
}
}
int main() {
int x = 0, a, b;
string answer, name1, name2;
string index;
string names[7] = {"John", "Dave", "Jim", "Amanda", "Kelsey", "Don", "Jennifer"};
printArray(names);
while (x < 1) {
cout << endl << "Do you want to swap students? " << endl;
cin >> answer;
if (answer == "Yes" || answer == "yes") {
cout << "Who would you like to swap?" << endl;
cin >> name1;
for(a = 0; a < 7; a++) {
if (names[a] == name1) {
cout << "Yes, " << name1 << " is in the line." << endl;
}
}
cout << "Who would you like to swap " << name1 << " for?" << endl;
cin >> name2;
for(b = 0; b < 7; b++) {
if (names[b] == name2) {
cout << "Yes, " << name2 << " is in the line!!" << endl;
index = names[a];
names[a] = names[b];
names[b] = index;
printArray(names);
}
}
} else {
cout << endl << "Thanks, please behave now, students!" << endl;
x++;
}
}
return 0;
}
更多背景信息:
按顺序打印当前的类阵容(即阵列的当前内容)。 向用户提示是否要交换2名学生。 如果他们说是,请继续执行第3步。 询问用户要交换的两个学生的姓名。 如果两个学生都在阵列中,则在阵列中交换他们的位置。如果学生不在班级中,请在控制台上打印错误消息,例如&#34;对不起,您必须挑选2名在线的学生!&#34;。 无论步骤4的结果如何,返回步骤1。
答案 0 :(得分:2)
在搜索name1
时,循环会一直运行到7,无论它是否被发现都与您的交换任务混淆:
index = names[a]; //a=7
names[a] = names[b]; //a=7
names[b] = index;.
使用break
:
if (names[a] == name1) {
cout << "Yes, " << name1 << " is in the line." << endl;
break;
}
答案 1 :(得分:0)
在进行交换时,a的值始终为7!所以它不起作用。