kid_0203
2015-11-20 17:25
采纳率: 85.1%
浏览 3.0k
已采纳

c语言从键盘上输入10个数,找到最小数,输出与其相邻的数。

从键盘上输入10个数,找到最小数,输出与其相邻的数。

 #include<stdio.h>
void min(double a[10])
{int i,index;
double min=a[0];
for(i=0;i<10;i++)
if(min<a[0]){min=a[i];
index=i;}
printf("%f &f",a[index-1],a[index+1]);
}
void main()            
{double a[10];
for(int i=0;i<10;i++)
scanf("%lf",&a[i]);
min(a);    
}

为啥无法输出结果?
main.c:8:Bounds error: attempt to reference an illegal pointer.
main.c:8: Pointer value: 0xbef8ed98

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • havedream_one 2015-11-20 23:58
    已采纳
     #include<stdio.h>
    void min(double *a)
    {
    
        int i;
        //注意这里index赋初值
        int index = 0;
        double min = a[0];
        for(i=0;i<10;i++)
            if(min<a[0]){
                min=a[i];
                index=i;
            }
        //判断边界
        if(index == 0){
            printf("%lf",a[index+1]);
        }else if(index == 9){
            printf("%lf",a[index-1]);
        }else{
            printf("%lf %lf",a[index-1],a[index+1]);
        }
    }
    void main()            
    {
        double a[10];
        int i ;
        for(i=0;i<10;i++)
            scanf("%lf",&a[i]);
    
        min(a);    
    }
    
    打赏 评论
  • Kulyn 2015-11-20 17:41

    printf写的有问题吧,还有就是要分情况考虑吧

    打赏 评论
  • 远方的飞猪 2015-11-21 01:47

    #include
    using namespace std;
    int main()
    {
    int t;
    cout<<"test number:"< cin>>t;
    while(t--)
    {
    int num[10],min=0,lmin=0,rmin=0,index=0;
    for(int i=0;i cin>>num[i];
    min=num[0];
    for(int i=1;i {
    if(min>num[i])
    {min=num[i];
    index=i;}
    }
    if(min==num[0])
    cout< if(min==num[9])
    cout if(index>=1&&index<9)
    cout<<num[index-1]<<" "<<num[index]<<" "<<num[index+1]<<endl;
    }
    return 0;
    }

    打赏 评论

相关推荐 更多相似问题