1个回答
展开全部
#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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询