写一个函数求n个数中的最小值;给定N个整数,查找这N个数中的最大数(C)

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;
}
发布了150 篇原创文章 · 获赞 267 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Zhangguohao666/article/details/88969690
今日推荐