利用数组处理批量数据
从键盘输入一组数(10个),找出最大数和最小数,并把最大数和第0个数交换,最小数和最后一个数交换
2回答
-
Yexiaomo
#include <stdio.h>
#define N 10 //这里默认数组大小为 10, 现改为其他 也可以
typedef int ElemType; //因为你没说是什么类型的数, 我这里用的是 int 类型, 并将它重命名为 ElemType
int main(){
int i;
int max = 0, min = 0; //max记录最大数的下标, min记录最小数的下标
ElemType nums[N], temp; //temp 作为交换变量
for(i = 0; i < N; ++i){
scanf("%d",&nums[i]);
/*在输入数据时就开始比较并找出最大值最小值的小标*/
if(nums[i] > nums[max])
max = i;
else if(nums[i] < nums[min])
min = i;
}
/* 交换 数值 */
temp = nums[max];
nums[max] = nums[0];
nums[0] = temp;
temp = nums[min];
nums[min] = nums[0];
nums[0] = temp;
for(i = 0; i < N; ++i){
printf("%d ",nums[i]);
}
return 0;
}交换数值 那一部分, 本来想写一个交换值的函数,想想 你可能还没学 指针, 所以就没有写, 就在主函数中 写了两边 交换很不爽, 程序很简单, 应该能看得懂, 看不懂了, 下边回复-------------------------啦啦~~Imcainiao
-
这都不会
#include <stdio.h>
int main() {
int num[10], i, temp, max, min, maxId, minId;
//输入
for(i = 0; i < 10; i++) {
scanf("%d", &num[i]);
}
max = min = num[0];
maxId = minId = 0;
//循环,查找最大最小值,并确定他们在数组里的下标
for(i = 0; i < 10; i++) {
if(num[i] > max) {
max = num[i];
maxId = i;
}
if(num[i] < min) {
min = num[i];
minId = i;
}
}
//交换
temp = num[0], num[0] = num[maxId], num[maxId] = temp;
temp = num[9], num[9] = num[minId], num[minId] = temp;
for(i = 0; i < 10; i++) {
printf("%d ", num[i]);
}
return 0;
}