求一批数中最大值和最小值的积
题目
编写代码,求一批数中最大值和最小值的积。
思路
1.“一批数”:scanf()输入一组十个数存到数组a[]。
2.“最大值”(“最小值”):依次比较,找出最大数max(最小数min)。
3.“积”:直接相乘得到乘积product。
代码
#include <stdio.h>
#define N 10
main()
{
int a[N],max,min,product;
for(int i=0;i<N;i++) scanf("%d",&a[i]);
min = max =a[0];
for (int i = 0; i < N; i++)
{
if (a[i] > max) max = a[i];
}
for (int i = 0; i < N; i++)
{
if (a[i] < min) min = a[i];
}
product = max * min;
printf("这批数中最大值:%d\n", max);
printf("这批数中最小值:%d\n", min);
printf("这批数中最大值和最小值的积:%d\n",product);
}
写的过程想到的问题
1.用别的方法找出最大值和最小值呢?
冒泡排序或者选择排序得到递增或递减数组,max和min直接是第一个和最后一个。
#include <stdio.h>
#define N 10
main()
{
int a[N], max, min, product;
for(int i=0;i<N;i++) scanf("%d",&a[i]);
min = max =a[0];
// 结合冒泡排序,升序
for (int i = 0; i < N-1 ; i++)
{
for (int j = 0; j < N -1- i; j++)
{
if (a[j] > a[j + 1])
{
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
max = a[N - 1];
min = a[0];
product = max * min;
printf("这批数中最大值:%d\n", max);
printf("这批数中最小值:%d\n", min);
printf("这批数中最大值和最小值的积:%d\n", product);
}
#include <stdio.h>
#define N 10
main()
{
int a[N], max, min, product;
for(int i=0;i<N;i++) scanf("%d",&a[i]);
min = max =a[0];
// 结合选择排序,升序
for (int i = 0; i < N ; i++)
{
int min = i;
for (int j = i+1; j < N; j++)
{
if (a[j] < a[min])
{
min = j;
}
}
int temp = a[min];
a[min] = a[i];
a[i] = temp;
}
max = a[N - 1];
min = a[0];
product = max * min;
printf("这批数中最大值:%d\n", max);
printf("这批数中最小值:%d\n", min);
printf("这批数中最大值和最小值的积:%d\n", product);
}