C语言输出一维数组中最小的正整数元素及其下标。若最小值的正整数有多个,请输出下标最大的一个,如果没有找到,输出-1。
时间: 2024-05-06 21:20:37 浏览: 10
以下是一个示例代码:
```c
#include <stdio.h>
int main()
{
int a[] = {3, -2, 6, 0, 5, 1, 2};
int n = sizeof(a) / sizeof(a[0]);
int min = -1, index = -1;
for (int i = 0; i < n; i++) {
if (a[i] > 0 && (min == -1 || a[i] < min || (a[i] == min && i > index))) {
min = a[i];
index = i;
}
}
if (min == -1) {
printf("没有找到正整数元素\n");
} else {
printf("最小的正整数元素为 %d,下标为 %d\n", min, index);
}
return 0;
}
```
解释:
1. 定义一个一维数组a,同时计算数组的长度n;
2. 定义min和index变量,分别表示最小的正整数元素和其下标,初始值都为-1;
3. 使用循环遍历数组a,对于每个正整数元素,判断其是否小于当前的最小值min,或者是否等于当前的最小值min但下标更大index,如果是,则更新min和index;
4. 最后根据min的值是否为-1来判断是否找到了最小的正整数元素,如果找到了则输出其值和下标,否则输出提示信息。
相关问题
求一维数组a中的最大元素及其下标,用C语言表示
可以使用如下的代码来求解一维数组a中的最大元素及其下标:
```c
#include <stdio.h>
int main() {
int a[] = {1, 3, 5, 7, 2, 4, 6, 8};
int max = a[0];
int index = 0;
for (int i = 1; i < sizeof(a) / sizeof(int); i++) {
if (a[i] > max) {
max = a[i];
index = i;
}
}
printf("最大元素为:%d,下标为:%d\n", max, index);
return 0;
}
```
其中,我们使用一个循环遍历一维数组a中的所有元素,记录最大元素以及对应的下标。最后输出最大元素和下标即可。
c语言定义一个一维数组,输入元素值,输出数组中最大的元素,输出最小元素的下标
好的,我可以帮你解决这个问题。
以下是定义一维数组、输入元素值、输出数组中最大元素和输出最小元素下标的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100 // 数组最大长度
int main() {
int arr[MAX_SIZE], n, i, max, min, min_index;
printf("请输入数组长度(不超过 %d): ", MAX_SIZE);
scanf("%d", &n);
printf("请输入数组元素: ");
for (i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
// 求最大值
max = arr[0];
for (i = 1; i < n; ++i) {
if (arr[i] > max) {
max = arr[i];
}
}
printf("最大元素为 %d\n", max);
// 求最小值及其下标
min = arr[0];
min_index = 0;
for (i = 1; i < n; ++i) {
if (arr[i] < min) {
min = arr[i];
min_index = i;
}
}
printf("最小元素为 %d, 下标为 %d\n", min, min_index);
return 0;
}
```
代码中使用了一个 `MAX_SIZE` 的常量,用于限制数组的最大长度。你可以根据实际需要修改该常量的值。
在这段代码中,首先要求用户输入数组长度 `n`,然后根据长度输入数组元素。接下来,分别使用两个循环求出数组中的最大值和最小值及其下标,并将其输出。
希望能帮到你!