我的任务是调试教授写的程序。我们必须在 putty 中完成所有这些工作,而且我是 bash shell 脚本的新手(阅读:我对函数和处理 C++ 程序一无所知)。
所以我编译了 untitled.cpp 文件,它使程序无标题。然后我使用 ./untitled 执行程序,使其运行。目前很好。程序显示“种子值?”我根据分配输入给定值。然后,由于程序结束,命令提示符回到untitled目录。我不确定下一步该做什么,因为这就是我所有的问题所在。
这是说明:
运行程序(单步),输入种子值3222011。调用shuffle()函数后,array[8]的值是多少?
免责声明:我不是在要求答案,只是如何找到它们。在我刚才提到的问题之后还有 7 个问题。
我的问题:
- 如何找到数组元素值?或者任何数据成员的值,真的吗?
- 后来它说“您可以通过键入 gdb 命令打印数组在 main() 函数中打印整个数组的内容。” 这不起作用。它仅在当前上下文中返回“无符号”数组。
- “步入”函数是什么意思,我该怎么做?
给定的程序是:
#include <cstdlib>
#include <iostream>
using std::cout;
using std::cin;
using std::flush;
const int ARRAYSIZE = 30;
void fill(int ar[], int size);
void shuffle(int ar[], int size);
int main(void)
{
int array[ARRAYSIZE] = {0}; // Clear out array
int seed;
cout << "Seed value? " << flush;
cin >> seed;
srand(seed);
fill(array, ARRAYSIZE);
shuffle(array, ARRAYSIZE);
return 0;
}
void fill(int b[], int size)
{
int index;
// Place random values at random locations in the array
for(int i = 0; i < 10 * size; i++)
{
index = rand() % size;
b[index] = rand();
}
}
void shuffle(int ar [], int size)
{
int* first, * second;
for(int j = 0; j < 5 * size; j++)
{
// Pick a random pair of positions to swap
first = ar + rand() % size;
second = ar + rand() % size;
// Swap
int temp = *first;
*first = *second;
*second = temp;
}
}