编译是对的,运行出错了

目的是输入n个数,找出并打印最小值,并打印出最小值所在数组元素的位置。
#include <stdio.h>
#include <stdlib.h>
#define n 31

void input (int score []);
int function(int score[]);
int main()
{ int score [n];
input (score);
int pos = function(score) ;

printf("the position of the minimum is %d\n",pos);

return 0;

}
void input (int score [])
{ int i = -1;
do{
i++;
printf("input the score:\n");
scanf("%d",&score[i]);

 }while(score[i]>=0);

}
int function(int score[])
{ int min = score[0];
int i = 1;
do{
if(min >score[i])
{
min = score[i];
i++;
}
}while(score[i]!=0);
printf("%d\n",min);
return i;

}

img


#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#define n 31

void input(int score[]);
int function(int score[]);
int main()
{
    int score[n];
    input(score);
     function(score);

   
    return 0;
}
void input(int score[])
{
    int i = -1;
    do {
        i++;
        printf("input the score:\n");
        scanf("%d", &score[i]);

    } while (score[i] >= 0);
}
int function(int score[])
{
    int min = score[0];
    int i = 1;
    do {
        if (min > score[i])
        {
            min = score[i];
            i++;
        }
    } while (score[i] >=0);
    printf("%d\n", min);
    printf("the position of the minimum is %d\n", i);
    return 0;
}

int function(int score[]); 方法中的循环是个死循环,你可以先将倒数第四行的条件改为score[i]!=33,然后这样输入数据 66 55 44 33,这样结果不错

修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
#define n 31
void input(int score [],int *m);
int function(int score[],int m);
int main()
{
    int score[n],m = 0; //修改
    input(score, &m);//修改
    int pos = function(score,m); //修改
    printf("the position of the minimum is %d\n",pos);
    system("pause");
    return 0;
}
void input (int score [],int *m) //修改
{
    int i = -1;
    do{
       i++;
       printf("input the score:\n");
       scanf("%d",&score[i]);
    }while(score[i] > 0);
    *m = i;
}
int function(int score[],int m) //修改
{
    int min = score[0];
    int i = 0; //修改
    do{
        if(min >score[i]) //修改
            min = score[i];
        i++;              //修改
    }while (i < m);//while(score[i]!=0);//修改
    printf("%d\n",min);
    return i;
}

改一下吧,少给自己挖坑哦。

#include <stdio.h>
#include <stdlib.h>
#define n 31//数组长度
int count = 0;//当前元素个数
void input(int score[]);
int function(int score[]);
int main()
{
    int score[n];
    input(score);
    int pos = function(score);
    printf("the min  is %d\n", score[pos]);
    printf("the position of the minimum is %d\n", pos);
    return 0;
}
void input(int score[])
{
    int i = -1;
    do {
        i++;
        printf("input the score:\n");
        scanf_s("%d", &score[i]);
        count++;
    } while (score[i] >= 0&&count<n);//count<n,防止越界
    count--;//数组有效数据长度
}
int function(int score[])
{
    int min = score[0];
    int i = 1,j=0;//j存放最小值下标
    while (i<count)
    {
        if (min > score[i])
        {
            min = score[i];
            j = i;
        }
        i++;
    }
    //printf("%d\n", min);
    return j;
}