头歌作业
1.输入10个互不相同的整数并保存在数组中,找到该最大元素并删除它,输出删除后的数组。
这题不难,只是做个摘录。
#include <stdio.h>
int main()
{
int arr[10];
int i,a;
for(i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
int max=0;
for(i=0;i<10;i++)
{
if(arr[i]>max)
{
max=arr[i];
a=i;
}
}
for(i=a;i<9;i++)
{
arr[i]=arr[i+1];
}
for(i=0;i<9;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
2.鞍点
找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10
#include <stdio.h>
int main()
{
int arr[100][10];
int m,n;
scanf("%d %d",&m,&n);
int i,j;
int arr1[100];//存储每行的最大值
int arr2[100];//存储每列的最小值
int arr3[100];//存储每行的最大值的行值
int arr4[100];//存储每列的最小值的列值
int a=0,b=0,c=0,d=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<m;i++)
{
int max=arr[i][0];//重置max
for(j=0;j<n;j++)
{
if(arr[i][j]>max)
{
max=arr[i][j];
}
}
arr1[a++]=max;
arr3[c++]=i;
}
for(j=0;j<n;j++)
{
int min=arr[0][j];//重置min
for(i=0;i<m;i++)
{
if(arr[i][j]<min)
{
min=arr[i][j];
}
}
arr2[b++]=min;
arr4[d++]=j;
}
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
if(arr1[i]==arr2[j])
{
printf("Array[%d][%d]=%d",arr3[i],arr4[j],arr1[i]);
}
}
}
return 0;
}
3.二分查找
注意:只针对有序数组。
每次更新mid的值,排除一半的数
#include <stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
int arr[100000];
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
int left=0;//左下标
int right=n-1;//右下标
int m;//待查找数字
int mid=0;//中间值
int find=0;//用于判断
scanf("%d",&m);
while(left<=right)
{
mid=(left+right)/2;
if(arr[mid]>m)
{
right=mid-1;
}
else if(arr[mid]<m)
{
left=mid+1;
}
else
{
find=1;
break;
}
}
if(1==find)
printf("%d",mid+1);
else
printf("None");
return 0;
}
4.排序
使用冒泡排序
#include <stdio.h>
int main()
{
int arr[10];
for ( int i = 0; i <= 9; i++)
{
scanf("%d", &arr[i]);
}
for (int k = 0; k < 9; k++)
{
for (int j = 0; j < 9; j++)
{
if (arr[j] < arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for(int x = 0; x <10; x++)
{
printf("%d ", arr[x]);
}
return 0;
}
9万+

被折叠的 条评论
为什么被折叠?



