题目:编写程序,从键盘输人 10个整数,之间以一个空格隔开,存放在一维数组中。找出值最大和最小的元素,第一行输出最大值及其所在的元素下标,之间以一个空格隔开;第二行输出最小值及其所在的元素下标,之间以一个空格隔开。
思路分析:定义一个max和一个min变量,先将其arr[0]的值赋给它们,再让max,min分别和数组中其他元素比较,将比max大的值,比min小的值分别赋给max和min。定义index和index1用来保存max和min的在数组内的下标。注意不能用冒泡排序的思路分析,会导致下标不正确。
实现:
#include<stdio.h>
int main() {
int max,min,index,index1;
int arr[10];
for(int i = 0;i < 10;i++){
scanf_s("%d", &arr[i]);
}
max = arr[0];
min = arr[0];
for (int i = 0; i < 9; i++) {
if (arr[i + 1] > max){
max = arr[i + 1];
index = i + 1;
}
if (arr[i + 1] < min) {
min = arr[i + 1];
index1 = i + 1;
}
}
printf("该数组中最大值为%d,其下标为%d,最小值为%d,其下标为%d", max, index, min, index1);
}
运行结果:
1
3
5
7
9
2
4
6
8
0
该数组中最大值为9,其下标为4,最小值为0,其下标为9