实验五 数组
一、实验目的
- 掌握一维数组和二维数组的定义、赋值和输入输出方法。
- 掌握与数组有关的算法。
二、实验内容
1、编写程序,查找数组中的最大元素和最小元素。
#include<stdio.h>
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)
min=a[x];
}
printf("%d\n%d",max,min);
return 0;
}
2、有15个整数按升序排列,现输入一个数,请写程序,用拆半查找法判断该数在序列中是否存在,若存在则指出是第几个。
#include <stdio.h>
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;
}
3、寻找一个整型二维数组的“鞍点”,所谓“鞍点”就是这样一个元素,该元素在所在行中值是最小,在所在列中值是最大。如果存在,则输出“鞍点”所在的行、列及其“鞍点”的值。
#include<stdio.h>
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;
}