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;
}