程序使用数组打印最小数量的n个数字的位置

时间:2017-02-03 19:11:04

标签: c arrays data-structures

当我在数组中输入值1时,此代码不会给我答案。 因为我没有采取任何措施。元素为5 然后我输入2,3,1,6,4 然后输出给出2作为最小数字,位置编号并不总是正确的 错误是什么?

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

}

4 个答案:

答案 0 :(得分:1)

在每次迭代中,使用[0]覆盖

“small”变量。只需将其移出循环:

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

}

答案 1 :(得分: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);

    }

答案 2 :(得分:0)

small = a [0]应该在循环之前。

答案 3 :(得分:0)

你应该在for循环开始之前写small = a[0]