2017-02-03 59 views
0

當我在數組中輸入值1時,此代碼不會給出答案。例如,我已經採取不了。的元素爲5 然後我輸入它們爲2,3,1,6,4 然後輸出給出2作爲最小的數字和位置編號並不總是正確的 錯誤是什麼?程序使用數組打印最小數量的n個數字的位置

#include<stdio.h> 
int main() 
{ 
    int n,i,a[10],sum=0; 
    int small=0,pos=0; 
    printf("enter no of elements in array:"); 
    scanf("%d",&n); 
    for(i=0;i<n;i++) 
    { 
     printf("a[%d]=",i); 
     scanf("%d",&a[i]); 
    } 
    for(i=1;i<n;i++) 
    { 
     small=a[0]; 
     if(a[i] < small) 
     { 
      small=a[i]; 
      pos=i; 
     } 
    } 
    printf("smallest no:%d \n",small); 
    printf("position:%d",pos); 

} 
+1

行走代碼並記下每個步驟的值(或使用調試器)。 small = a [0]是做什麼的? –

+2

也許,也許,'small = a [0];'應該在循環之前。但也許,可能呢? – AntonH

回答

1

在每次迭代中,「小」變量被覆蓋爲[0]。只要將它的外循環:

#include<stdio.h> 

int main() 
{ 
    int n,i,a[10],sum=0; 
    int small=0,pos=0; 
    printf("enter no of elements in array:"); 
    scanf("%d",&n); 
    for(i=0;i<n;i++) 
    { 
     printf("a[%d]=",i); 
     scanf("%d",&a[i]); 
    } 
    small=a[0]; 
    for(i=1;i<n;i++) 
    { 
     if(a[i] < small) 
     { 
      small=a[i]; 
      pos=i; 
     } 
    } 
    printf("smallest no:%d \n",small); 
    printf("position:%d",pos); 

} 
0

你是不是太遠了 - 使用的初始化每次small=a[0];每當循環迭代所以只是循環 這裏您糾正代碼之前初始化small=a[0];

#include<stdio.h> 
    int main() 
    { 
     int n,i,a[10],sum=0; 
     int small=0,pos=0; 
     printf("enter no of elements in array:"); 
     scanf("%d",&n); 
     for(i=0;i<n;i++) 
     { 
      printf("a[%d]=",i); 
      scanf("%d",&a[i]); 
     } 
small=a[0]; 
     for(i=1;i<n;i++) 
     { 

      if(a[i] < small) 
      { 
       small=a[i]; 
       pos=i; 
      } 
     } 
     printf("smallest no:%d \n",small); 
     printf("position:%d",pos); 

    } 
0

小=一個[0]應該在循環之前。

0

您應該在for循環開始之前寫入small = a[0]

相關問題