C语言程序设计实验报告之数组

实验五 数组

一、实验目的

  1. 掌握一维数组和二维数组的定义、赋值和输入输出方法。
  2. 掌握与数组有关的算法。

二、实验内容

1、编写程序,查找数组中的最大元素和最小元素。

#include

int main()

{

  int a[10];

  for(int i=0;i<10;i++)

  {

      scanf("%d",&a[i]);

  }

  int max=a[0],min=a[0];

  for(int j=1;j<10;j++)

  {

      if(a[j]>max)

         max=a[j];

  }

      for(int x=1;x<10;x++)

  {

      if(a[x]

         min=a[x];

  }

printf("%d\n%d",max,min);

return 0;

}

C语言程序设计实验报告之数组_第1张图片

2、有15个整数按升序排列,现输入一个数,请写程序,用拆半查找法判断该数在序列中是否存在,若存在则指出是第几个。

#include

int binarySearch(int arr[], int n, int x)

{

    int left = 0;

    int right = n - 1;

   

    while (left <= right)

    {

        int mid = left + (right - left) / 2;

       

        if (arr[mid] == x)

        {

            return mid;

        }

        else if (arr[mid] < x)

        {

            left = mid + 1;

        }

        else

        {

            right = mid - 1;

        }

    }

   

    return -1;

}

int main()

{

    int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29};

    int n = sizeof(arr) / sizeof(arr[0]);

    int x;

   

    printf("Enter a number to search: ");

    scanf("%d", &x);

   

    int index = binarySearch(arr, n, x);

   

    if (index == -1)

    {

        printf("The number %d is not in the array.\n", x);

    }

    else

    {

        printf("The number %d is at position %d in the array.\n", x, index + 1);

    }

   

    return 0;

}

C语言程序设计实验报告之数组_第2张图片

3、寻找一个整型二维数组的“鞍点”,所谓“鞍点”就是这样一个元素,该元素在所在行中值是最小,在所在列中值是最大。如果存在,则输出“鞍点”所在的行、列及其“鞍点”的值。

#include

int main()

{

    int a[4][4];

    int row, col;

    int saddlePoint = 0;

   

    for(int x=0;x<4;x++)

    {

        for(int y=0;y<4;y++)

            scanf("%d",&a[x][y]);

    }

   

    for(int i=0;i<4;i++)

    {

        int minInRow = a[i][0];

        col = 0;

       

        // 找出当前行的最小值及其所在列

        for(int j=1;j<4;j++)

        {

            if(a[i][j] < minInRow)

            {

                minInRow = a[i][j];

                col = j;

            }

        }

       

        // 检查该列是否为最大值

        int maxInCol = a[0][col];

        for(int z=1;z<4;z++)

        {

            if(a[z][col] > maxInCol)

            {

                maxInCol = a[z][col];

            }

        }

       

        // 如果当前行的最小值等于该列的最大值,则找到鞍点

        if(minInRow == maxInCol)

        {

            saddlePoint = 1;

            row = i;

            break;

        }

    }

   

    if(saddlePoint)

    {

        printf("Saddle point found at row %d, column %d: %d\n", row+1, col+1, a[row][col]);

    }

    else

    {

        printf("No saddle point found.\n");

    }

   

    return 0;

}

C语言程序设计实验报告之数组_第3张图片


 

你可能感兴趣的:(c语言,算法,数据结构)