1. 给定两个整形变量的值,将两个值的内容进行交换。
2. 不允许创建临时变量,交换两个数的内容。
3.求10 个整数中最大值。
4.将三个数按从大到小输出。
5.求两个数的最大公约数。
#include<stdio.h>
#include<windows.h>
void exchange(int *num1,int *num2)
{//创建临时变量
//方法1
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
void exchange01(int *num1,int *num2)
{//不需要创建临时变量
//方法2
//*num1 ^= *num2;
//*num2 ^= *num1;
//*num1 ^= *num1;
方法3:缺点:可能会溢出
//*num1 += *num2;
//*num2 = *num1 - *num2;
//*num1 -= *num2;
//方法4(由方法3引出)
*num1 -= *num2;
*num2 += *num1;
*num1 = *num2 - *num1;
}
int findMax(int arr[], int len)
{
int max = arr[0];
int i = 1;
for(; i < len; i++)
{
if(arr[i] > max)
max = arr[i];
}
return max;
}
void sortThree()
{
//数组
/*int arr[] = {23,5,8};
int i = 0;
int j = 0;
for(; i < 3 ;i++)
{
if(arr[i + 1] > arr[i])
{
arr[i+1] = arr[i+1] ^ arr[i];
arr[i] = arr[i] ^ arr[i+1];
arr[i+1] = arr[i] ^ arr[i+1];
}
}
for(j = 0; j < 3; j++)
{
printf("%d\t",arr[j]);
}*/
//if条件逻辑
int a = 23;
int b = 5;
int c = 78;
if(a > b && a> c){
printf("1:%d\n",a);
if(b > c){
printf("2:%d\n",b);
printf("3:%d\n",c);
}else{
printf("2:%d\n",c);
printf("3:%d\n",b);
}
}
else if(b > c){
printf("1:%d\n",b);
if(a > c){
printf("2:%d\n",a);
printf("3:%d\n",c);
}else{
printf("2:%d\n",c);
printf("3:%d\n",a);
}
}else{
printf("1:%d\n",c);
if(a > b){
printf("2:%d\n",a);
printf("3:%d\n",b);
}else{
printf("2:%d\n",b);
printf("3:%d\n",a);
}
}
}
int greatestCommonDivisor()
{
int num1 = 0;
int num2 = 0;
int i = 0;
int min= 0;
scanf("%d%d",&num1,&num2);
min = num1 > num2 ? num2 : num1;
/*if(num1 > num2)
s = num2;
else
s = num1;*/
//方法1
//for(i = 2;i <= min; i++)
//{
// if(num1%i == 0 && num2%i == 0)
// break;
//}
方法2:公约数最大为二者之间小的数
//for(i = min; i >= 1; i--)
//{
// if(num1%i == 0 && num2%i == 0)
// break;
//}
//方法3
//原理:存在num1 == a*m; num2 == b*m; num1%num2 == a*m;
while(num1 * num2 != 0){
if(num1 > num2){
num1 %= num2;
}else{
num2 %= num1;
}
}
i = num1 == 0? num2 : num1;
return i;
//方法4
//原理:存在num1 == a*m; num2 == b*m; num1-num2 == c*m;
/*while(num1 != num2){
if(num1 > num2){
num1 -= num2;
}else{
num2 -= num1;
}
}
return num1;*/
}
int main()
{
//exchange(&num1,&num2);
/*int num1 = 10;
int num2 = 20;
exchange01(&num1,&num2);
printf("num1 = %d,num2 = %d\n",num1,num2);*/
/*int arr[] = {5,3,9,7,1,5,3,33,6,4};
int len = sizeof(arr)/sizeof(arr[0]);
printf("%d\n",findMax(arr, len));*/
//sortThree();
printf("%d\n",greatestCommonDivisor());
system("pause");
return 0;
}