2017-02-03 32 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]

相关问题