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; }
相关文章推荐
- 常用排序算法(快速排序,冒泡排序,最大公约数,Fibonacci )【原创】
- 【C】辗转相除法求两个数的最大公约数,利用位运算交换两个数无须中间变量
- 1.交换两值内容 2.不创建临时变量交换两值内容 3.求十个数中的最大值 4.将三个数由大到小输出 5.求两个数最大公约数
- 1.将数组A中的内容和数组B中的内容进行交换。(数组一样大) 2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。 3.将三个数按从大到小输出。 4.求两个数的最大公约数。
- 求十个数中的 最大值,将三个数排序输出,求两个数的最大公约数
- 第十二周项目三——递归求两个数的最大公约数
- 数组 获取最值(最大值 最小值)选择排序 冒泡排序 快速排序 半查找(二分查找) 十进制转其他进制法
- 递归函数 求两个数的最大公约数
- 求两个数最大公约数 并简单解析system(pause)和getchar()的区别
- 求两个数的最大公约数 C语言
- 求两个数的最大公约数
- 第4周项目1—求两个数的最大公约数
- 两个数的最大公约数
- 六、内部排序综合(九种)—插入类排序(直接插入、折半插入、希尔排序);交换类排序(冒泡、快速);选择类排序(简单选择、堆排序);二路归并排序;基数排序
- 求两个数的最大公约数
- Python自定义函数实现求两个数最大公约数、最小公倍数示例
- 交换排序:快速排序 学习
- 交换排序之——冒泡排序、快速排序
- 飛飛(十二) 求两个数的最大公约数。
- 算法学习之求两个数的最大公约数