C语言学习Day21
2020-12-01 23:08
981 查看
今天主要学习了数组的算法:
#include<stdio.h> #include<stdlib.h> #include<time.h> //求斐波拉兹数列 void Fibonacci() { int arr[20] = { 1, 1 }; for (int i = 2; i < 20; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } for (int i = 0; i < 20; i++) { if (0 == i % 5) { printf("\n"); } printf("%d\t", arr[i]); } printf("\n"); } //冒泡排序 void MaoPao() { int arr[10]; //随机数种子 srand((unsigned)time(NULL)); //随机输入 for (int i = 0; i < 10; i++) { //随机分配10个数到数组中 arr[i] = rand() % 100; } //排序 int mark = 10, flag = 0; for (int i = 0; i < --mark;) { int x = 0; for (int j = 0; j < mark; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } x++; } printf("%d\t", x); flag++; } printf("%d\n", flag); //输出 for (int i = 0; i < 10; i++) { if (0 == i % 5) { printf("\n"); } printf("%d\t", arr[i]); } printf("\n"); } //二维数组行列互换函数 void TwoArray1() { int arr1[2][3] = { {1,2,3},{4,5,6} }; int arr2[3][2] = { 0 }; //二维数组行 for (int i = 0; i < 2; i++) { //二位数组列 for (int j = 0; j < 3; j++) { arr2[j][i] = arr1[i][j]; } } //输出二维数组 for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++) { printf("%d\t", arr2[i][j]); } printf("\n"); } } //找出二维数组中最大的那个数和他的行列 void TwoArray2() { int arr[3][4] = {0}; //随机赋值 srand((unsigned)time(NULL)); for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { arr[i][j] = rand() % 100; } } //求最大值 int max = arr[0][0],row,col; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { if (arr[i][j] > max) { max = arr[i][j]; row = i + 1;//用于保存最大值行 col = j + 1;//用于保存最大值列 } } } //输出二维数组 for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++) { printf("%d\t", arr[i][j]); } printf("\n"); } printf("最大值为:>%d\n其坐标为:>(%d,%d)", max, row, col); } //输出某一行和某一列,其余位置空白 void TwoArray3() { int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} }; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i == 1 || j == 1) { printf("%-5d", arr[i][j]); } else { printf("%-5c",' '); } } printf("\n"); } } //二分法查找 void Half() { int arr[10] = { 1,2,3,76,345,887,34,67 }; int left = 0, right = 9, mid; ////随机赋值 //srand((unsigned)time(NULL)); //for (int i = 0; i < 10; i++) //{ // arr[i] = rand() % 100; //} //用插入排序 for (int i = 1; i < 10; i++) { int key = arr[i]; int j = i - 1; while ((j >= 0) && (arr[j] > key)) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } for (int i = 0; i < 10; i++) { printf("%d\t", arr[i]); } printf("\n"); //折半查找 while (left < right) { mid = (left + right) / 2; if (3 == arr[mid]) { printf("3的位置为:>%d\n", mid); break; } else if (3 > arr[mid]) { right = mid; } else { left = mid; } } } int main() { #if(0) Fibonacci();//调用斐波拉兹函数 MaoPao();//调用冒泡排序 TwoArray1();//调用二维数组行列互换函数 TwoArray2();//找出二维数组中最大的那个数和他的行列 TwoArray3();//输出某一行和某一列,其余位置空白 #endif Half();//二分法查找 return 0; }
相关文章推荐
- 学习编程,为什么98%的程序员都会从C语言开始?C语言这么强?
- C语言学习笔记(1)main函数返回值问题
- 分享下自己学习C语言的方法和心得!
- C语言学习自记录14
- c语言学习过程第一天
- C语言学习笔记(四)——函数(重点)
- 值得学习的C语言开源项目
- 我为什么要学习C语言???
- [C语言学习]作业六
- C语言学习笔记(七)
- C语言成长学习题(十五)
- 【学习ios之路:C语言】结构体应用
- 对初学者的建议:如何学习C语言
- 学习c语言,必看的几本经典书
- 值得学习的C语言开源项目
- c语言学习心得
- C语言学习过程中遇到值得注意的题目
- 学习笔记(05):4.5.数组&字符串&结构体&共用体&枚举-C语言专题第5部分-4.5.4.程序中内存从哪里来4...
- C语言学习内容总结2017/10/28
- C语言学习笔记