gpt4 book ai didi

c - 在 c 中为数组做 while

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:08 25 4
gpt4 key购买 nike

我的工作是生成随机数并在数组中排序,然后从大到小显示数字。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 40
int main()
{
int array[SIZE];
int inner, outter, temp, i;

srand((unsigned)time(NULL));
//do... while to assign array value
i=0;
do{
array[i] = (int)((rand()%101)+1);
i++;
}while(i<SIZE);

puts("Original array:");


for(outter=0; outter<SIZE-1;outter++){
printf("%d\t", array[outter]);
}

//bubble sort
for(outter=0; outter<SIZE-1;outter++){

for(inner=outter+1; inner<SIZE; inner++ ){

if(array[outter] > array[inner]){

temp = array[outter];
array[outter] = array[inner];
array[inner] = temp;
}
}
}
puts("\n");
puts("Sorted array:");

printf("i= %d\n",i);
printf("%d\n", array[39]);
for(outter=0; outter<SIZE;outter++){
printf("%d\t", array[outter]);
}

puts("\n");
for(outter=SIZE-1; outter>0;outter--){
printf("%d\t", array[outter]);
}
puts("\n");
// try using do while loop to display reverse number from biggest to smallest numbers
do{
printf("i= %d\n", i-1);
i--;
}while(i>-1);
}

当我使用 do while 显示反向数组编号时,我的代码崩溃了。但是,我显示用于循环数组的“i”值,它显示从 39 到 -1。我不知道为什么我的“i”值设置为 -1,因为我设置了“i>-1”。

最佳答案

TL;DR:将您的 printf 更改为:printf("i= %d\n", i); 或将 while 循环更改为 while(i > 0);。无论哪种方式,它都应该可以解决您的问题。

do while 循环执行大括号中的操作,然后检查条件。我不太理解你的问题,但在我看来它正在打印 -1 因为它先做,然后检查条件。此外,您在 printf 函数中使用了 i - 1(这可能是您最困惑的地方)。

编辑:要更加明确 while 循环,问题是您的条件是 (i > -1)。这意味着当您到达 0 时,您的代码将检查:0 是否大于 -1?。它将返回 true,然后继续打印 -1i = -1。然后它再次到达 while 条件,它看到 -1 不大于 -1,这是代码终止的时间。

关于c - 在 c 中为数组做 while,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42801363/

25 4 0
文章推荐: python - 如何从这种情况下用 python 删除 结构?