一,数组求最大值
关于数组求最大值的方法很多,本贴使用的是循环遍历的方法求得;
首先设定数组arr[0]元素为最大值max,并将其与其他数组元素进行比较,若是下一元素比
max的值大,则将该数字的值赋给max,以此类推,求得最大值
具体看代码
#include<stdio.h>
int main()
{
int arr[] = { 0,1,2,3,4,5,6,17,8,9 };
int num=0;
int max=arr[0];
int size;
size= sizeof(arr) /sizeof(int);
for (num=0;num <= size; num++)
{
if (arr[num] > max)
{
max = arr[num];
}
else
{
continue;
}
}
printf("%d", max);
return 0;
}
二,数组排序
例:将三个数按从大到小输出。
这个题我使用的最普通的if语句的嵌套使用,若是各位看客有更好的方法,希望可以分享一下
谢谢各位大佬啦!
下面是我写的:
#include<stdio.h>
int main()
{
int num1 = 20;
int num2 = 30;
int num3 = 40;
if (num1 > num2) //判断num1>num2
{
if (num2 > num3) //num2>num3
{
printf("%d %d %d", num1, num2, num3);
}
else //num3>num2,那么num3>num1?
{
if (num3 > num1)
{
printf("%d %d %d", num3, num1, num2);
}
else
{
printf("%d %d %d", num1, num3, num2);
}
}
}
else //num2>num1
{
if (num1 > num3)
{
printf("%d %d %d", num2, num1, num3);
}
else
{
if (num3 > num2)
{
printf("%d %d %d", num3, num2, num1);
}
else
{
printf("%d %d %d", num2, num3, num1);
}
}
}
}
三,求两个数的最大公约数。本解法使用辗转相除法
第一步:首先确定两个数num1与num2的大小关系
第二步:将大的数与小的数进行取余操作,本例使用180与135
1. 将两数进行取余180%135=45
2.而后用135%45=0;
此时我们就可得知45即为180与135的最大公约数
代码如下
#include<stdio.h>
int common(int num1, int num2)
{
int num3=0;
if (num1 > num2)
{
num3 = num1 % num2;
while (num3!=0)
{
num3 = num1 % num2;
num1 = num2;
num2 = num3;
}
return num1;
}
else
{
num3 = num2 % num1;
while (num3 != 0)
{
num3 = num2 % num1;
num2 = num1;
num1 = num3;
}
return num2;
}
}
int main()
{
int num1, num2;
printf("请输入两个数\n");
scanf("%d%d", &num1, &num2);
printf("%d", common(num1, num2));
return 0;
}
当然这也只是方法之一,其他方法参考公约数(一个能被若干个整数同时均整除的整数)_百度百科 (baidu.com)yhttps://baike.baidu.com/item/%E5%85%AC%E7%BA%A6%E6%95%B0/1063409?fromModule=search-result_lemma
希望大佬们可以交流交流!