以下程序段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个数。