您的位置:首页 > 其它

1.交换两个数;2.求最大值;3.最大公约数;4.快速排序

2017-10-03 13:38 260 查看
//1(1)创建新的变量交换两个数据的值
#include <stdio.h>
void swap2(int *x, int *y)
{
int s = 0;
s = *x;
*x = *y;
*y = s;
}
int main()
{
int a = 5, b = 9;
printf("交换前     a = %d b = %d\n", a, b);
int c = 0;
c = a;
a = b;
b = c;
printf("交换后     a = %d b = %d\n", a, b);
swap2(&a, &b);
printf("再次交换后 a = %d b = %d\n", a, b);
system("pause");
return 0;
}

//1(2)不创建临时变量交换两个数据的值
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void swap_2(int *x, int *y)
{
*x = *x - *y;
*y = *x + *y;
*x = *y - *x;
}
int main()
{
int a = 5, b = 9;
printf("交换前     a = %d b = %d", a, b);
a = a^b;
b = a^b;
a = a^b;
printf("\n交换后     a = %d b = %d", a, b);
swap_2(&a, &b);
printf("\n再次交换后 a = %d b = %d\n", a, b);
system("pause");
return 0;
}

//2.输出10个整数中的最大值
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//输出十个数中的最大值
int i, max = 0;
int a[10] = { 1, 2, 5, 8, 10, 5, 4, 6, 3, 9 };
for (i = 0; i<10; i++){
printf("%d  ", a[i]);
}
max = a[0];
for (i = 1; i<10; i++){
if (a[i]>max)
max = a[i];
}
printf("\n其中最大值是 max = %d\n", max);
system("pause");
return 0;
}

//3.求两个数的最大公约数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int cad(int *x, int *y)
{//采用辗转相减法求两数的最大公约数
while (*x % *y != 0)
{
if (*x > *y)
*x = *x - *y;
else *y = *y - *x;
}
return *y;
}
int cad_2(int *x, int *y)
{//采用辗相减法求两数的最大公约数
int z;
int min = *x > *y ? *y : *x;
while (z = *x % *y != 0)
{
*x = *y;
*y = *y % z;
}
return *y;
}
int main()
{//采用遍历法求两数的最大公约数
int a, b;
int i = 0, min = 0, c = 0;
printf("please inter two numbers:");
scanf("%d%d", &a, &b);
min = a > b ? b: a;
for (i = min; i > 0; i--)
{
if (a%i == 0 && b%i == 0)
break;
}
printf("\n遍历法  \t a和b的最大公约数是 %d \n", i);
c = cad(&a, &b);
printf("\n辗转相减法\t a和b的最大公约数是 %d \n", c);
c = cad_2(&a, &b);
printf("\n辗转相除法\t a和b的最大公约数是 %d \n", c);
system("pause");
return 0;
}


//4.快速排序
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void swap(int *x, int *y)
{
int c;
c = *x;
*x = *y;
*y = c;
}
void quick(int a[], int low, int high)
{
int i ,j, key;
key = a[low];
if(low<high){
i = low + 1;
j = high;
while (i < j){
if (a[i]>=key){
swap(&a[i], &a[j]);
j--;
}
else
i++;
}
if (a[i] >= key)
{
i--;
}
else
{
swap(&a[low], &a[i]);
j++;
}
quick(a, low, i);
quick(a, j, high);
}
}
void output(int a[])
{
int i;
for (i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int main()
{
int i, ex;
int a[10] = { 5, 4, 6, 3, 9, 1, 2, 5, 8, 0 };
printf("排序前的数据:\n");
output(a);
quick(a, 0, 9);
printf("排序后的数据:\n");
output(a);
system("pause");
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐