2016-02-24 59 views
-1
\\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來運行這兩個程序相同的程序相同的編譯器,但我有不同的輸出在c

在第一個程序,我從互聯網複製和結果是真實的(輸入是2 1 /輸出是1 2)。對於第二個程序,我嘗試自己做(輸入是2 1 /輸出是3),結果是錯誤的。

大家plz幫助我。我感到困惑。謝謝:]

+0

「幾乎相同」與「相同」不一樣 - 找到兩者之間的區別,您可能會發現不同輸出的原因。 –

+0

'#include '和'return 0;'是我用工具發現的唯一區別。 – MikeCAT

+0

聽起來像未定義的行爲。你可能有未被初始化的變量和/或你訪問你的數組越界。 –

回答

1

這兩個程序是錯誤的,你得到了一個未定義bahaviour:

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(); 

如果你正確地從一開始格式化你的代碼可能會自己發現問題。

相關問題