C语言中的一些最大,最小问题
- 抛砖引玉
- 任意输入3个数,求最小者
#include<stdio.h>
int main()
{
float a, b, c, min;
printf("任意输入3个值:");
scanf("%f%f%f", &a, &b, &c);
min = a;
if(b < a && b < c) min = b;
else if(c < b && c < a) min = c;
printf("最小值=%f", min);
return 0;
}
写一个函数求n个数中的最小值
用一个中间变量m与每一个值比较即可,小则替换。
#include<stdio.h>
#define N 100
int main()
{
float min(float a[], int n);
//n为要求数据的数量
int n, i;
float a[N];
printf("please input n\n");
scanf("%d", &n);
printf("please input n numbers:");
for(i = 0; i < n; i++){
scanf("%f", &a[i]);
}
printf("min=%.2f\n", min(a, n));
return 0;
}
float min(float a[], int n){
int i;
float m;
m = a[0];
for(i = 1; i < n; i++){
if(m > a[i]) m = a[i];
}
return m;
}
- 下面这个代码很蠢,莫要学习,反面教材
- 输入10个值,打印输出最大数
#include<stdio.h>
int main(){
printf("任意输入10个值");
float n1, n2, n3, n4, n5, n6, n7, n8, n9, n0,t;
scanf("%f% f% f% f% f% f% f% f% f% f%", &n1,& n2,& n3,& n4,& n5,& n6,& n7,& n8,& n9,& n0);
t = n1;
if(t < n2) t = n2;
else if (t <= n3)t = n3;
else if (t <= n4)t = n4;
else if (t <= n5)t = n5;
else if (t <= n6)t = n6;
else if (t <= n7)t = n7;
else if (t <= n8)t = n8;
else if (t <= n9)t = n9;
else if (t <= n0)t = n0;
printf("最大值是%f",t);
return 0;
}
给定N个整数,查找这N个数中的最大数
给定N个整数,查找这N个数中的最大数:
1、输入:输入数据多组,每组2行,第一行为M(1<=M<=1000),第二行有M个整数。
2、输出:输出每组数据的最大值。
#include<iostream>
using namespace std;
int main(){
while(1){ //可以输入无限组数据
int M;
cin>>M;
int n[M];
for(int i = 0; i < M; i++){
cin>>n[i];
if(n[0] < n[i]){ //n[0]存储最大值
n[0] = n[i];
}
}
cout<<n[0]<<endl;
}
return 0;
}
其实,定义的数组是可以不需要的
#include<iostream>
using namespace std;
int main(){
while(1){
int M;
cin>>M;
int x,max;
cin>>max; //把输入的第一个值放到max中
for(int i = 1; i < M; i++){
cin>>x;
if(max < x){ //只要出现更大的值,即覆盖到max中
max = x;
}
}
cout<<max<<endl;
}
return 0;
}
提升
- 输入8个整数,最大数与第一个数交换,最小数与末尾数交换
#include<stdio.h>
int main()
{
float a[8], t, *max, *min;
int i;
for(i = 0; i < 8; i++)
scanf("%f", &a[i]);
max = a;
for(i = 1; i < 8; i++)
if(a[i] > *max) max = &a[i];
if(max != a){
t = a[0];
a[0] = *max;
*max = t;
}
min=a+7;
for(i = 0; i < 7; i++)
if(a[i] < *min) min = &a[i];
if(min != a+7){
t = a[7];
a[7] = *min;
*min = t;
}
//输出
for(i = 0; i < 8; i++)
printf("%10.4f", a[i]);
return 0;
}