\\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)。对于第二个程序,我尝试自己做(intput是2 1 /输出是3),结果是假的。
每个人都帮助我。我很困惑。谢谢:]
答案 0 :(得分:1)
这两个程序都是错误的,你得到了未定义的行为:
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();
如果您从一开始就正确地格式化了代码,那么您可能会自己发现问题。