pta第七章一维数组练习


以下程序段A和B的功能都是:将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的这n个数。

/* 程序段A */
# define MAXN 10
int i, high, low, n, temp;
int num[MAXN];

scanf("%d", &n);
for(i = 0; i < n; i++){
    scanf("%d", &num[i]);
}
需填空 
while
(num[high]>num[low])
{
    temp = num[high];
    num[high] = num[low];
    num[low] = temp;
    需填空
}
for(i = 0; i < n; i++) {
    printf("%d ", num[i]);
}
printf("\n");

请问一下这两行怎么填空

该回答引用ChatGPTᴼᴾᴱᴺᴬᴵ

请将程序段A中的while循环填空改为如下代码:

low = 0, high = n - 1;
while (high > low) {
temp = num[high];
num[high] = num[low];
num[low] = temp;
low++;
high--;
}

程序段B已经正确实现了该功能,无需填空。

补充如下:



# define MAXN 10
int i, high, low, n, temp;
int num[MAXN];
 
scanf("%d", &n);
for(i = 0; i < n; i++){
    scanf("%d", &num[i]);
}
low = 0,high = n - 1;
while (num[high]>num[low])
{
    temp = num[high];
    num[high] = num[low];
    num[low] = temp;
    low++;high--;
}
for(i = 0; i < n; i++) {
    printf("%d ", num[i]);
}
printf("\n");
  • 在第一个“需填空”的位置,应该填入:

high = n - 1; /* 数组最后一个元素的下标 /
low = 0; / 数组第一个元素的下标 */

这里将变量high初始化为数组的最后一个元素的下标,将变量low初始化为数组的第一个元素的下标。

  • 在第二个“需填空”的位置,应该填入:

high--;
low++;

这里将high减1,将low加1,实现交换数组元素的位置。

这段代码的完整功能是:输入n个整数,将它们存入一个数组中,将数组中的这n个数逆序存放,然后按照顺序输出数组中的这n个数。