1、一维数组排序
一维数组使用冒泡排序方法进行排序,代码如下,
#include<stdio.h> int main(void) { int a[10]; printf("请输入10个整数:\n"); for(int i = 0; i < 10; i ++) scanf("%d", &a[i]); for(int i = 0; i < 10; i ++) for(int j = i + 1; j < 10; j ++) { if(a[i] < a[j]) { int pre = a[i]; a[i] = a[j]; a[j] = pre; } } for(int i = 0; i < 10; i ++) printf("%d ", a[i]); return 0; }
2、计算二维数组中元素的最大值及其所在的行列下标值
循环遍历查找二维数组中的最大值,及所有在行和列的下标,代码如下,
#include <stdio.h> int main() { int i,j,row=0,colum=0,max; int a[3][4]= { { 1,2,3,4 } , { 9,8,7,6 } , { -10,10,5,2 } } ; max=a[0][0]; for (i=0;i<=2;i++) for (j=0;j<=3;j++) if(a[i][j]>max) { max=a[i][j]; row=i; colum=j; } printf("%d,%d,%d\n",max,row,colum); return 0; }
3、数组二分法查找
二分法查找适用于数据量较大时,但是数据需要先排好顺序。代码如下,
#include<stdio.h> int main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; //定义初始数组 int i,key,index1,index2,mid; //key:准备查找的值;index1:最小下标;index2:最大下标;mid:中间值下标 printf("请输入要查找的整数:\n"); scanf("%d",&key); for(index1=0,index2=9;index1<=index2;){ //通过for循环进行查找, mid=(index1+index2)/2; if(key==a[mid]){ printf("索引位置:%d",mid); //若是找到key的话,直接break结束循环 break; }else if(key<a[mid]){ index2=mid-1; //当mid的值大于key时,将mid-1的值赋值给index2 }else { index1=mid+1; //当mid的值小于key时,将mid+1的值赋值给index1 } }if(index1>index2)printf("not found"); }
4、计算数组中最大值和最小值
循环遍历找出数组中的最大值和最小值。代码如下,
#include <stdio.h> // 获取数组元素的最大值和最小值 int main(void){ int arr[] = {1,2,4,5,17,8,19,33}; int min=1,max=0; for(int i=0;i<sizeof(arr)/sizeof(int);i++){ if (min>arr[i]){ min = arr[i]; } if (max<arr[i]){ max = arr[i]; } } printf("result: min = %d , max = %d \n",min,max); return 0; }
5、杨辉三角
杨辉三角是二项式系数在三角形中的一种几何排列,使用C语言输出杨辉三角,代码如下,
#include<stdio.h> int a[10][10]; int main() { int num = 1; for(int i = 0; i < 10; i ++) a[i][0] = 1; for(int i = 1; i < 10; i ++) { for(int j = 1; j < 10; j ++) { if(j == num) { num ++; a[i][j] = 1; break; } a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; } } num = 1; for(int i = 0; i < 10; i ++) { for(int j = 0; j < 10; j ++) { if(j == num) { num ++; break; } if(j == num - 1) printf("%d", a[i][j]); else printf("%d ", a[i][j]); } printf("\n"); } return 0; }