gpt4 book ai didi

c - 相同的程序相同的编译器,但我在 c 中得到了不同的输出

转载 作者:行者123 更新时间:2023-11-30 19:13:24 27 4
gpt4 key购买 nike

\\First program
#include<stdio.h>
int main()
{
int array[30],n,c,d,position,swap;
clrscr();
printf("Enter the legth of array\n");
scanf("%d",&n);
printf("Enter element in array\n");
for(c=0;c<n;c++)
{ scanf("%d",&array[c]); }
for(c=0;c<(n-1);c++)
{
position = c;
for(d=c+1;d<n;d++)
{
if(array[position] > array[d])
position = d;
}
if(position != c)
{ swap = array[c];
array[c]= array[position];
array[position] = swap;
}
}
printf("Sorted list\n");
for(c=0;c<n;c++);
{printf("%d\n",array[c]);}
getch();
}


\\Second program
#include<stdio.h>
#include<conio.h>
int main()
{
int array[30],n,c,d,position,swap;
clrscr();
printf("Enter the legth of array\n");
scanf("%d",&n);
printf("Enter element in array\n");
for(c=0;c<n;c++)
{ scanf("%d",&array[c]); }
for(c=0;c<(n-1);c++)
{
position = c;
for(d=c+1;d<n;d++)
{
if(array[position] > array[d])
position = d;
}
if(position != c)
{ swap = array[c];
array[c]= array[position];
array[position] = swap;
}
}
printf("Sorted list\n");
for(c=0;c<n;c++);
{printf("%d\n",array[c]);}
getch();
return 0;
}

这两个程序是选择排序的程序。我认为第一个程序和第二个程序几乎相同,但输出不一样。我使用turbo c来运行这两个程序

在第一个程序中,我从互联网复制,结果为真(输入为 2 1/输出为 1 2)。对于第二个程序,我尝试自己做(输入是 2 1/输出是 3),结果是 false。

大家请帮助我。我很困惑。谢谢:]

最佳答案

两个程序都是错误的,你会得到未定义的行为:

for(c=0;c<n;c++);  // << the ; should not be here
// now c contains 2
// and you print array[2] once
// and as array[2] hasn't bee initialized
// printf will print a more or less random value

{printf("%d\n",array[c]);}
getch();

更正(且格式正确)的版本

for (c = 0; c < n;c++)
{
printf("%d\n",array[c]);}
}
getch();

如果您从一开始就正确设置了代码格式,您可能会自己发现问题。

关于c - 相同的程序相同的编译器,但我在 c 中得到了不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35606776/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com