第一种方法:if else 判断
提示:最普通的比大小的方法,简单直接
#include <stdio.h>
int main()
{
double n1, n2, n3;
printf("请输入三个数,以空格分隔: ");
scanf("%lf %lf %lf", &n1, &n2, &n3);
if( n1>=n2 && n1>=n3 )
printf("%.2f 是最大数。", n1);
if( n2>=n1 && n2>=n3 )
printf("%.2f 是最大数。", n2);
if( n3>=n1 && n3>=n2 )
printf("%.2f 是最大数。", n3);
return 0;
}
第二种方法:三目运算符;?
提示:三目运算木本质上是if else 判断语句的变种
#include <stdio.h>
int main()
{
int n1, n2, n3, max;
printf("请输入三个数,用空格分割: ");
scanf("%d %d %d", &n1, &n2, &n3);
max = n1 > n2 ? ( n1 > n3 ? n1 : n3) : ( n2> n3? n2: n3);
printf("最大值是:%d", max);
return 0;
}
”:? “可以看作带有返回参数的函数,组合规律是,n1n2 n1n3 n2n3
第三种方法::?的宏定义
#include <stdio.h>
#define MAX(n1,n2,n3) (n1 > n2 ? ( n1 > n3 ? n1 : n3) : ( n2> n3? n2: n3))
int main()
{
int n1, n2, n3, max;
printf("请输入三个数,用空格分割: ");
scanf("%d %d %d", &n1, &n2, &n3);
max = MAX(n1,n2,n3);
printf("最大值是:%d", max);
return 0;
}
宏定义仅仅是预编译阶段进行代码块的替换,不做语法检查,常用于固定常量的定义
第四种种方法:排序
代码(1)
#include <stdio.h>
#include <stdlib.h>
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
int main()
{
int *arr =NULL,len,i,*p=NULL;
printf("请问准备输入几个数字:\n");
scanf("%d",&len);
arr=(int *)calloc(len,sizeof(int));
printf("请输入数字:中间已空格做区分\n");
p=arr;
for(i=0;i<len;i++)
scanf("%d",arr++);
bubble_sort(p, len);
printf("%d ", *(p+len-1));
return 0;
}
代码(2)
同上面排序方法仅仅是申请内存的方式不同
#include <stdio.h>
#include <stdlib.h>
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
int main()
{
int len,i,*p=NULL;
printf("请问准备输入几个数字:\n");
scanf("%d",&len);
int arr[len];
printf("请输入数字:中间已空格做区分\n");
for(i=0;i<len;i++)
scanf("%d",arr[i]);
bubble_sort(arr, len);
printf("%d ", *(arr+len-1));
return 0;
}