一维数组 编程输入n(3<n<=10)个正整数,输出这n个数中的最小值及其下标

若有多个元素的值皆为最小值,则输出下标最小者。... 若有多个元素的值皆为最小值,则输出下标最小者。 展开
 我来答
oolgloo
2013-10-30 · TA获得超过2636个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:665万
展开全部
#include <stdio.h>
#include <stdlib.h>
int main()
{
    // 输入数组
    int n = 0;
    printf("请输入数组个数(3~10): ");
    scanf("%d", &n);
    int *arr = (int *)malloc(n * sizeof(int));
    printf("请输入各个元素(正整数): ");
    for (int i=0; i<n; i++) {
        scanf("%d", &arr[i]);
    }
    
    // 核心算法
    int k = 0;
    int m = __INT_MAX__; //最大整数
    for (int i=n-1; i>=0; i--) { //下标递减,保证最后的数下标一定最小
        if (arr[i] <= m) {
            m = arr[i]; //保存更小的值
            k = i;
        }
    }
    // 输出
    printf("最小值为:%d,下标:%d\n", m, k);
    return 0;
}
追问
可是,题目输入刚开始并不让你输有多少个数    这该怎么办
追答

题目给了条件输入正整数,那么可以一直输入,用0来判断结束。

    // 这里替代上面的输入数组部分
    int arr[10];
    printf("请输入数组元素(3-10个,空格分隔,以0结束):\n");
    int x = -1;
    int n = 0;
    while (1) {
        if (n > 10) {
            printf("错误:输入超过10个数!\n");
            return 1;
        }
        scanf("%d", &x);
        if (x == 0) {
            break;
        }
        arr[n] = x;
        n++;
    }

Input Sample:1 2 3 0

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式